如何重置opengl modelview矩阵?

时间:2012-12-09 20:17:32

标签: opengl-es matrix

虽然我使用的是opengl es 1.1,但我想尝试使用自己的矩阵, 我建立了一个名为fpsmatrixupdate()的fps相机矩阵函数; 然后我称之为:

fpsmatrixupdate(); //this function generated a matrix called mat
drawbox(min,max)

一切都很好,直到我试图画另一个盒子:

fpsmatrixupdate(); //this function generated a matrix called mat
drawbox(min,max);
glLoadIdentity();  // I tried to call this before drawbox2 but box2 doesn't show
drawbox2(min,max);

问题:为什么会这样?

fpsmatrixupdate(); //this function generated a matrix called mat
drawbox(min,max);
glLoadMatrixf(mat);  // mat is fps camera update function generated matrix,
drawbox2(min,max);

如果我要绘制200个不同位置的盒子,我是否需要调用glLoadMatrixf(mat)200次?如果我不调用glLoadMatrixf(mat)重置矩阵,第二个框的变换基于第一个框..

如果有人想看代码,他们几乎99%从这个演示中复制: http://www.codesampler.com/oglsrc/oglsrc_5.htm#ogl_fps_controls

1 个答案:

答案 0 :(得分:2)

是的,如果你想将对象的位置基于每个对象的转换,你每次都要做一个glLoadMatrix。计算转换矩阵一次并将它们存储在每个对象的场景数据中以便于访问是有意义的。