移动和旋转在openGL里面属于MODEL的变化,在D3D中属于世界坐标系变化
看看例子里面是如何使用
private void renderBlocks (GL10 gl, ArrayList<Block> blocks) {
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glColor4f(0.2f, 0.2f, 1, 0.7f);
for (int i = 0; i < blocks.size(); i++) {
Block block = blocks.get(i);
gl.glPushMatrix();
gl.glTranslatef(block.position.x, block.position.y, block.position.z);
blockMesh.render(GL10.GL_TRIANGLES);
gl.glPopMatrix();
}
gl.glColor4f(1, 1, 1, 1);
gl.glDisable(GL10.GL_BLEND);
}
这个是一个简单的例子,在进行位置变化的时候,要注意坐标系的位置状态的保存
glPushMatrix();//保存当前位置
glTranslatef(0,1,0);//现在是(1,1,0)了
glPopMatrix();//这样,现在又回到(1,0,0)了
上面绘制block就用了这个
gl.glTranslatef(block.position.x, block.position.y, block.position.z);