-1

虽然我使用的是opengl es 1.1,但我想尝试使用我自己的矩阵东西,我构建了一个fps相机矩阵函数,称为:fpsmatrixupdate(); 然后我这样称呼它:

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

4

1 回答 1

2

是的,如果您想将对象的放置基于每个对象的转换,则每次都必须执行 glLoadMatrix。一次计算变换矩阵并将它们存储在每个对象的场景数据中以便于访问是有意义的。

于 2012-12-09T20:59:30.387 回答