我在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);
)
是否有其他教程或解决方案?
答案 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 );\
}";