《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序
生活随笔
收集整理的這篇文章主要介紹了
《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
// GLTools庫包含了一個用于操作矩陣和向量的3D數學庫,并依靠GLEW獲得OpenGL3.3中用來產生和渲染一些簡單3D對象的函數, // 以及對視覺平截頭體、相機類和變換矩陣進行管理的函數的充分支持。 #include <GLTools.h>// GLShaderManager為GLTools的著色器管理器類。沒有著色器,我們就不能再OpenGL(核心架構)中進行著色。著色器管理器類不僅允許我們創建并管理著色器, // 還提供一組“存儲著色器”(Stock Shader),它們能夠進行一些初步和基本的渲染操作。 #include <GLShaderManager.h>// 判斷程序是在Mac上還是在Windows上建立,并選擇對應的函數庫。 #ifdef _APPLE_ #include <glut/glut.h> #else #define FREEGLUT_STATIC #include <GL/glut.h> #endifGLBatch trangleBatch; 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, };// 建立三角形的批次。trangleBatch.Begin(GL_TRIANGLES, 3);trangleBatch.CopyVertexData3f(vVerts);trangleBatch.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 };// 將顏色傳遞到存儲著色器,即GLT_SHADER_IDENTITY著色器,這個著色器只是使用指定顏色以默認笛卡爾坐標系在屏幕上渲染幾何圖形。 shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);// 指示將幾何圖形提交到著色器。 trangleBatch.Draw();// 啟用雙緩沖進行繪制。 glutSwapBuffers();}int main(int argc, char* argv[]) {// 設置當前工作目錄,在Windows中并不是必要的。gltSetWorkingDirectory(argv[0]);// 初始化GLUT庫。glutInit(&argc, argv);// 在創建窗口時使用下列類型的顯示模式:使用雙緩沖窗口、RGBA顏色模式、啟用深度測試以及模板測試。glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);// 設置窗口大小。glutInitWindowSize(800, 600);// 創建一個以“Triangle”為標題的窗口。glutCreateWindow("Triangle");// 窗口大小改變的回調函數。 glutReshapeFunc(ChangeSize);// 窗口重繪的回調函數。 glutDisplayFunc(RenderScene);// 重新調用GLEW庫初始化OpenGL驅動程序中所有丟失的入口點,以確保OpenGL API對我們來說完全可用。GLenum err = glewInit();if (GLEW_OK != err){fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));return -1;}// 創建并初始化渲染環境。 SetupRc();// 啟用主循環。 glutMainLoop();return 0 ;} View Code程序運行結果:
?
轉載于:https://www.cnblogs.com/ppffs/p/3230213.html
總結
以上是生活随笔為你收集整理的《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Storm-源码分析-Stats (ba
- 下一篇: C# 类中继承接口的属性