如何在OpenGL中将纹理合并到一个正方形中心?

时间:2018-02-07 12:19:03

标签: java android opengl-es

我需要将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();
}

我得到的结果:enter image description here

1 个答案:

答案 0 :(得分:0)

当你纹理化时,我们需要设置OpenGL。用于设置每个三角形的图像的一部分。这是通过UV坐标完成的。