2012-09-19 189 views
1

我打算在Javascript中編寫一個簡單的2D平臺變形器,其中每個框架將繪製不同的(紋理)瓷磚。這裏是我的問題:Opengl ES紋理渲染概念

  • 如何渲染不同紋理的矩形/四邊形?我的意思是我要爲岩石磚和草地磚編寫單獨的片段着色器,並且是否將每種類型的磚的頂點數據保存在單獨的緩衝區中?我想把所有的瓦片頂點數據放在一個緩衝區中,但是如何指定這個瓦片是必須獲得草紋理的草地瓦片?

  • 當我將它們綁定到紋理單元時,我的紋理有多大?

回答

0

我建議您最大的紋理是1024 x 1024的最大兼容性。 1024對於XBOX 360和PS3來說已經足夠了,應該對你來說已經足夠了:)。

另外,我建議你在一次渲染中渲染整個關卡,並且只使用一個紋理。我沒有看到那個麻煩。無論這個質地是否有水,岩石和鳥類,它都應該工作。

+0

感謝您的反饋意見。 OK從2個答案,它是有意義的只是加載一個巨大的紋理和索引與頂點紋理座標。 – cobus

1

如何呈現不同紋理的不同矩形/四邊形?

你有兩個選擇:

  1. 創建各種瓦(grassTex和rockTex),例如紋理。然後,在繪製場景時,在繪製特定類型的所有圖塊(例如,

    glBindTexture(..., grassTex); 
    drawAllGrasstiles(); 
    glBindTexture(..., rockTex); 
    drawAllRocktiles(); 
    
  2. 使用了所謂的「精靈表」,在其中你包在網格中所有不同的紋理到一個更大的質感。所以你可能有一個紋理,其中紋理的左半部分是草,右半部分紋理是岩石。然後,您可以在同一批次中將所有的草地和岩石瓦片繪製在一起,並使用紋理座標來區分繪製紋理的哪一部分。現在,而不是所有的紋理座標從0到1的瓷磚,草的0到0.5,岩石的0.5到1.0。

能有多大我的紋理是,當我將它們綁定到一個紋理單元?

這是依賴於實現的。用GL_MAX_TEXTURE_SIZE調用glGet來查詢實現限制。

+0

非常感謝您的反饋。我想我會選擇精靈表的想法,有意義避免太多的「綁定」調用。 – cobus