這是我窩關(guān)于OpenGL(C++版本)零基礎(chǔ)入門筆記的草稿!本系列文章主要通過每次一個小案例從而由淺至深地帶你入門!本次文章主要內(nèi)容為簡單概述OpenGL的語法、庫以及顯示窗口的范例。
OpenGL概述
OpenGL(開放式圖形庫)是用于渲染2D、3D矢量圖形的跨語言、跨平臺的應用程序編程接口。通過它可以在一些計算機上描述圖元、屬性、幾何變換、觀察變換等其它操作。屬于計算機圖形學的范疇。
OpenGL語法概述
OpenGL的核心庫中的函數(shù)名要以gl為前綴、函數(shù)名中每一個組成詞的第一個字母要大寫(如glBegin)。
有些函數(shù)要求一個或多個變量用符號常量賦值,如參數(shù)名、參數(shù)的值或特定的模式。這些常量均以GL開頭并全部大寫,單詞間用_隔開(如GL_2D)。
OpenGL函數(shù)也有專門的數(shù)據(jù)類型,并且部分函數(shù)支持數(shù)組(比如多維坐標)。大寫GL開頭,小寫字母表示標準數(shù)據(jù)類型名(如GLint)。
OpenGL庫概述
OpenGL除惹核心庫外還有一些用于處理專門操作的附加庫。比如實用函數(shù)庫(GLU)、窗口擴充(GLX)、實用工具包(GLUT)等等,比較模塊化。
在微軟VS2015下部署環(huán)境
新建項目-C++空白項目-創(chuàng)建C++文件;
工具-NuGet包管理器-包管理器控制臺;
Install-Package nupengl.core
完成。
使用GLUT進行顯示窗口管理
#include <GL/glut.h>
void init(void) {
? glClearColor(1.0, 1.0, 1.0, 0.0);
? //初始化顏色(RGB值)
? 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);
? //創(chuàng)建顏色緩存變量
? glColor3f(0.0, 0.4, 0.2);
? //為場景添加三個浮點顏色RGB值
? glBegin(GL_LINES);
? //開始畫線
? ? ? glVertex2i(180, 15);//左
? ? ? glVertex2i(10, 145);//右
? glEnd();
? glFlush();//刷新一把
}
void main(int argc, char** argv) {
? glutInit(&argc, argv);
? //對實用函數(shù)工具包初始化
? ? ? glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
? ? ? //窗口顯示模式(RGB)
? ? ? glutInitWindowPosition(50, 100);
? ? ? //顯示位置(左50像素、右100像素)
? ? ? glutInitWindowSize(400, 300);
? ? ? //顯示大小(400像素x300像素)
? ? ? glutCreateWindow("An Example OpenGL Program");
? ? ? //窗口標題
? ? ? init();
? ? ? glutDisplayFunc(lineSegment);
? ? ? //顯示何內(nèi)容
? ? ? glutMainLoop();
? ? ? //顯示出來
? }