Xcode環境下OpenGL C++ GLFW開發環境搭建


  • 操作系統版本:MacOS Mavericks 10.9.2
  • Xcode版本:5.0.1
  • OpenGL版本:4.10
  • GLFW版本:3.0.4

一、GLFW編譯

1、下載並安裝cmake(當前最新版本為2.8.12.2)

http://www.cmake.org/cmake/resources/software.html

下載cmake-2.8.12.2-Darwin64-universal.dmg文件安裝即可

2、下載GLFW源代碼(當前最新版本為3.0.4)

http://www.glfw.org/download.html

3、將GLFW解壓到任意目錄,例如~/Library/glfw-3.0.4

4、用文本編輯器打開glfw-3.0.4目錄下glfw_config.h.in文件,可根據需要修改配置信息

(1)將#cmakedefine _GLFW_COCOA

修改為#cmakedefine _GLFW_COCOA 1

(2)將#cmakedefine _GLFW_NSGL

修改為#cmakedefine _GLFW_NSGL 1

(3)將#cmakedefine _GLFW_NO_DLOAD_WINMM

修改為#cmakedefine _GLFW_NO_DLOAD_WINMM 1

(4)將#cmakedefine _GLFW_USE_OPENGL

修改為#cmakedefine _GLFW_USE_OPENGL 1

5、打開terminal,進入到glfw-3.0.4目錄,依次鍵入以下命令:

cmake .
sudo make install

執行成功后,會打印出以下內容:

-- Install configuration: ""
-- Installing: /usr/local/include/GLFW
-- Installing: /usr/local/include/GLFW/glfw3.h
-- Installing: /usr/local/include/GLFW/glfw3native.h
-- Installing: /usr/local/lib/cmake/glfw/glfwConfig.cmake
-- Installing: /usr/local/lib/cmake/glfw/glfwConfigVersion.cmake
-- Installing: /usr/local/lib/cmake/glfw/glfwTargets.cmake
-- Installing: /usr/local/lib/cmake/glfw/glfwTargets-noconfig.cmake
-- Installing: /usr/local/lib/pkgconfig/glfw3.pc
-- Installing: /usr/local/lib/libglfw3.a

 二、建立Xcode工程

1、打開Xcode,新建OSX Command Line Tool工程

2、左側選中工程

(1)在Build Settings里找到Header Search Paths

添加terminal中輸出的頭文件路徑:/usr/local/include/

(2)在Build Settings里找到Library Search Paths

添加terminal中輸出的lib文件路徑:/usr/local/lib/

3、在Build Phases中的Link Binary With Libraries中,添加:

(1)IOKit.framework

(2)Cocoa.framework

(3)OpenGL.framework

(4)CoreVideo.framework

(5)libglfw3.a

若不能找到libglfw3.a,可通過Add Other...按鈕手動定位該文件,文件在/usr/local/lib/中

三、main文件編寫

1、引用頭文件

#define GLFW_INCLUDE_GLCOREARB
#include <GLFW/glfw3.h>

#define GLFW_INCLUDE_GLCOREARB可以使得GLFW包含gl3.h頭文件,否則為gl.h

2、main函數

 1 int main() {
 2     if (!glfwInit()) {
 3         return -1;
 4     }
 5     glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
 6     glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
 7     glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 8     glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
 9     GLFWwindow* window = glfwCreateWindow(640, 480, "Hello OpenGL", NULL, NULL);
10     if (!window) {
11         glfwTerminate();
12         return -1;
13     }
14     
15     glfwMakeContextCurrent(window);
16     
17     cout << "OpenGL Vendor:" << glGetString(GL_VENDOR) << endl;
18     cout << "OpenGL Renderer: " << glGetString(GL_RENDERER) << endl;
19     cout << "OpenGL Version: " << glGetString(GL_VERSION) << endl;
20     cout << "GLSL Version:" << glGetString(GL_SHADING_LANGUAGE_VERSION) << endl;
21     
22     glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
23     while (!glfwWindowShouldClose(window)) {
24         glClear(GL_COLOR_BUFFER_BIT);
25         glfwSwapBuffers(window);
26         glfwPollEvents();
27     }
28     
29     glfwTerminate();
30     return 0;
31 }

一系列glfwWindowHint的調用可以使得GLFW使用系統中高版本的OpenGL,打印出的版本為4.1,如不使用則為2.1

另附控制台輸出結果:

OpenGL Vendor:Intel Inc.
OpenGL Renderer: Intel Iris OpenGL Engine
OpenGL Version: 4.1 INTEL-8.24.11
GLSL Version:4.10

四、其他

1、工作目錄(Working Directory)

工作目錄決定了文件查找的路徑,新建的Command Line Tool工程,默認的工作目錄為

/Users/<用戶名>/Library/Developer/Xcode/DerivedData/<工程名>-guttkjhmhgdrqhabdijvcjusfjbi/Build/Products/Debug

當在工程中讀取文件時,例如:ifstream file("aaa.fs"),會從該目錄查找文件,引入工程的目錄不會自動拷貝到該目錄下,可以通過修改工作目錄的方式解決該問題。

Xcode中菜單Product->Scheme->Edit Scheme
左側選中Run <工程名>
右側Working Directory后面勾選Use custom working directory,
然后下方輸入的工程目錄,這樣代碼里就是從這個目錄開始找了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM