作者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
→ NDark: 很難證實.我也可以亂猜是版子根本沒實做這個線路. 12/13 22:06
→ NDark: tex怎麼宣告的可以加進這篇嗎? 12/13 22:07
→ ycjcsie:GL_TEXTURE_3D 是NPOT嗎 12/13 22:08
→ Bencrie:是的,就是那顆牙齒 XD ; unsigned char* tex; 12/13 22:28
推 NDark: short 跟 char 大小不同.影響你的結果嗎? 12/13 22:39
→ Bencrie:資料本身是unsigned short,只是被當成char丟到TexImage 12/13 22:42
→ Bencrie:如果texture剛好是POT,那結果就會對 orz 12/13 22:43
推 NDark:第三參數我建議不要這樣下 0rz.tw/355hj 照這篇依你需求來改 12/13 22:50
→ Bencrie:嗯嗯,感謝 我試看看 XD 12/13 22:58