我必须在屏幕的不同点渲染相同的纹理三角形。当渲染超过 10 次时,我注意到性能受到很大影响。我怎么能在绘制之前多次渲染相同的纹理三角形。
我试图在绘制之前将新几何图形添加到顶点数组,但没有成功。我认为步幅值不对:
这是顶点和纹理坐标。我准备画 2 个带纹理的正方形,所以我只是复制数组中的数据。
在 DrawArray 中,我将 4 更改为 8。第一个方块似乎还可以,第二个肯定不好 GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP , 0, 8);
private float[] mVertexData2 =
{
-0.3f, -0.3f, 0.0f, // V1 - bottom left
-0.3f, 0.3f, 0.0f, // V2 - top left
0.3f, -0.3f, 0.0f, // V3 - bottom right
0.3f, 0.3f, 0.0f // V4 - top right
//Seconde square
-1f, -1f, 0.0f, // V1 - bottom left
-1f, 1f, 0.0f, // V2 - top left
1f, -1f, 0.0f, // V3 - bottom right
1f, 1f, 0.0f // V4 - top right
};
private float[] mTextureData2 =
{
0.0f, 1.0f, // top left (V2)
0.0f, 0.0f, // bottom left (V1)
1.0f, 1.0f, // top right (V4)
1.0f, 0.0f, // bottom right (V3)
//Texture for seconde square
0.0f, 1.0f, // top left (V2)
0.0f, 0.0f, // bottom left (V1)
1.0f, 1.0f, // top right (V4)
1.0f, 0.0f, // bottom right (V3)
};
public void draw()
{
// Load the vertex position
mVertices.position(0);
GLES20.glVertexAttribPointer ( mSpritePositionLoc, 3, GLES20.GL_FLOAT,
false,
0, mVertices );
// Load the texture coordinate
mTexVertices.position(0);
GLES20.glVertexAttribPointer ( mSpriteTexCoordLoc, 2, GLES20.GL_FLOAT,
false,
0,
mTexVertices );
GLES20.glEnableVertexAttribArray ( mSpritePositionLoc );
//GLES20.glEnableVertexAttribArray ( mSpriteTexCoordLoc );
GLES20.glActiveTexture ( GLES20.GL_TEXTURE0 );
GLES20.glBindTexture ( GLES20.GL_TEXTURE_2D, mSpriteTextureId);
// Set the base map sampler to texture unit to 1
GLES20.glUniform1i ( mSpriteTextureIdLoc, 1 );
//GLES20.glDrawElements ( GLES20.GL_TRIANGLES, 6, GLES20.GL_UNSIGNED_SHORT, mIndices );
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP , 0, 8);
}