Я разрабатываю игру для 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);
Функция работает, но я хотел подтвердить, что это была правильная функция или есть альтернативный способ сделать это.