Mac使用Clion配置OpenGL


Mac使用Clion配置OpenGL

之前博主是用Xcode配置的openGL,但后來因為要與非Mac隊友合作,於是大家決定統一使用Clion,博主於是再次配置開發環境,這里記錄一下

預先准備

Mac系統自帶了OpenGL和GLUT,但博主想使用較為新的GLEW和GLFW。

安裝homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安裝GLEW和GLFW

brew install glew
brew install glfw

brew安裝的目錄在/usr/local/Cellar下,后面會使用到路徑。

用Clion創建工程

Clion工程管理是通過CMake的,第三方庫可以通過修改CMakeLists.txt完成

以下是博主參考了資料后配置成功的文件

cmake_minimum_required(VERSION 3.9)
project(helloworld)

set(CMAKE_CXX_STANDARD 11)

# 添加頭文件
set(GLEW_H /usr/local/Cellar/glew/2.1.0/include/GL)
set(GLFW_H /usr/local/Cellar/glfw/3.2.1/include/GLFW)
include_directories(${GLEW_H} ${GLFW_H})

# 添加目標鏈接
set(GLEW_LINK /usr/local/Cellar/glew/2.1.0/lib/libGLEW.2.1.dylib)
set(GLFW_LINK /usr/local/Cellar/glfw/3.2.1/lib/libglfw.3.dylib)
link_libraries(${OPENGL} ${GLEW_LINK} ${GLFW_LINK})

# 執行編譯命令
set(SOURCE_FILES main.cpp)
add_executable(helloworld ${SOURCE_FILES})

可以看到,在External Libraries中出現GL和GLFW

測試

main.cpp還是使用之前的的代碼測試

#include <GLEW/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;

void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
{
    //如果按下ESC,把windowShouldClose設置為True,外面的循環會關閉應用
    if(key==GLFW_KEY_ESCAPE && action == GLFW_PRESS)
        glfwSetWindowShouldClose(window, GL_TRUE);
    std::cout<<"ESC"<<mode;
}

int main(void)
{
    //初始化GLFW庫
    if(!glfwInit())
        return -1;
    //創建窗口以及上下文
    GLFWwindow* window = glfwCreateWindow(640, 480, "hello world", NULL, NULL);
    if(!window)
    {
        //創建失敗會返回NULL
        glfwTerminate();
    }
    //建立當前窗口的上下文
    glfwMakeContextCurrent(window);

    glfwSetKeyCallback(window, key_callback); //注冊回調函數
    //循環,直到用戶關閉窗口
    while(!glfwWindowShouldClose(window))
    {
        /*******輪詢事件*******/
        glfwPollEvents();

        /*******渲染*******/
        //選擇清空的顏色RGBA
        glClearColor(0.2, 0.3, 0.3, 1);
        glClear(GL_COLOR_BUFFER_BIT);

        //開始畫一個三角形
        glBegin(GL_TRIANGLES);
        glColor3f(1, 0, 0); //Red
        glVertex3f(0, 1, 1);

        glColor3f(0, 1, 0); //Green
        glVertex3f(-1, -1, 0);

        glColor3f(0, 0, 1); //Blue
        glVertex3f(1, -1, 0);
        //結束一個畫圖步驟
        glEnd();

        glBegin(GL_POLYGON);
        //再畫個梯形,需要注意筆順
        glColor3f(0.5, 0.5, 0.5); //Grey
        glVertex2d(0.5, 0.5);
        glVertex2d(1, 1);
        glVertex2d(1, 0);
        glVertex2d(0.5, 0);
        glEnd();


        /******交換緩沖區,更新window上的內容******/
        glfwSwapBuffers(window);
    }
    glfwTerminate();
    return 0;
}

運行結果

再次成功!可以愉快地和隊友寫大程了~


免責聲明!

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



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