opengl中的纹理坐标2

时间:2015-04-20 12:23:15

标签: opengl-es-2.0

我在opengl 1中有一个带有不同精灵的png文件。我选择了以下图片:

  

// png尺寸为512x512

     

gl.glMatrixMode(GL10.GL_TEXTURE);

     

// x和y是所选图纸的坐标

     

gl.glTranslatef(x / 512f,y / 512f,0);

     

// w和h是宽度和

     

所选图纸的高度

     

gl.glScalef(w / 512f,h / 512f,0);

我在opengl2中不知道,我读了这个教程:

http://www.learnopengles.com/android-lesson-four-introducing-basic-texturing/

这并不难,但你只能改变w和h的值(相当于

  

gl.glScalef(w / 512f,h / 512f,0);

是否有其他教程或解决方案?

1 个答案:

答案 0 :(得分:0)

所以你读过的教程就是你需要的。阅读该网站以前的教程。 gles2与gles1的主要区别在于所有绘图都发生在着色器(片段和顶点)中。这是我的代码和片段着色器源的纹理边界的一部分。

GLuint textureId;
// Generate a texture object
glGenTextures ( 1, textureId );
// Bind the texture object
glBindTexture ( GL_TEXTURE_2D, textureId );
/ Load the texture
glTexImage2D ( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, where_you_store_unpacked_texture_data );

// Set the filtering mode
glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );

// Bind the texture
glActiveTexture ( GL_TEXTURE0 );
glBindTexture ( GL_TEXTURE_2D, textureId );

然后在绑定纹理后,可以将其id传递给片段着色器。

片段着色器是这样的:

const char* pszFragShader_text = "\
        precision mediump float;\
        \
        varying       vec3  v_texCoord_text;\
        uniform  sampler2D  s_texture_text;\
        void main (void)\
        {\
            gl_FragColor = texture2D( s_texture_text, v_texCoord_text.xy );\
        }";