1. 程式人生 > >opengl超級寶典(第五版)閱讀筆記 1 基本程式框架

opengl超級寶典(第五版)閱讀筆記 1 基本程式框架

配置環境部分其實還是有點煩,網上資料有很多,耐心點問題也不大。
下面也算是opengl的hello world了,寫了比較詳細的註釋。
值得注意的是#pragma comment(lib,“gltools.lib”)這一行,書中是沒有的,可能因為環境配置方法的不同,我必須要手動連結一下gltools庫,不然會出現連結錯誤。

#include <GLTools.h>	// OpenGL toolkit
#include <GLShaderManager.h>
#define FREEGLUT_STATIC  //在windows和linux上,使用freeglut靜態版本,需要新增這一行,否則會出現錯誤
#include <glut.h> #pragma comment(lib,"gltools.lib")//要加上這一行連結一下gltools庫 GLBatch triangleBatch;//用其來繪製基本圖元 GLShaderManager shaderManager;//著色器管理器 void ChangeSize(int w,int h) { glViewport(0, 0, w , h);//設定視口大小為視窗大小 } void SetupRC() { glClearColor(0.0f,0.0f,1.0f,1.0f);//設定其背景為藍色 shaderManager.InitializeStockShaders
(); //初始化著色器管理器 GLfloat vVerts[] = { -0.5f , 0.0f , 0.0f, 0.5f , 0.0f , 0.0f, 0.0f , 0.5f , 0.0f };//設定三角形三個頂點的座標 //建立三角形模型 triangleBatch.Begin(GL_TRIANGLES,3); triangleBatch.CopyVertexData3f(vVerts); triangleBatch.End()} void RenderScene(void) { // 用之前設定好的背景色來填充背景 glClear
(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);//顏色緩衝區,深度緩衝區,模板緩衝區 GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };//紅色 shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);//使用GLTshader和紅色填充三角形 triangleBatch.Draw();//繪製三角形 // 交換緩衝,防止閃爍 glutSwapBuffers(); } int main(int argc, char* argv[]) { gltSetWorkingDirectory(argv[0]);//設定當前的工作目錄,windows環境下也可省略 glutInit(&argc, argv);//傳輸命令列引數,並初始化glut庫 //設定顯示模式 雙緩衝 RGBA顏色格式 深度緩衝區 模板緩衝區(不大理解,後面可能會講到這種具體的問題) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); glutInitWindowSize(800, 600); //設定視窗的大小 glutCreateWindow("Triangle"); //設定視窗的標題 glutReshapeFunc(ChangeSize); //註冊函式,當視窗大小改變的時候設定視點 glutDisplayFunc(RenderScene); //註冊渲染場景使用的函式 GLenum err = glewInit(); //初始化glew if (GLEW_OK != err) { fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err)); //出現錯誤然後列印錯誤 return 1; //return 1代表程式非正常終止 } SetupRC(); //開始渲染環境 glutMainLoop(); //執行主視窗 return 0; }