假设我要翻译一个多边形.如果在绘制它之前我使用glTranslatef它会被翻译,但如果我想绘制两个多边形并只翻译一个,我该怎么办?
#include <OpenGL/OpenGL.h>
#include <GLUT/GLUT.h>
#include "utility.h"
void init()
{
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 1);
}
void render()
{
glClearColor(APPLE_GRAY);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glTranslatef(0.5, 0.0, 0.0);
glBegin(GL_POLYGON);
glColor4f(RED);
glVertex2f(0,0.5);
glVertex2f(-0.5,-0.5);
glVertex2f(0.5, -0.5);
glBegin(GL_POLYGON);
glColor4f(BLUE);
glVertex2f(0.5,0.5);
glVertex2f(-0.5,0.5);
glVertex2f(-0.5, -0.5);
glVertex2f(0.5, -0.5);
glEnd();
glFlush();
}
Run Code Online (Sandbox Code Playgroud)
我只想翻译三角形而不是正方形.怎么做?
在翻译之前,请致电:
glPushMatrix()
然后绘制第一个多边形后,调用:
glPopMatrix()
我还注意到你glEnd()的第一个多边形后没有调用.此外,除非有更多代码未列出,否则我注意到在调用时不会从模型视图切换到投影矩阵glOrtho().如果您仅在此示例中使用模型视图矩阵,则这不是必需的,但传统方法是设置您的投影,如下所示:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 1);
Run Code Online (Sandbox Code Playgroud)
然后,渲染函数为多边形渲染设置模型视图矩阵.同样,不是一个要求,你的例子看起来就像你只需要使用一个矩阵一样.
| 归档时间: |
|
| 查看次数: |
360 次 |
| 最近记录: |