经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » OpenGL » 查看文章
Mac CLion下OpenGL环境配置
来源:cnblogs  作者:shayue111  时间:2019/3/29 9:04:45  对本文有异议

1. 配置glew和glfw

终端下运行下面两句,安装完后在/usr/local/Cellar/下可以找到对应的目录。

  1. brew install glew
  2. brew install glfw3

效果如下所示:
Mac Clion下OpenGL环境配置-截图1?

2. 配置glad

glad是为了简化开发而设计的,不是必须的,是一个function loader,在glad文件生成网站配置好,如下所示:
Mac Clion下OpenGL环境配置-截图2?

在右下角点击generate生成恰当的glad压缩文件,解压缩后将头文件放到/usr/local/include目录下(glad和KHR文件夹),将源文件拷贝到工程目录下,如下两图所示:
Mac Clion下OpenGL环境配置-截图3? Mac Clion下OpenGL环境配置-截图4?

3. 配置CMakeLists文件

下面是CMakeLists的详细配置:

  1. cmake_minimum_required(VERSION 3.12)
  2. project(OpenGL)
  3. set(CMAKE_CXX_STANDARD 14)
  4. set(GLEW_H /usr/local/Cellar/glew/2.1.0/include/GL)
  5. set(GLFW_H /usr/local/Cellar/glfw/3.2.1/include/GLFW)
  6. set(GLAD_H /usr/local/include/glad)
  7. set(KH_H /usr/local/include/KHR)
  8. include_directories(${GLEW_H} ${GLFW_H} ${GLAD_H} ${KH_H})
  9. # 添加目标链接
  10. set(GLEW_LINK /usr/local/Cellar/glew/2.1.0/lib/libGLEW.2.1.dylib)
  11. set(GLFW_LINK /usr/local/Cellar/glfw/3.2.1/lib/libglfw.3.dylib)
  12. link_libraries(${OPENGL} ${GLEW_LINK} ${GLFW_LINK})
  13. # 执行编译命令
  14. # 这个glad.c在第2步中说过要拉到项目中,注意路径
  15. set(SOURCE_FILES "src/glad.c" "main.cpp")
  16. add_executable(OpenGL ${SOURCE_FILES})
  17. # mac下这步很重要
  18. if (APPLE)
  19. target_link_libraries(OpenGL "-framework OpenGL")
  20. target_link_libraries(OpenGL "-framework GLUT")
  21. endif()

注意这样配置之后需要更改/usr/local/include/glad文件夹下的glad.h中的#include <KHR/khrplatform.h>更改为#include <khrplatform.h>,具体步骤:

  1. 在CLion中打开glad.c文件,command+点按#include <glad.h>会跳到glad.h
  2. 然后在glad.h中command+f找到#include <KHR/khrplatform.h>,将它改为#include <khrplatform.h>

如下所示:
Mac Clion下OpenGL环境配置-截图5? Mac Clion下OpenGL环境配置-截图5?

4. 运行测试代码

在main.cpp拷贝下面代码,如果能出现图示结果即为成功。
Mac Clion下OpenGL环境配置-截图6?

  1. #include <glew.h>
  2. #include <glfw3.h>
  3. #include <iostream>
  4. using namespace std;
  5. void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
  6. {
  7. //如果按下ESC,把windowShouldClose设置为True,外面的循环会关闭应用
  8. if(key==GLFW_KEY_ESCAPE && action == GLFW_PRESS)
  9. glfwSetWindowShouldClose(window, GL_TRUE);
  10. std::cout<<"ESC"<<mode;
  11. }
  12. int main(void)
  13. {
  14. //初始化GLFW库
  15. if(!glfwInit())
  16. return -1;
  17. //创建窗口以及上下文
  18. GLFWwindow* window = glfwCreateWindow(640, 480, "hello world", NULL, NULL);
  19. if(!window)
  20. {
  21. //创建失败会返回NULL
  22. glfwTerminate();
  23. }
  24. //建立当前窗口的上下文
  25. glfwMakeContextCurrent(window);
  26. glfwSetKeyCallback(window, key_callback); //注册回调函数
  27. //循环,直到用户关闭窗口
  28. while(!glfwWindowShouldClose(window))
  29. {
  30. /*******轮询事件*******/
  31. glfwPollEvents();
  32. /*******渲染*******/
  33. //选择清空的颜色RGBA
  34. glClearColor(0.2, 0.3, 0.3, 1);
  35. glClear(GL_COLOR_BUFFER_BIT);
  36. //开始画一个三角形
  37. glBegin(GL_TRIANGLES);
  38. glColor3f(1, 0, 0); //Red
  39. glVertex3f(0, 1, 1);
  40. glColor3f(0, 1, 0); //Green
  41. glVertex3f(-1, -1, 0);
  42. glColor3f(0, 0, 1); //Blue
  43. glVertex3f(1, -1, 0);
  44. //结束一个画图步骤
  45. glEnd();
  46. glBegin(GL_POLYGON);
  47. //再画个梯形,需要注意笔顺
  48. glColor3f(0.5, 0.5, 0.5); //Grey
  49. glVertex2d(0.5, 0.5);
  50. glVertex2d(1, 1);
  51. glVertex2d(1, 0);
  52. glVertex2d(0.5, 0);
  53. glEnd();
  54. /******交换缓冲区,更新window上的内容******/
  55. glfwSwapBuffers(window);
  56. }
  57. glfwTerminate();
  58. return 0;
  59. }

参考资料

http://www.stephenzhang.me/2018/02/06/MacOS%E4%B8%8BCLion%E9%85%8D%E7%BD%AEOpenGL%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/

原文链接:http://www.cnblogs.com/shayue/p/Mac-CLion-xiaOpenGL-huan-jing-pei-zhi.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号