Re: [請益] OpenGL NPOT 與 GL_LUMINANCE

看板GameDesign (遊戲設計)作者時間16年前 (2008/12/13 21:51), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《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

12/13 22:06, , 1F
很難證實.我也可以亂猜是版子根本沒實做這個線路.
12/13 22:06, 1F

12/13 22:07, , 2F
tex怎麼宣告的可以加進這篇嗎?
12/13 22:07, 2F

12/13 22:08, , 3F
GL_TEXTURE_3D 是NPOT嗎
12/13 22:08, 3F

12/13 22:28, , 4F
是的,就是那顆牙齒 XD ; unsigned char* tex;
12/13 22:28, 4F

12/13 22:39, , 5F
short 跟 char 大小不同.影響你的結果嗎?
12/13 22:39, 5F

12/13 22:42, , 6F
資料本身是unsigned short,只是被當成char丟到TexImage
12/13 22:42, 6F

12/13 22:43, , 7F
如果texture剛好是POT,那結果就會對 orz
12/13 22:43, 7F

12/13 22:50, , 8F
第三參數我建議不要這樣下 0rz.tw/355hj 照這篇依你需求來改
12/13 22:50, 8F

12/13 22:58, , 9F
嗯嗯,感謝 我試看看 XD
12/13 22:58, 9F
文章代碼(AID): #19GxtRF4 (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #19GxtRF4 (GameDesign)