CLion配置OpenGL
CLion+MinGW3.20环境下配置OpenGL
这个环境配置竟然配置了两天,,在网上找了很多方法都是不行。。应该是能力不够。。。整合了几篇的内容,又一次尝试还是失败,最后脑子一抽,在CMake文件中添加了一句话就OK了。。
不说废话了
CLion的中我是用的是MinGW,CLion中配置MinGW我就不说了,网上都有很简单的!
MinGw的Include文件夹中本就包含一个GL文件夹。
1. 首先下载freeglut https://www.transmissionzero.co.uk/software/freeglut-devel/
选择for mingw版本的
2. 打开压缩包,里面有bin,include,lib三个文件夹
a、将压缩包/include/GL中的文件拷贝到mingw/include/GL文件夹下
b、64位机的话将压缩包/lib/x64中的.a文件拷贝到mingw/lib文件夹下,32位机的话应该拷的是压缩包/lib中的两个.a文件
c、64位机把压缩包/bin/x64里的文件拷贝到C://Windows//SysWOW64下,32位机压缩包/bin下文件到C://Windows//System32下(c步骤不知道有没有用。。。。。。)
3. 新建CLion工程,修改CMake文件
cmake_minimum_required(VERSION 3.9) project(OpenGL_3) link_directories("C:/Program Files/MinGW/lib") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D FREEGLUT_STATIC") add_executable(OpenGL_3 main.cpp) target_link_libraries(OpenGL_3 freeglut_static opengl32 winmm gdi32 glu32.lib)主要是第四行那句
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D FREEGLUT_STATIC")
其中OpenGL_3是我的项目名
然后在main.cpp中编写就ok啦
附上一个我的一个测试代码。。
#include <GL/glut.h> #include <stdio.h> void ChangeSize(GLsizei w,GLsizei h){ if(w<1) w=1; if(h<1) h=1; printf("%d %d\n",w,h); glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(w<=h) glOrtho(-30.0,30.0,-30.0*(GLfloat)h/(GLfloat)w,30.0*(GLfloat)h/(GLfloat)w,-50.0,50.0); else glOrtho(-30.0*(GLfloat)w/(GLfloat)h,30.0*(GLfloat)w/(GLfloat)h,-30.0,30.0,-50.0,50.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void DrawMyObjects() { //画四边形 glBegin(GL_QUADS); glColor3f(0.7,0.5,0.2); glVertex2f(-7,-3); glVertex2f(-5.5,-1); glVertex2f(-1,-0.5); glVertex2f(-1,-4); glColor3f(0.5,0.7,0.2); glVertex2f(2,-6.25); glVertex2f(2.5,-1); glVertex2f(6.5,1); glVertex2f(4.5,-6.25); glEnd(); } void RenderScene() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,1.0,0.0); DrawMyObjects(); glFlush(); } int main(int argc, char *argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(600,600); glutCreateWindow("My first"); glClearColor(0.51,0.51,0.51,0.5); glutReshapeFunc(ChangeSize); glutDisplayFunc(RenderScene); glutMainLoop(); return 0; }
运行结果