我正在读考试,以前的考试有这个问题:
1. void drawGLScene(){
2. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
3. glLoadIdentity();
4. glTranslatef(0, 1, 0);
5. glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
6. glScalef(.5, 2, 1);
7. drawChevron();
8. glFlush();
9. }
“写入三行OpenGL,插入第6行和第7行之间 反转(取消)第4到6行实现的转换效果 不要使用glLoadIdentity()。“
我很确定它必须是另一个Translate,Rotate,Scale。但我知道它并不像使用我认为的反向参数那么简单。我很难理解x和y轴面向哪个方向,以及尺度是否会影响平移。
有人能够向我解释如何正确地做到这一点吗?
答案 0 :(得分:3)
这三行将是:
glScalef(1.0/.5, 1.0/2, 1.0/1);
glRotatef(90.0f, 0.0f, 0.0f, 1.0f);
glTranslatef(0, -1, 0);
基本上你需要以相反的顺序执行逆变换。你从缩放开始。缩放的反向将缩减,但这次是1 /因子。然后将其向后旋转90度并在y轴上向后平移1个单位。