日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序

發(fā)布時(shí)間:2025/5/22 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

// GLTools庫(kù)包含了一個(gè)用于操作矩陣和向量的3D數(shù)學(xué)庫(kù),并依靠GLEW獲得OpenGL3.3中用來(lái)產(chǎn)生和渲染一些簡(jiǎn)單3D對(duì)象的函數(shù), // 以及對(duì)視覺(jué)平截頭體、相機(jī)類和變換矩陣進(jìn)行管理的函數(shù)的充分支持。 #include <GLTools.h>// GLShaderManager為GLTools的著色器管理器類。沒(méi)有著色器,我們就不能再OpenGL(核心架構(gòu))中進(jìn)行著色。著色器管理器類不僅允許我們創(chuàng)建并管理著色器, // 還提供一組“存儲(chǔ)著色器”(Stock Shader),它們能夠進(jìn)行一些初步和基本的渲染操作。 #include <GLShaderManager.h>// 判斷程序是在Mac上還是在Windows上建立,并選擇對(duì)應(yīng)的函數(shù)庫(kù)。 #ifdef _APPLE_ #include <glut/glut.h> #else #define FREEGLUT_STATIC #include <GL/glut.h> #endifGLBatch trangleBatch; GLShaderManager shaderManager;void ChangeSize(int w, int h) {// 設(shè)置視口大小。glViewport(0, 0, w, h); }void SetupRc() {// 用當(dāng)前顏色清除窗口glClearColor(0.0f, 0.0f, 1.0f, 1.0f);// 初始化著色器 shaderManager.InitializeStockShaders();// 在笛卡爾坐標(biāo)系中指定三角形三個(gè)頂點(diǎn)的坐標(biāo)。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) {// 清除緩沖區(qū)(顏色緩沖區(qū)、深度緩沖區(qū)、模板緩沖區(qū))。glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);// 指定三角形的顏色為紅色。GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };// 將顏色傳遞到存儲(chǔ)著色器,即GLT_SHADER_IDENTITY著色器,這個(gè)著色器只是使用指定顏色以默認(rèn)笛卡爾坐標(biāo)系在屏幕上渲染幾何圖形。 shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);// 指示將幾何圖形提交到著色器。 trangleBatch.Draw();// 啟用雙緩沖進(jìn)行繪制。 glutSwapBuffers();}int main(int argc, char* argv[]) {// 設(shè)置當(dāng)前工作目錄,在Windows中并不是必要的。gltSetWorkingDirectory(argv[0]);// 初始化GLUT庫(kù)。glutInit(&argc, argv);// 在創(chuàng)建窗口時(shí)使用下列類型的顯示模式:使用雙緩沖窗口、RGBA顏色模式、啟用深度測(cè)試以及模板測(cè)試。glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);// 設(shè)置窗口大小。glutInitWindowSize(800, 600);// 創(chuàng)建一個(gè)以“Triangle”為標(biāo)題的窗口。glutCreateWindow("Triangle");// 窗口大小改變的回調(diào)函數(shù)。 glutReshapeFunc(ChangeSize);// 窗口重繪的回調(diào)函數(shù)。 glutDisplayFunc(RenderScene);// 重新調(diào)用GLEW庫(kù)初始化OpenGL驅(qū)動(dòng)程序中所有丟失的入口點(diǎn),以確保OpenGL API對(duì)我們來(lái)說(shuō)完全可用。GLenum err = glewInit();if (GLEW_OK != err){fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));return -1;}// 創(chuàng)建并初始化渲染環(huán)境。 SetupRc();// 啟用主循環(huán)。 glutMainLoop();return 0 ;} View Code

程序運(yùn)行結(jié)果:

?

轉(zhuǎn)載于:https://www.cnblogs.com/ppffs/p/3230213.html

總結(jié)

以上是生活随笔為你收集整理的《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。