Re: [程式] 如何用OpenGL切割圖片?

看板GameDesign (遊戲設計)作者 (我要加入劍道社!)時間18年前 (2007/02/20 18:16), 編輯推噓0(000)
留言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
文章代碼(AID): #15sigKBg (GameDesign)
文章代碼(AID): #15sigKBg (GameDesign)