OpenGL環境搭建參考博客:VS2015下OpenGL庫的配置。html
#include<GL\glew.h> #include<GLTools.h> #include<GLShaderManager.h> #ifdef __APPLE__ #include<GL\glut.h> #else #define FREEGLUT_STATIC #include<GL\glut.h> #endif GLShaderManager shaderManager; // 聲明一個着色器管理器的實例 GLBatch triangleBatch; // 聲明一個GLBatch實例 // 窗口大小改變函數 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); triangleBatch.Draw(); // 指示將集合圖形提交到着色器 glutSwapBuffers(); } // 主函數 int main(int argc, char *argv[]) { gltSetWorkingDirectory(argv[0]); // 調用glutInit函數傳輸命令行參數並初始化GLUT庫 glutInit(&argc, argv); // 告訴GLUT庫,在建立窗口時要使用那種類型的顯示模式 // GLUT_DOUBLE表示雙緩衝窗口,GLUT_RGBA表示RGBA顏色模式 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); //設置GLUT窗口的大小,建立以"Triangle"爲標題的窗口 glutInitWindowSize(800, 600); glutCreateWindow("Triangle"); //爲改變窗口大小而設置一個回調函數 //註冊一個函數以包含OpenGL渲染代碼 glutReshapeFunc(ChangeSize); glutDisplayFunc(RenderScene); // 調用glewInit初始化GLEW庫 // 檢查取人驅動程序初始化過程無問題 GLenum err = glewInit(); if (GLEW_OK != err) { fprintf(stderr, "GLEW Error:%s\n", glewGetErrorString(err)); return 1; } SetupRC(); // glutMainLoop函數負責處理全部操做系統特定的消息、按鍵動做等直到咱們關閉程序 glutMainLoop(); return 0; }
運行結果:數組