看板 C_and_CPP 關於我們 聯絡資訊
各位網友好,想請教關於用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
VictorTom:關於texture的寬高, 要能使用非2的冪次的texture, 必須 02/23 09:18
VictorTom:要平台支援 GL_ARB_texture_non_power_of_two 這個 02/23 09:18
VictorTom:extension才行, 所以你得先query/parse平台的 extension 02/23 09:19
VictorTom:string, 才知道程式執行的平台上能否使用這種texture. 02/23 09:19
VictorTom:然後, 什麼叫貼某些維度的texture"程式會爆"? 你實驗的 02/23 09:20
VictorTom:"不行"又是怎樣不行?? 建議描述清楚問題的症狀, 如果可 02/23 09:21
VictorTom:以, 用置底的網頁把code貼上來更好:) 02/23 09:21
VictorTom:另外, 有些texture format有寬高的對齊限制, 只是看你的 02/23 09:29
VictorTom:圖如果都是當24bppRGB送應該是還好, 不是的話可能還得寫 02/23 09:30
VictorTom:出texture的source format是什麼....@_@" 02/23 09:30
bbbbbbjeff:謝謝樓上,我晚一點來補充 02/23 09:35
Bencrie:NV Geforce 6系列以後都有支援 NPOT,不過有些晶片用 POT 02/23 13:54
Bencrie:效能會比 NPOT 好很多。 02/23 13:54
Bencrie:如果你貼圖有偏移現象的話,請用 glPixelStorei 去調對齊 02/23 13:59
bbbbbbjeff:原來是只要6系列後都能非2的冪次方貼圖 ! 02/23 15:01
bbbbbbjeff:所以說跟使用的OpenGL SDK版本跟本無關?目前用1.1 02/23 15:02
VictorTom:正確的說是, 你要看你執行程式的平台上支援到OpenGL的哪 02/23 23:41
VictorTom:個版本或哪些extension feature, 你才能使用那些功能; 02/23 23:41
VictorTom:source這邊比較有影響的是你得抓到夠新的gl.h/glext.h可 02/23 23:42
VictorTom:能才會有夠新的feature相關的定義. 02/23 23:42