openGL-自定义像素坐标系

18 篇文章 2 订阅

综述

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值