OpenGL ES移动对象

奇伦科

我正在写一个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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章