作者StubbornLin (Victor)
看板GameDesign
標題Re: [程式] OpenGL 用3D Render 2D
時間Sun Jun 25 17:01:30 2006
※ 引述《StubbornLin (Victor)》之銘言:
: ※ 引述《StubbornLin (Victor)》之銘言:
: : 圖片:
: : http://www.kinmen.info/vic/image/opengl_2d_engine.jpg
: : 程式:
: : http://www.kinmen.info/vic/files/opengl_2d_engine.zip
: : 做差不多了,用3D來Render 2D真的輕鬆太多了
: : 想起我以前用Direct Draw一個一個Pixel去做Alpha blending真的會吐血
: : 現在只要輕鬆打幾行程式它的Alpha blending就出來了
: : 而且,又有Linear可以用,在放大縮小時效果還是很棒
: : 不過用Linear有個缺點,就是圖的邊緣如果很複雜,放大縮小時會有白邊出現
: : 但是,因為以圖通常四週都是整個全透明或半透明來思考的話
: : 其實這樣的問題沒什麼大礙
: : 等我把這個東西完成後,有空的話我來寫幾篇OpenGL 3D 擬 2D經驗的文章
: : 好來拋磚引玉,讓真正的高手出來寫文章,不然這個版都沒有什麼人氣
: 我剛剛用我的NB試了一下= ="
: 果然是這樣....
: NB用的是顯示晶片,我在想
: 可能是某種功能顯示晶片不支援才會這樣
我發現原因了
原因出在兩張圖的長寬都不是2的次方
改成2的次方後就OK了
較舊的顯示卡或晶片好像都不支援非2次方的貼圖= ="
這是為什麼?
還有,因為舊顯示卡的使用者還是很多
所以為了能夠讓更多的使用者也能夠玩
必需修改成能讓舊的晶片也能跑
因此要修改這引擎= ="
請問應該用什麼方案來解決呢?
我目前想到的方案,是將非2次方的圖片
切割成幾張2次方的圖片,然後在材質貼圖時組合起來
不知道有沒有更好的方式可以提出來
除了貼圖的問題,我還發現在舊晶片有種問題
那就是,GL_QUADS的四個點的顏色
當圖片的最上邊,超過畫面時,圖片會變暗
不知道為什麼會這樣= ="
然後當我改成兩張三角形去拼出一個矩形時這個問題好像就不見了
還有一個問題也很令我頭痛,就是撕裂的問題
因為Windows為了要全螢幕所以是自己建立的
而更新畫面放在WinMain的回圈裡,更新時如果沒有跟垂直同步那一刻進行
就會產生撕裂,因為以前硬體都幫我處理好= ="
所以我不知道要怎樣解決,誰來告訴我該怎麼做 囧rz
看來= ="
要把2D引擎寫成舊硬體也能跑還有得奮戰 囧rz
--
VICTOR工作室 |
PTT遊戲設計版隆重開幕!
|
不管是新手老手,程式美工音樂企劃....
URL :
http://www.kinmen.info/vic/ |
都歡迎來遊戲設計版參與討論 XD
|
戰略高手>
C/C++ |
GameTopics>
Visual Basic 6.0 |
GameDesign
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.66.105
→ hexen2:直接用繪圖軟體改成2的次方就好了XD 06/25 17:54
→ StubbornLin:= =|| 這樣是可以沒錯啦... 但.... 06/25 19:04
→ StubbornLin:檔案的大小 和記憶體的空間 都平白地犧牲了 囧rz 06/25 19:04
推 barroslee:反正 千萬不要用切割圖片那方法 轉換貼圖很浪費效能 06/25 19:29
推 StubbornLin:那要用什麼方法? 囧rz 06/25 19:32
推 barroslee:能用 Non-Power-of-Two 就用,不能就直接改圖 06/25 19:35
推 StubbornLin:可是要怎樣知道有沒有Non-Power-of-Two = = 06/25 19:38
→ StubbornLin:還有 改圖該怎麼改? 讀圖的時候補足power of 2嗎? 06/25 19:40
推 barroslee:glGetString(GL_EXTENSIONS); 06/25 19:42
→ barroslee:改圖是說:一樓毀滅巫師大大說的那樣 06/25 19:43
推 StubbornLin:囧rz.... 真的沒路可走了嗎? 可憐的空間... 06/25 19:47