我正在编写Android OpenGL ES 1.0游戏。在这里我想用这种方法在游戏中移动一个对象:
public void move(float dx, float dy, float dz)
{
for(int i=0; i < objectVerts.length; i+=3)
{
objectVerts[i + 0] += dx;
objectVerts[i + 1] += dy;
objectVerts[i + 2] += dz;
}
}
我的渲染方法如下所示:
gl.glViewport(0, 0, getViewportWidth(), getViewportHeight());
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
float aspectRatio = (float)activity.getViewportWidth() / activity.getViewportHeight();
GLU.gluPerspective(gl, 67, aspectRatio, 1, 100);
gl.glMatrixMode( GL10.GL_MODELVIEW );
gl.glLoadIdentity();
GLU.gluLookAt(gl, 0, 0, 1.5f, 0, 0, 0, 0, 1, 0);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, objectVerts.length / 3);
但是如果我调用move方法,则对象不会移动或改变其位置。有什么想法吗?
答案 0 :(得分:1)
您必须将新顶点重新上传到GL引擎(使用glVertexPointer
并使用glDrawArrays
重绘)。 move
函数在CPU上运行,GL引擎无法知道顶点是否已更改。