第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

繪制多個對象時,什么時候創(chuàng)建新的頂點數(shù)組對象?

繪制多個對象時,什么時候創(chuàng)建新的頂點數(shù)組對象?

慕斯王 2023-05-25 16:05:18
我正在嘗試使用 WebGL 創(chuàng)建游戲。我目前有三種紋理,一種是字體字母,一種是角色精靈表,另一種是世界地圖。所以我有一些大紋理,我需要多次繪制其中的一小部分。做這個的最好方式是什么?我目前的方法是為每個字母、地圖上的正方形、角色姿勢等使用一個 VAO……所以我會有 150 多個 VAO。我認為 VAO 很好,因為它們既簡單又快速,但是this、this和其他讓人覺得這不是最好的選擇。例如,我知道的另一種方法是只有三個 VAO,并更改 WebGL 在緩沖區(qū)中開始讀取的位置以獲得正確字母的位置。因此,我不會使用數(shù)百個帶有微型陣列的 VAO,而是使用三個帶有大型陣列的 VAO。如果這是正確的方法,我是否必須在每次繪制內容時都在 gl.enablevertexAttribArray() 之后調用 gl.vertexAttribPointer() ,還是只修改 gl.drawArrays() 中的計數(shù)參數(shù)?gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS ) 是 16 或 32,所以切碎紋理似乎也不是一個好方法。最好的概念方法是什么?
查看完整描述

1 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

有多少 VAO 由您決定。有很多權衡。就文本而言,最常見的文本方式是將字形放入紋理圖集中,并生成一個緩沖區(qū),其中包含要繪制的所有字母的頂點。


換句話說。


each frame

? ?for each string

? ? ? for each letter in string

? ? ? ? ?add vertices for letter to buffer


drawArray/drawElements(gl.TRIANGLES, ... totalOfAllLettersInAllStrings * 6);

因此,所有字母(如 UI)可能只有一次繪制調用。每個字母沒有一個。那將是放慢速度的方式。


就繪制文本而言,對于簡單的情況,通常每種字體樣式只需要一個紋理。雖然如果你想支持所有的 unicode 而不是僅僅支持 ASCII,它會很快變得復雜。


查看完整回答
反對 回復 2023-05-25
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號