1. 程式人生 > IOS開發 >OpenGL學習(二)-- Xcode 搭建 OpenGL 環境

OpenGL學習(二)-- Xcode 搭建 OpenGL 環境

我的 OpenGL 專題學習目錄,希望和大家一起學習交流進步!


一、搭建前的準備

首先,搭建前需要如下幾個庫:

  • 1. libGLTools.a
  • 2. CLTools
  • 3. glew

為了方便大家下載,我將他們上傳到了網盤中,網盤分享地址連結 密碼: wi5b

二、搭建開始

1. 建立工程

opengl01.jpg

2. 選擇Cocoa App 型別

opengl02.png

opengl03.jpg

3. 新增依賴庫

Bulid Phases——Link Binary With Libraries 中點➕新增依賴庫 “GLUT.framework”“OpenGL.framework”

opengl04.png

4. 配置路徑

(1) 將下載好的 include 資料夾直接拖入專案工程中,將 libGLTools.a 靜態庫直接拖入到專案的 Frameworks 中。

(2) 在 Build Settings 中搜索 “Header search” ,在 Header Search Paths 新增上 include 的路徑,不想敲的話直接把專案工程裡的include資料夾拖過來就會出現路徑。

opengl05.png

opengl06.png

5. 建立main.cpp

建立一個 c++ 型別的檔案,命名為 main,建立的時候去掉勾選同時建立標頭檔案的對勾。

opengl07.png

opengl08.png

6. 刪除AppDelegate.hAppDelegate.mmain.m
ViewController.hViewController.m

螢幕快照 2019-04-15 下午11.33.22.png

三、執行測試程式碼

編譯如果出現關於證書的錯誤,別忘了把證書改為 “Sign to Run Locally(Ad Hoc Code Sign)”

螢幕快照 2019-04-15 下午9.47.08.png
螢幕快照 2019-04-15 下午11.41.25.png
以下是一段從網上摘抄來略加修改後的測試程式碼:

#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,1.0f,0.0f);
    
    //初始化著色管理器
    shaderManager.InitializeStockShaders();
    
    //設定三角形,其中陣列vVert包含所有3個頂點的x,y,笛卡爾座標對。
    GLfloat vVerts[] = {
        -0.5f,0.0f,0.5f,};
    //批次處理
    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,1.0f};
    
    //傳遞到儲存著色器,即GLT_SHADER_IDENTITY著色器,這個著色器只是使用指定顏色以預設笛卡爾座標第在螢幕上渲染幾何圖形
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
    
    //提交著色器
    triangleBatch.Draw();
    
    //將在後臺緩衝區進行渲染,然後在結束時交換到前臺
    glutSwapBuffers();
}

int main(int argc,char* argv[]) {
    //設定當前工作目錄,針對MAC OS X
    gltSetWorkingDirectory(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(800,600);
    
    glutCreateWindow("Triangle");
    
    //註冊回撥函式
    glutReshapeFunc(ChangeSize);
    
    glutDisplayFunc(RenderScene);
    
    //驅動程式的初始化中沒有出現任何問題。
    GLenum err = glewInit();
    
    if(GLEW_OK != err) {
        fprintf(stderr,"glew error:%s\n",glewGetErrorString(err));
        return 1;
    }
    
    //呼叫SetupRC
    SetupRC();
    glutMainLoop();
    return 0;
}
複製程式碼

執行結果:

螢幕快照 2019-04-15 下午11.40.17.png

轉載請備註原文出處,不得用於商業傳播——凡幾多