我正在写一个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);
但是,如果我调用moves方法,则该对象不会移动或更改其位置。有什么想法吗?
您将必须将新顶点重新上传到GL引擎(使用,glVertexPointer
并使用进行重画glDrawArrays
)。该move
函数在CPU上运行,并且GL引擎无法知道顶点已更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句