我目前正在使用OpenGL和GLUT框架来玩粒子。
但是,我似乎可以让我的逻辑正确地用于旋转/翻译。
我当前情况的伪代码:
void display() {
drawEnvironment();
for each particle 'part' in the array {
glPushMatrix(); // pushes the matrix for the current transformations? i.e. this particle?
glRotatef(part.angles); // rotate this matrix based of it's own angles (constantly changing)
drawParticle(part); // draws at origin
glTranslatef(part.positon); // translate to the position
glPopMatrix();
}
}
我认为我在这里做的事情如下:
我也试过翻译 - >旋转 - >绘画,以及其他一些混音。
如果没有快速视频,很难解释出现了什么问题: https://www.youtube.com/watch?v=G0ouhCKKcIM
在被翻译之后看起来它正在旋转,因此它在原点周围旋转时会跟随那个更大的圆圈,而不是在它自己的轴上旋转。
答案 0 :(得分:2)
应按此顺序应用转换:
这是因为OpenGL通过预乘而工作。第一个操作是最后执行的。