我是 opengl 的新手,我想快速绘制许多位图。我给自己写了几个类来绘制位图。如果我使用这些类来绘制一些大位图它很快,但如果我用它来绘制许多小位图它很慢。这是我的代码:
画家班:
public void draw(int id, FloatBuffer vertexBuffer) {
// bind the previously generated texture
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[id]);
// Point to our buffers
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glColor4f(1,1,1,1);
// Set the face rotation
gl.glFrontFace(GL10.GL_CW);
// Point to our vertex buffer
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
// Draw the vertices as triangle strip
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
//Disable the client state before leaving
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}
然后我这样称呼它:
painter.draw(bmp, vert);
“bmp”是 int 值,而 vert 是 FloatBuffer。位图在每一帧中都会改变位置,所以我为每个位图计算每帧中的 FloatBuffer。
你认为有更快的方法来绘制它吗?