美文网首页计算机图形学
macOS下使用Clion写OpenGL

macOS下使用Clion写OpenGL

作者: CharleyChai | 来源:发表于2019-03-07 08:23 被阅读0次

    工具环境

    • macOS Mojave
    • Clion

    配置过程

    1. 下载glew/glfw

    brew install glew
    brew install glfw
    

    2. 配置Clion的CMakeLists.txt

    我的配置为:

    cmake_minimum_required(VERSION 3.9)
    project(test)
    
    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(test ${SOURCE_FILES})
    
    if (APPLE)
        target_link_libraries(test "-framework OpenGL")
        target_link_libraries(test "-framework GLUT")
    endif()
    

    注意,其中的test是我的项目名,你需要改成自己的。
    在配置完成后,我们加载cmake之后,可以看到在External Libraties/Header Search Paths目录下有了GLGLFW两个新目录。

    项目结构

    3. 测试

    测试代码为

    #include <iostream>
    #include <glew.h>
    #include <glfw3.h>
    
    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()
    {
        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();
    
            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;
    }
    

    结果为:


    测试结果

    参考

    相关文章

      网友评论

        本文标题:macOS下使用Clion写OpenGL

        本文链接:https://www.haomeiwen.com/subject/eorqpqtx.html