我需要将png图像放入正方形并将其居中,但我无法弄清楚如何做到这一点 我初始化了正方形的顶点字节缓冲区,并使用相同的纹理坐标(vertexBuffer)。
这是我的java类的一部分:
private int textures[] = new int[1];
float color[] = { 0.63671875f, 0.76953125f, 0.22265625f, 0.0f };
static final int COORDS_PER_VERTEX = 3;
public void draw_texture(GL10 gl) {
gl.glBindTexture(GL10.GL_TEXTURE_2D,textures[0]);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glColor4f( // set color:
color[0], color[1],
color[2], color[3]);
gl.glTexCoordPointer(COORDS_PER_VERTEX,GL10.GL_FLOAT,0,vertexBuffer);
gl.glVertexPointer( // point to vertex data:
COORDS_PER_VERTEX,
GL10.GL_FLOAT, 0, vertexBuffer);
gl.glDrawArrays( // draw shape:
GL10.GL_TRIANGLES, 0,
triangleCoords.length / COORDS_PER_VERTEX);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glDeleteTextures(1, textures, 0);
}
public void loadGLTexture(GL10 gl, Context context) {
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.closest);
gl.glGenTextures(1, textures, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GLES32.GL_CLAMP_TO_BORDER);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GLES32.GL_CLAMP_TO_BORDER);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
gl.glTexEnvf( GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE );
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
}
答案 0 :(得分:0)
当你纹理化时,我们需要设置OpenGL。用于设置每个三角形的图像的一部分。这是通过UV坐标完成的。