画面のさまざまなポイントで同じテクスチャの三角形をレンダリングする必要があります。10 回以上レンダリングすると、パフォーマンスが大幅に低下することに気付きます。描画する前に、同じテクスチャ三角形を何度もレンダリングするにはどうすればよいですか。
成功しない描画の前に頂点配列に新しいジオメトリを追加しようとしています。歩幅の値が正しくないと思います:
これは頂点とテクスチャ座標です。2 つのテクスチャ付きの正方形を描画するためにトレイを作成しているので、配列内のデータを複製するだけです。
DrawArray で 4 を 8 に変更します。最初の正方形は問題ないようですが、2 番目の正方形は明らかに良くありません 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);
}