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
相關文章
相關標籤/搜索