OpenGL 窗口創建

  • 使用OpenGL實用庫的第一步是初始化GLUT:
glutInit(&argc, argv);              

  • 接着, 是說明展示窗口的標題:
glutCreateWindow("An Example OpenGl Program");

  • 下面就是指定顯示窗口需要顯示的內容, 使用OpenGL函數創建一個圖並把圖的定義傳給GLUT函數glutDisplayFunc(即將圖賦給顯示窗口).
glutDisplayFunc(lineSegment);   
  • 這個lineSegment就是圖的抽象.


  • 但是此時顯示窗口還未出現在屏幕上, 需要另一個GLUT函數實現完成窗口處理的工作.

glutMainLoop();
  • 這個函數必須是程序中的最後一個, 他顯示初始圖形並使得程序進入檢查鼠標或鍵盤等設備輸入的無窮循環之中, 但是要注意的是, 這個程序不具備交互性, 僅僅能顯示其中的圖像直到窗口關閉.


  • 這裏還有兩條語句, 分別是確定顯示窗口的位置和窗口的大小.


glutInitWindowPosition(50, 100);
  • glutInitWindowPosition()是確定窗口的位置, 第一個參數是距離顯示器左側的距離, 第二個參數是距離顯示器上側的位置, 注意單位是像素.

glutInitWindowSize(400, 300);
  • glutInitWindowSize()是確定窗口的大小, 兩個參數分別代表的是窗口的寬度和高度.

  • 這裏我們還可以用glutInitDisplayMode來設定顯示窗口的緩存和顏色模型等選項.
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  • 這條語句即說明顯示窗口使用單個緩存且使用RGB三元素組成的顏色模型來選擇顏色值.

至於OpenGL創建圖形的相關知識暫且不表.


窗口創建代碼:

#include <Windows.h>
#include <gl/GL.h>
#include <gl/GLU.h>
#include <GL/glut.h>

void init()
{
    glClearColor(1.0, 1.0, 1.0, 0.0);   // Set Display-window color to white

    glMatrixMode(GL_PROJECTION);        // Set projection parameters
    gluOrtho2D(0.0, 200.0, 0.0, 150.0);
}

void lineSegment()
{
    glClear(GL_COLOR_BUFFER_BIT);       // Clear display window

    glColor3f(0.0, 0.4, 0.2);           // Set line segment color to green
    glBegin(GL_LINES);
    glVertex2i(180, 15);                // Specify line-segment geometry
    glVertex2i(10, 145);
    glEnd();

    glFlush();                          // Process all OpenGL, routines as quickly as possible
}

int main(int argc, char * argv[])
{
    glutInit(&argc, argv);              // Initialize GLUT
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);    // Set display mode
    glutInitWindowPosition(50, 100);    // Set top-left display-window position
    glutInitWindowSize(400, 300);       // Set display-window width and height
    glutCreateWindow("An Example OpenGl Program");  //Creat display window

    init();                             // Execute initialization procedure
    glutDisplayFunc(lineSegment);       // Send graphics to display window
    glutMainLoop();                     // Display everything and wait
}


創建結果:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章