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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenGL之macOS上的环境搭建

發布時間:2024/5/21 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL之macOS上的环境搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、基本簡介

  • OpenGL 是什么?
    OpenGL(全寫 Open Graphics Library)是個定義了一個跨編程語言、跨平臺的編程接口規格的專業的圖形程序接口。它用于三維圖像(二維的亦可),是一個功能強大,調用方便的底層圖形庫。
  • OpenGL 能做什么?
    OpenGL 能用來開發跨平臺的渲染引擎,在 Android、macOS、iOS、Windows、PS 等平臺均可使用 OpenGL(ES)。
  • OpenGL 不能做什么?
    OpenGL 不能做物理模擬,OpenGL 不能做網絡通信,一句話,除了渲染以外的事情,OpenGL 都做不了,OpenGL 只是一個 3D 渲染 API 接口標準。
  • OpenGL VS DirectX
    • OpenGL 只能做渲染,DirectX 除了渲染以外還能做許多其它的,比如,DirectX 里面包含 d3dxmath 可以用來做3D數學運算;DirectX 里面包含的外部設備接口模塊可以用來接受外部設備的輸入。
    • OpenGL 只是一個定義了一些接口的標準,只要實現了這些接口,那么就算是實現了 OpenGL,相反的,DirectX 則只有微軟自己實現的那一份代碼,所有人都使用微軟給出的那份代碼。
    • OpenGL 能跨平臺,幾乎所有的平臺都支持 OpenGL,從移動設備到 PC 產品再到主機平臺,都支持 OpenGL,而 DirectX 則只有微軟自己的 XBox 和 Windows 支持。
    • 速度方面,DirectX 完爆 OpenGL,對同一硬件而言,DirectX 是 OpenGL 渲染速度的兩倍多。

二、準備資源和文件

  • CLTools(包含了大部分 CLTools 類中的 C 語言獨立函數)
  • glew(跨平臺的 C++ 擴展庫,基于 OpenGL 圖形接口,只要包含一個 glew.h 頭文件,就能使用 gl,glu,glext,wgl,glx 的全部函數,支持目前流行的各種操作系統(including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris)
  • libGLTools.a
  • 資料傳送門:CLTools、glew、libGLTools.a資源下載

三、環境搭建

  • 新建一個工程:打開 Xcode,創建一個工程,然后選擇 macOS -> App,進入下一步;

  • 刪除如圖中選中的不需要的類和文件;

  • 新建 main.cpp,選擇 macOS -> C++ File,然后進入下一步;

  • 去掉圖中箭頭所指的創建頭文件勾選,并命名為 main,然后點擊下一步創建;

  • 在 main.cpp 里面添加上主函數;
int main(int argc, char *argv[]) {}
  • 添加依賴庫:OpenGL.framework 和 GLUT.framework 兩個系統庫;

  • 配置路徑:將下載好的 include 文件夾(GL)直接拖入項目工程中,將 libGLTools.a 靜態庫直接拖入到項目的 Frameworks 中;

  • 在 Build Settings 中搜索 “Header search” ,在 Header Search Paths 添加上 include 的路徑;

  • 通過以上步驟,即可在 macOS 上將 OpenGL 的基本環境搭建完成。

四、環境測試

  • 一個簡單三角形的繪制和顯示的代碼段,可以檢查環境的搭建是否成功,只需要將代碼復制到 main.cpp 即可。
#include "GLShaderManager.h"#include "GLTools.h"#include <glut/glut.h>GLBatch triangleBatch;GLShaderManager shaderManager;// 窗口大小改變時接受新的寬度和高度,其中0,0代表窗口中視口的左下角坐標,w,h代表像素void ChangeSize(int w,int h) {glViewport(0, 0, w, h);}// 為程序作一次性的設置void SetupRC() {// 設置背影顏色glClearColor(0.0f,0.0f,1.0f,1.0f);//初始化著色管理器shaderManager.InitializeStockShaders();// 設置三角形,其中數組vVert包含所有3個頂點的x,y,笛卡爾坐標對。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};// 傳遞到存儲著色器,即GLT_SHADER_IDENTITY著色器,這個著色器只是使用指定顏色以默認笛卡爾坐標第在屏幕上渲染幾何圖形shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);// 提交著色器triangleBatch.Draw();// 將在后臺緩沖區進行渲染,然后在結束時交換到前臺glutSwapBuffers();}int main(int argc,char* argv[]) {// 設置當前工作目錄,針對MAC OS XgltSetWorkingDirectory(argv[0]);// 初始化GLUT庫glutInit(&argc, argv);/*初始化雙緩沖窗口,其中標志GLUT_DOUBLE、GLUT_RGBA、GLUT_DEPTH、GLUT_STENCIL分別指雙緩沖窗口、RGBA顏色模式、深度測試、模板緩沖區*/glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);//GLUT窗口大小,標題窗口glutInitWindowSize(200,200);glutCreateWindow("Triangle");// 注冊回調函數glutReshapeFunc(ChangeSize);glutDisplayFunc(RenderScene);// 驅動程序的初始化中沒有出現任何問題。GLenum err = glewInit();if(GLEW_OK != err) {fprintf(stderr,"glew error:%s\n",glewGetErrorString(err));return 1;}// 調用SetupRCSetupRC();glutMainLoop();return 0;}

五、完整示例

  • OpenGL在macOS上的環境搭建

總結

以上是生活随笔為你收集整理的OpenGL之macOS上的环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。