2017-06-21 113 views
0

我是OpenGL-ES 2.0中的新手,嘗試解析.obj文件並在Android上繪製。GLES20解析obj文件和頂點,紋理索引

而且我已經成功從obj文件

the 'v' (vertex coords) 
and the first values of 'f' line (v index) 

但下一步繪製解析的數據的簡單的立方體,我需要繪製「紋理」與.OBJ數據,我發現有「紋理指數」和我不知道我該如何使用這個‘紋理索引’與我的代碼

GLES20.glVertexAttribPointer(mPositionHandle, 3, GLES20.GL_FLOAT, false, VSTRIDE, vertexCoords); 
GLES20.glEnableVertexAttribArray(mPositionHandle); 

GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false, TSTRIDE, textureCoords); 
GLES20.glEnableVertexAttribArray(maTextureHandle); 

... 

GLES20.glDrawElements(GLES20.GL_TRIANGLES, indexLength, GLES20.GL_UNSIGNED_SHORT, vertexIndices); 

我認爲,只有‘頂點索引’參數可以在glDrawElements API使用。 如何將「Vertex Indices」和「Texture Indices」用於glDrawElements?

回答

-1

您不能在GLES20.glDrawElements中使用紋理索引。

GLES20.glDrawElements不能與多重紋理繪製元素,它將永諾使用「當前紋理」

您可以設置當前紋理結合previosusly創建質感。 GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureID); //Next call of glDrawElements will use this texture

這是一個好主意,由紋理ID訂購頂點和執行一個GLES20.glDrawElements呼籲每個紋理ID

+0

謝謝您relpy JULITO。所以我應該多次調用glDrawElement? – pokoso

+0

是的。但越少越好,因爲你可能會遇到性能問題。 – julito30

+0

OpenGL ES在一個繪製調用中支持多個紋理就好 - 您只需將它們綁定到不同的紋理單元。不要*繪製每層一個紋理繪製多次,這在移動GPU上非常昂貴,而幾何圖形是一個巨大的帶寬成本。 – solidpixel