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

個人 OpenGL 專題學習目錄,但願和你們一塊兒學習交流進步!c++


1、搭建前的準備

首先,搭建前須要以下幾個庫:數組

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

爲了方便你們下載,我將他們上傳到了網盤中,網盤分享地址連接 密碼: wi5b函數

2、搭建開始

1. 建立工程

opengl01.jpg

2. 選擇Cocoa App 類型

opengl02.png

opengl03.jpg

3. 添加依賴庫

Bulid Phases——Link Binary With Libraries 中點➕添加依賴庫 「GLUT.framework」「OpenGL.framework」oop

opengl04.png

4. 配置路徑

(1) 將下載好的 include 文件夾直接拖入項目工程中,將 libGLTools.a 靜態庫直接拖入到項目的 Frameworks 中。post

(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.mViewController.hViewController.m

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

3、運行測試代碼

編譯若是出現關於證書的錯誤,別忘了把證書改成 「Sign to Run Locally(Ad Hoc Code Sign)」ui

屏幕快照 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,1.0f,0.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,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;
}
複製代碼

運行結果: spa

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

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

相關文章
相關標籤/搜索