我正在嘗試在OpenGL ES 2.0中爲Android遊戲製作2D地圖(對於遊戲,請考慮平鋪的世界地圖)。基本上,有幾種貼圖類型具有不同的紋理,並且貼圖是從這些類型隨機生成的,因此從遊戲到遊戲地圖會發生變化,但在單個遊戲期間它會保持不變。如何在OpenGL中紋理具有多個紋理的矩形
我的第一個想法是先生成一個大的紋理/圖像/位圖(獨立於OpenGL),然後將重複的瓷磚紋理拼接在一起以製作較大的地圖,然後將這個單一紋理用於一個大型地圖矩形。從理論上講,我認爲這很簡單並且可以正常工作,但我擔心它對於較大的地圖無法很好地擴展,特別是在移動設備上,我會用如此大的圖像映射耗盡內存。此外,還有一小塊瓷磚一遍又一遍地被複制,所以看起來像是一個巨大的浪費,一次又一次地複製大紋理中的像素數據。
我的第二個想法是有很多紋理,每個瓷磚紋理一個。但我不知道這將如何工作,紋理綁定明智,我是否需要着色器包含多個紋理引用,並在着色器內有使用正確的邏輯?
最後,我認爲使用紋理圖集可以工作,有一個紋理/圖像與其中的所有瓷磚數據,這將是相對較小的。但我正在努力想象如何讓數學計算出來,使地圖矩形的「瓦片」或子部分使用完全不同的紋理座標。
我接近這個錯誤的方式嗎?我應該爲每個瓷磚使用一個矩形嗎?至少通過這種方式,我可以獨立地爲每個圖塊傳遞着色器的頂點和紋理座標。這似乎更容易,但也似乎錯了,因爲地圖實際上只是一個不會改變的矩形。