[問題] 關於OpenGL貼圖的問題

看板C_and_CPP (C/C++)作者 (雲伴風 風隨雲)時間13年前 (2011/02/23 08:32), 編輯推噓3(3017)
留言20則, 3人參與, 最新討論串1/2 (看更多)
各位網友好,想請教關於用OpenGL貼圖的問題, 目前用VC++ 2010的Windows Form專案寫了一個程式,需要貼 很多張圖,目前遇到的問題是所貼的圖其寬高在某些維度程式會爆 ,某些維度不會??? 看超級手冊第2版第8章貼圖的部分有提 到寬高必須是2的冪次方,但我發現只要顯示卡是nVidia的晶 片不用2的冪次方也可以貼,而且每張貼圖大小可以不同,例如 下面兩張擷圖: 1 http://homepage8.seed.net.tw/web@5/bbbbbb/TemporaryShare/Texture1.jpg
2 http://homepage8.seed.net.tw/web@5/bbbbbb/TemporaryShare/Texture2.jpg
在第1張擷圖內共貼3張圖,第1張貼圖的寬高是1000*600, 第2張貼圖的寬高是3000*2000 在第2張擷圖內,是第1張擷圖沿著y軸轉180度,可以看到第3張貼圖, 第3張貼圖的寬高是1920*1200 也就是說,3張貼圖的寬高完全不是2的冪次方也可以貼,只要顯示卡是 nVidia的晶片就ok。(在Intel的顯示卡上就完全不行,變成空白一片) 現在我的問題是,3000*2000都可以貼了,若小很多的應該沒問題才是 ,但我試了以下幾種寬高,有的可以有的不行?? 999*1000 ==>不行 ??? 1000*1000 ==>可以 537*590 ==>可以 199x203 ==>可以 1999x2003 ==>不行 ??? 我有以 glGetIntegerv(GL_MAX_TEXTURE_SIZE, &MaxTextureSize); 去測試我的卡可以顯示的最大維是:8192,所以不能貼應該不是太大 才對... 請問是否有網友知道問題在哪?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.84.36

02/23 09:18, , 1F
關於texture的寬高, 要能使用非2的冪次的texture, 必須
02/23 09:18, 1F

02/23 09:18, , 2F
要平台支援 GL_ARB_texture_non_power_of_two 這個
02/23 09:18, 2F

02/23 09:19, , 3F
extension才行, 所以你得先query/parse平台的 extension
02/23 09:19, 3F

02/23 09:19, , 4F
string, 才知道程式執行的平台上能否使用這種texture.
02/23 09:19, 4F

02/23 09:20, , 5F
然後, 什麼叫貼某些維度的texture"程式會爆"? 你實驗的
02/23 09:20, 5F

02/23 09:21, , 6F
"不行"又是怎樣不行?? 建議描述清楚問題的症狀, 如果可
02/23 09:21, 6F

02/23 09:21, , 7F
以, 用置底的網頁把code貼上來更好:)
02/23 09:21, 7F

02/23 09:29, , 8F
另外, 有些texture format有寬高的對齊限制, 只是看你的
02/23 09:29, 8F

02/23 09:30, , 9F
圖如果都是當24bppRGB送應該是還好, 不是的話可能還得寫
02/23 09:30, 9F

02/23 09:30, , 10F
出texture的source format是什麼....@_@"
02/23 09:30, 10F

02/23 09:35, , 11F
謝謝樓上,我晚一點來補充
02/23 09:35, 11F

02/23 13:54, , 12F
NV Geforce 6系列以後都有支援 NPOT,不過有些晶片用 POT
02/23 13:54, 12F

02/23 13:54, , 13F
效能會比 NPOT 好很多。
02/23 13:54, 13F

02/23 13:59, , 14F
如果你貼圖有偏移現象的話,請用 glPixelStorei 去調對齊
02/23 13:59, 14F

02/23 15:01, , 15F
原來是只要6系列後都能非2的冪次方貼圖 !
02/23 15:01, 15F

02/23 15:02, , 16F
所以說跟使用的OpenGL SDK版本跟本無關?目前用1.1
02/23 15:02, 16F

02/23 23:41, , 17F
正確的說是, 你要看你執行程式的平台上支援到OpenGL的哪
02/23 23:41, 17F

02/23 23:41, , 18F
個版本或哪些extension feature, 你才能使用那些功能;
02/23 23:41, 18F

02/23 23:42, , 19F
source這邊比較有影響的是你得抓到夠新的gl.h/glext.h可
02/23 23:42, 19F

02/23 23:42, , 20F
能才會有夠新的feature相關的定義.
02/23 23:42, 20F
文章代碼(AID): #1DP5Mhi1 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DP5Mhi1 (C_and_CPP)