OpenGL png图片 纹理贴图,去除png图片黑边

将png图片作为纹理贴图,在图片周围会产生黑边,在网上查了一下,都没有明确指出解决方法!废话不说了,看代码。

1.初始化

 

protected void init(GL10 gl) {
    // Setup background color
    gl.glClearColor(1, 1, 1, 1);
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

    glEnable(GL_DEPTH_TEST);
    glEnable(GL10.GL_ALPHA_TEST);  // Enable Alpha Testing (To Make BlackTansparent)

    glAlphaFunc(GL10.GL_GREATER,0.1f);  // Set Alpha Testing (To Make Black Transparent)

    // Setup project matrix
    gl.glMatrixMode(GL10.GL_PROJECTION);
    gl.glLoadIdentity();
    GLU.gluOrtho2D(gl, 0.0f,1.3f,0.0f,1.0f);
    gl.glEnable(GL10.GL_TEXTURE_2D);
    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texBuff);
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

    tex = loadTexture(gl, bmp);

    // Smooth shading

    gl.glShadeModel(GL10.GL_SMOOTH);
}


2.加载纹理贴图

 

protected static int loadTexture(GL10 gl, Bitmap bmp, boolean reverseRGB) {
        int[] textures = new int[1];
        glGenTextures(1, textures, 0);
        int mTextureID = textures[0];
        glBindTexture(GL_TEXTURE_2D, mTextureID);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST);

        glTexParameterf(GL_TEXTURE_2D,
                GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
                GL_CLAMP_TO_EDGE);

        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
                GL_CLAMP_TO_EDGE);
        glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
                GL_REPLACE);
        GLUtils.texImage2D(GL_TEXTURE_2D, 0, bmp, 0);

        bmp.recycle();
        
        return mTextureID;
}


 

3.效果图

OpenGL png图片 纹理贴图,去除png图片黑边_第1张图片

 

你可能感兴趣的:(filter,float,Blend,Matrix,testing,textures)