作者Bencrie ()
看板GameDesign
标题Re: [请益] OpenGL NPOT 与 GL_LUMINANCE
时间Sat Dec 13 21:51:19 2008
※ 引述《Bencrie ()》之铭言:
: OpenGL从2.0版开始将NPOT (Non-Power-Of-Two) 维度的texture纳入核心功能。
: 不管是1D、2D、3D、还是Cube map都可以不受 POT 限制,这可以省下一些多余的
: 记忆体消耗。
: 我想向板友们请教的是,NPOT的使用是否有限制pixel format ?
: 我遇的的情况是在pixel format为GL_RGBA的时候,glTexImage3D正常工作,
: 图也能正常的画出来。但是若pixel format为GL_LUMINANCE的话,整个volume画
: 出来会有偏移的现象。
: 看起来就像是glTexImage3D的x,y,z维度给错一样,GL会存取超出 x*y*z的范围
: (x*y*z为NPOT),Volume的底部会有不正常的东西被画出来。然而,当x*y*z为
: POT时 Volume的绘制又变成正确无误。
: 我用NVIDIA的6200 & 8800 在两个OS平台上测试过,不管Linux还是Windows都有这样的
: 问题存在。
: 不知道有没有哪位板友可以提供一些线索,感谢各位 >///<
glTexImage3D(GL_TEXTURE_3D,0,1,dim[0],dim[1],dim[2],0,GL_LUMINANCE \
,GL_UNSIGNED_SHORT,tex);
glTexParameteri(GL_TEXTURE_3D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_3D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
刚刚实验了一下,我把 103*94*161 unsigned short 牙齿的 CT 资料
重新rescale到128*128*256 他就work了 ... 囧rz
这个算是 NVIDIA OpenGL ICD的bug吗 ˊˋ
--
Coding 日志 & Linux 使用心得
Rinoworks Blog
http://rinoworks.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.197.32
1F:→ NDark: 很难证实.我也可以乱猜是版子根本没实做这个线路. 12/13 22:06
2F:→ NDark: tex怎麽宣告的可以加进这篇吗? 12/13 22:07
3F:→ ycjcsie:GL_TEXTURE_3D 是NPOT吗 12/13 22:08
4F:→ Bencrie:是的,就是那颗牙齿 XD ; unsigned char* tex; 12/13 22:28
5F:推 NDark: short 跟 char 大小不同.影响你的结果吗? 12/13 22:39
6F:→ Bencrie:资料本身是unsigned short,只是被当成char丢到TexImage 12/13 22:42
7F:→ Bencrie:如果texture刚好是POT,那结果就会对 orz 12/13 22:43
8F:推 NDark:第三参数我建议不要这样下 0rz.tw/355hj 照这篇依你需求来改 12/13 22:50
9F:→ Bencrie:嗯嗯,感谢 我试看看 XD 12/13 22:58