看板 GameDesign 關於我們 聯絡資訊
※ 引述《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