openGL-自定义像素坐标系

综述

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;
}

猜你喜欢

转载自blog.csdn.net/ooffrankdura/article/details/79840879