我是OpenGL-ES 2.0的新手,尝试解析.obj文件并在Android上绘图。
我已成功使用.obj文件中的解析数据绘制一个简单的多维数据集
the 'v' (vertex coords)
and the first values of 'f' line (v index)
但下一步,我需要绘制' Texture'使用.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);
我认为,只有' Vertex指数'参数可以在glDrawElements API上使用。 如何将glDrawElements与“顶点指数”一起使用'和'纹理指数'?
答案 0 :(得分:-1)
您无法在GLES20.glDrawElements中使用纹理索引。
GLES20.glDrawElements无法绘制具有多个纹理的元素,它将始终使用“当前纹理”
您可以将当前纹理绑定设置为普遍创建的纹理。
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureID); //Next call of glDrawElements will use this texture
最好按纹理ID对顶点进行排序,并为每个纹理ID执行一次GLES20.glDrawElements调用