openGL 1 绘制矩形


#include <GL/glut.h>

void renderScene() {
    //调用glClear将从窗口中清除最后一次所绘制的图形
    glClear(GL_COLOR_BUFFER_BIT); 
    //设置当前绘图的颜色
    glColor3f(0.98f, 0.625f, 0.12f);
    //绘制矩形,第一对坐标表示左上角,第二对表示右下角
    glRectf(-30.0f, 15.0f, 30.0f, -15.0f);
    //刷新队列
    //在内部,openGL的命令和语句常常等待在队列里
    //直到openGL驱动程序同时处理几个“命令”
    glFlush();
}

void setupRC() {
    //设置了一种颜色,用于清除窗口
    glClearColor(0.0f, 1.0f, 1.0f, 1.0f);
}

void changeSize(GLsizei w, GLsizei h) {
    GLfloat a; //记录宽高比
    if (h == 0) h = 1;
    glViewport(0, 0, w, h);
    //重置坐标系统
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    //建立剪裁区域
    a = (GLfloat)w / (GLfloat)h;
    if (w <= h)
        glOrtho(-100.0, 100.0, -100.0 / a, 100.0 / a, 1.0, -1.0);
    else
        glOrtho(-100.0*a, 100.0*a, -100.0, 100.0, 1.0, -1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void main() {
    //告诉GULT函数在创建的时候使用的是何种类型的显示模式
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //单缓冲,RGA颜色显示模式
    glutCreateWindow("绘制矩形"); //实际创建窗口 
    //调用回调函数,刚行代码将将之前定义的renderScene函数设置成显示回调函数
    //这意味着,当窗口需要被绘制的时候,GUIT将会调用这个函数
    //例如,改变窗口大小、第一次显示或者窗口从被覆盖中恢复的时候
    //都需要调用这个函数的
    glutDisplayFunc(renderScene);
    //每当窗口的大小改变的时候,就会调用这个函数的回调函数
    glutReshapeFunc(changeSize);
    //在这个程序中,将执行渲染之前应该完成的所有openGL初始化工作
    setupRC();
    glutMainLoop();
}

对于glViewpoint()函数以及 glOrtho()函数的使用和理解,参考http://blog.csdn.net/hutao1101175783/article/details/50917927;

效果图:

 



references:
openGL超级宝典;
http://blog.csdn.net/hutao1101175783/article/details/50917927

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM