如果我的应用程序要修改对象顶点而不是使用 ,会不会提高性能glTranslatef
?
NPC对象的顶点设置如下;这允许它们是屏幕宽度的 1/10,因为之前调用gl.glScalef()
protected float[] vertices = {
0f, 0f, -1f, //Bottom Left
1f, 0f, -1f, //Bottom Right
0f, 1f, -1f, //Top Left
1f, 1f, -1f //Top Right
};
目前我有一组在屏幕上绘制的 NPC 对象,当它们移动时,X 和 Y 值会更新,我onDraw
可以访问这些对象以在正确的位置绘制 NPC。
onDraw(GL10 gl){
for(int i=0; i<npcs.size(); i++){
NPC npc = npcs.get(i);
npc.move();
translate(npc.x, npc.y);
npc.draw(gl);
}
}
translate(x,y)
- 在调用与gl.glTranslatef()
屏幕大小和比例相关的计算方法时推送和弹出矩阵
npc.draw(gl)
- 启用客户端状态并绘制数组
如果移动函数改变顶点和NPC对象,性能会不会提高?例如;
move(){
// ... do normal movement calculations
float[] vewVertices = {
x, y, 0f,
x+npc.width, y, z,
x, y+npc.height, z,
x+npc.width, y+npc.height, z
}
vertexBuffer.put(newVertices);
vertexBuffer.position(0);
}
我即将创建一个简短的测试,看看我是否可以看到任何性能提升,但我想问一下是否有人以前有过这方面的经验。