Re: [程式] 如何用OpenGL切割圖片?
看板GameDesign (遊戲設計)作者littleshan (我要加入劍道社!)時間18年前 (2007/02/20 18:16)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/6 (看更多)
※ 引述《zergaiur (aiur)》之銘言:
: 1.
: 讀進一張圖,圖片有該人物的所有資訊的小圖
: 比方說主角的 上下左右,走路,攻擊
: 然後切割出我想要使用的部份,而且不會浪費Show圖的時間
: 比方一個會達成目的,但是很浪費資源的寫法~
: 讀入一張圖後
: glBegin(GL_POLYGON);
: glTexCoord2f(left/(float)image.W, 1.0f-top/(float)image.H);
: glVertex2f((GLfloat)x, (GLfloat)y);
: glTexCoord2f(right/(float)image.W,1.0f-top/(float)image.H);
: glVertex2f((GLfloat)x+right-left, (GLfloat)y);
: glTexCoord2f(right/(float)image.W,1.0f-bottom/(float)image.H);
: glVertex2f((GLfloat)x+right-left, (GLfloat)y+bottom-top);
: glTexCoord2f(left/(float)image.W, 1.0f-bottom/(float)image.H);
: glVertex2f((GLfloat)x, (GLfloat)y+bottom-top);
: glEnd();
: 這是利用glTexCoord來切割圖片....但是每Show一張小圖片,它所花的時間
: 就是Show整張太圖片的時間~
不是吧
把這張小圖畫出來的時間大致由以下幾個因素決定:
1. 小圖在螢幕上的面積
2. 你使用的 texture filter
3. 繪圖硬體的能力 (texture unit 的數量與速度)
和整張 texture 的大小並沒有很明顯的關係
用 texture coordinate 來切圖是很有效也很常見的做法
不過你這樣的寫法的確還有進步空間
那就是每張小圖的 texture coordinate 都是固定的
所以你沒必要每次 render 時都重新計算一次
而且使用 glBegin() / glEnd() 畫東西的效率極差
用 vertex array 會比較快,或是 vbo
: 2.
: 有兩張圖片, A 跟 B
: 我要把 A 切割成1000條, B 也是一樣
: 然後 A 取單數條, B 取雙數條
: 然後把 A 的單數跟 B 的雙數條再並成一張圖片
: 不知道哪位大大有這方面的經驗或是寫法可以提供參考
: 謝謝 @@
這很簡單吧
如果你希望用顯示卡加速
我想到的方法是用 multi-texture
或是寫 shader 也可以輕鬆解決
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.54.89
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
10
38