【发布时间】:2012-01-24 09:44:18
【问题描述】:
我正在为 android 开发一款游戏,这是我第一次使用 OpenGL。 当应用程序加载时,我创建了我的顶点和纹理缓冲区,我从可绘制资源中加载图像;使用 GLUtils.tex2Image2D 将图像绑定到纹理数组。
我想知道 glBindTexture() 是否是在更改纹理以生成动画时使用的正确函数。
public void onDraw(GL10 gl){
sprite.animate();
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[sprite.frameNumber]);
sprite.draw(gl);
}
代码说明
sprite.animate() - 根据 System.uptimeMillis() 改变帧数
sprite.draw() - 实际绘图:
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);
//Disable the client state before leaving
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
该功能确实有效,但我想确认它是正确使用的功能,或者是否有其他方法可以做到这一点。
【问题讨论】: