270,320のような画面座標を設定してテクスチャを移動したい。現在、テクスチャ設定のopengl座標(0から1)を次のようにレンダリングしています。
private final float[] mVerticesData =
{
-1f, 1f, 0.0f, // Position 0
0.0f, 1.0f, // TexCoord 0
-1f, -1f, 0.0f, // Position 1
0.0f, 0.0f, // TexCoord 1
1f, -1f, 0.0f, // Position 2
1.0f, 0.0f, // TexCoord 2
1f, 1f, 0.0f, // Position 3
1.0f, 1.0f // TexCoord 3
};
mVertices = ByteBuffer.allocateDirect(mVerticesData.length * 4)
.order(ByteOrder.nativeOrder()).asFloatBuffer();
mVertices.put(mVerticesData).position(0);
次のコードでレンダリングします。マトリックスなどを設定していません...
// Set the viewport
GLES20.glViewport(0, 0, SimpleTexture2D.screenSize.x, finalHeight);
//GLES20.glViewport(0, 0, mWidth, mHeight);
// Clear the color buffer
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
if(useProgram2 == true)
// Use the program object
GLES20.glUseProgram(mProgramObject2);
else
GLES20.glUseProgram(currentFilter.mProgramObject);
// Load the vertex position
mVertices.position(0);
GLES20.glVertexAttribPointer ( mPositionLoc, 3, GLES20.GL_FLOAT,
false,
5 * 4, mVertices );
// Load the texture coordinate
mVertices.position(3);
GLES20.glVertexAttribPointer ( mTexCoordLoc, 2, GLES20.GL_FLOAT,
false,
5 * 4,
mVertices );
// Load the texture coordinate
// mVertices.position(3);
// GLES20.glVertexAttribPointer ( mTexCoordLoc2, 2, GLES20.GL_FLOAT,
// false,
// 5 * 4,
// mVertices );
GLES20.glEnableVertexAttribArray ( mPositionLoc );
GLES20.glEnableVertexAttribArray ( mTexCoordLoc );
// Bind the texture
//GLES20.glActiveTexture ( GLES20.GL_TEXTURE0 );
//if(drawOld == true)
GLES20.glActiveTexture ( GLES20.GL_TEXTURE0 );
GLES20.glBindTexture ( GLES20.GL_TEXTURE_2D, mTextureId);
GLES20.glUniform1i ( mTextureIdLoc, 0 );
currentFilter.onDrawFrame();
// Set the color matrix uniform unit to 1
GLES20.glDrawElements ( GLES20.GL_TRIANGLES, 6, GLES20.GL_UNSIGNED_SHORT, mIndices );
ヘルプ