1. 程式人生 > >計算機圖形學02一一OpenGL 程式碼實現繪製一條線

計算機圖形學02一一OpenGL 程式碼實現繪製一條線

OpenGL 有一些自己的規則:

函式名的命名規範 是以gl開頭 之後每一組成詞的第一個字母大寫 例如
glBegin , glCopyPixels

常量以GL開頭 後加_ 之後所以字母大寫 例如
GL_2D , GL_RGB

資料型別它自帶了自己的資料型別 寫法 就是在我們之前的資料型別前面加GL 例如
GLbyte , GLint

OpenGL 自己有一些實用的函式(OpenGL Utility,GLU) 這個是不能在螢幕上顯示的庫
因為這個庫與裝置無關的函式 視窗管理是依賴於計算機的  
那怎麼顯示?
在window系統下 WGL函式提供了視窗系統到OpenGL的介面

現在我們來開始繪製一條線把  

繪製前的準備 :

glut32.dll glut.dll 放在C:\Windows\SysWOW64  這是64位的
32位的放在 C:\Windows\System32 

glut32.lib,glut.lib 放在VS 對應的 VS2012\VC\lib
下面

好了準備完成 上程式碼

#include<windows.h>//包含了WGL函式
#include<GL/GL.h>//OpenGL庫
#include<GL/GLU.h>//OpenGL庫
#include<stdio.h>//標準輸入輸出函式
#include<stdlib.h>//最常用的系統函式
#include<math.h>//數學函式
#include<GL/glut.h>//處理視窗管理操作




//初始化操作
void init()
{
glClearColor(1.0,1.0,1.0,0);//設定背景顏色 不過這樣背景顏色是不顯示的



//這段是要告訴OpenGL怎麼將圖形投影到顯示器中 我們是2維線 OpenGL看作是三維線的特例來處理
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,200.0,0.0,150.0);//這個表示使用正投影將世界座標系二維矩形區域對映到螢幕上  x 0 - 200 y 0 150
//只要是在該矩形內定義的物件 都會顯示視窗上
}


//顯示線段
void lineSegment(void)
{
glClear(GL_COLOR_BUFFER_BIT);//這樣背景色才會顯示
//GL_COLOR_BUFFER_BIT 是OpenGL的常數 用來指定顏色快取中的位值,該快取將
//使用glClearColor函式中指定的值來設定


glColor3f(1.0,0,0);//設定物件的顏色


glBegin(GL_LINES);
glVertex2i(180,15);
glVertex2i(10,145);
glEnd();


glFlush(); //強制清空所以快取來處理OpenGL函式
}


int main(int argc, char *argv[])
{
glutInit(&argc,argv);//初始化GLUT


glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//設定顯示視窗的快取和顏色模式 預設都是單快取和RGB顏色
//後面將會更詳細地討論顏色模型及動畫應用的雙快取 和 觀察三維場景的引數選項等其他選項


glutInitWindowPosition(50,100);//顯示的位置


glutInitWindowSize(400,300);//顯示的大小


glutCreateWindow("An Example OpenGL Program");//顯示視窗在建立時給點標題




init();
//lineSegment 這個是OpenGL定義一的線段


glutDisplayFunc(lineSegment);//將圖賦值給顯示視窗

glutMainLoop();//加上這段圖片才會顯示出來 還會檢查滑鼠 鍵盤等裝置


}

效果展現:


那些庫可以去網速找找很多