综述
openGL中默认为归一化后的坐标系。这种坐标系再不同的显示条件下都是按比例缩放呈现的。具有一定的好处。
但是有时候为了便于操作和展示我们需要按照像素坐标系进行绘制。下面给出配置例子。
看看例子自己验证一下就都明白了。
例子
#include <iostream>
#include <GLUT/GLUT.h>
using namespace std;
float window_size = 600;
void InitEnvironment() //对环境进行初始化操作
{ glClearColor(0.0,0.0,0.0,0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluOrtho2D(0,window_size,0,window_size);
}
void myDisplay(void)
{
//绘制一个带颜色的小矩形
//注意这里的坐标都已经是像素坐标下的了
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_QUADS);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(100, 200);
glColor3f(0.0f, 1.0f, 0.0f);
glVertex2f(200, 200);
glColor3f(0.0f, 0.0f, 1.0f);
glVertex2f(200, 300);
glColor3f(0.5f, 0.5f, 0.5f);
glVertex2f(100, 300);
glEnd();
glFlush();
}
int main(int argc, char *argv[])
{ glutInit(&argc, argv); //初始化GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(300, 100);
glutInitWindowSize(window_size, window_size);
glutCreateWindow("演示1");
InitEnvironment(); //初始化
glutDisplayFunc(&myDisplay); //回调函数
glutMainLoop(); //持续显示,当窗口改变会重新绘制图形
return 0;
}