VS2017+OpenGL环境的配置(固定管线+可编程管线)

OpenGL的环境配置了好几次都没有成功。

今天,终于试好了,于是分享出来,让其他人能少走弯路。

OpenGL 已经发展到可编程管线了,下面我就来说说 新版OpenGL 旧版本的OpenGL 组装的办法!

我的工具是VS2017

【旧版本 固定管线 也是资料最多的OpenGL】

1.方法(下载各种库文件)

下载OpenGL的所需要的文件

http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip

然后得到5个文件:

glut.dll glut32.dll glut.lib glut32.lib glut.h

找到目录..\VC\Tools\MSVC\14.10.25017\include\gl(没有的话就建立一个)。 将glut.h放到里面。

找到目录..\VC\Tools\MSVC\14.10.25017\lib\x86  将glut.lib,glut32.lib放到里面。
最后把glut.dll和glut32.dll放到
C:\Windows\system32文件夹内(32位系统)或‪C:\Windows\SysWOW64(64位系统)

2.方法(使用VS的插件)

打开vs创建一个C++项目(Win32控制台-空白项目)

然后点击 项目—管理Nuget程序包

然后点击浏览在搜索栏输入NupenGL

然后安装(如果有两个就安装两个)

------------------------------------------------------

最后测试一下:

[plain] view plain copy
  1. #include <GL/glut.h>  
  2. void Show()  
  3. {  
  4.     glClear(GL_COLOR_BUFFER_BIT);  
  5.     glRectf(-0.1f, -0.1f, 0.5f, 0.5f);  
  6.     glFlush();  
  7. }  
  8.   
  9. int main(int argc, char *argv[])  
  10. {  
  11.     glutInit(&argc, argv);  
  12.     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);  
  13.     glutInitWindowPosition(100, 100);  
  14.     glutInitWindowSize(400, 400);  
  15.     glutCreateWindow("OpenGL");  
  16.     glutDisplayFunc(Show);  
  17.     glutMainLoop();  
  18.     return 0;  
  19. }  

运行就会看到一个白色的正方形

VS2017+OpenGL环境的配置(固定管线+可编程管线)

我VS使用的字体是 汉趣雅黑W  大小25

【新版本 可编程管线】

 下载GLFW(管理窗口)

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

VS2017+OpenGL环境的配置(固定管线+可编程管线)在这里我们选择编译好的版本 想自己编译的朋友可以下载 Source package(用CMake)

VS2017+OpenGL环境的配置(固定管线+可编程管线)


我们选择32-bit,这里不是按照电脑来选的,是按照vs里面的

VS2017+OpenGL环境的配置(固定管线+可编程管线)

x86就是32位的

VS2017+OpenGL环境的配置(固定管线+可编程管线)

然后打开项目的文件目录

VS2017+OpenGL环境的配置(固定管线+可编程管线)

建立文件夹

Includes 

Libs

这个两个名字后面要用的

VS2017+OpenGL环境的配置(固定管线+可编程管线)

解压刚才下好的glfw压缩包

VS2017+OpenGL环境的配置(固定管线+可编程管线)

把../include/GLFW/中的glfw3.h复制到我们刚创建好的Inlcudes文件夹中

VS2017+OpenGL环境的配置(固定管线+可编程管线)

同理把vc2015中的glfw3.lib放到Libs文件夹中

VS2017+OpenGL环境的配置(固定管线+可编程管线)

打开vs设置项目属性

VS2017+OpenGL环境的配置(固定管线+可编程管线)

如果你的文件夹层级结构和名字和我的一样就这样写,不一样就要调整路径。


打开属性-C/C++ 改成这样

然后链接器-输入

VS2017+OpenGL环境的配置(固定管线+可编程管线)



然后我们要下载GLAD(使用OpenGL函数)

http://glad.dav1d.de/

VS2017+OpenGL环境的配置(固定管线+可编程管线)


选择成这个样子,然后点击CENRATE

VS2017+OpenGL环境的配置(固定管线+可编程管线)

选中最后的压缩包下载,打开压缩包,把include中所有的文件复制到我们的Includes

VS2017+OpenGL环境的配置(固定管线+可编程管线)

把src中的文件复制到这

VS2017+OpenGL环境的配置(固定管线+可编程管线)

回到VS,把glad.c添加到工程中

VS2017+OpenGL环境的配置(固定管线+可编程管线)

输入以下代码:

[cpp] view plain copy
  1. #include "Includes\glad\glad.h"  
  2. #include "Includes\glfw3.h"  
  3. #include <iostream>  
  4.   
  5. int main()  
  6. {  
  7.     
  8.     glfwInit();  
  9.     glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);  
  10.     glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);  
  11.     glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);  
  12.     GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGLShader", NULL, NULL);  
  13.     if (window == NULL)  
  14.     {  
  15.         std::cout << "创建窗口失败" << std::endl;  
  16.         glfwTerminate();  
  17.         return -1;  
  18.     }  
  19.     glfwMakeContextCurrent(window);  
  20.      
  21.     if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))  
  22.     {  
  23.         std::cout << "初始化GLAD失败" << std::endl;  
  24.         return -1;  
  25.     }      
  26.     while (!glfwWindowShouldClose(window))  
  27.     {  
  28.         glfwSwapBuffers(window);  
  29.         glfwPollEvents();  
  30.     }  
  31.     glfwTerminate();  
  32.     return 0;  
  33. }  

生成一下

有的朋友可能生成成功,成功了最好。

如果有的小伙伴出现这种情况

VS2017+OpenGL环境的配置(固定管线+可编程管线)

不用担心,不会有影响,在意的小伙伴 百度搜一下这个问题,很好解决

然后我们运行一下Ok出现这个窗口就成功了

VS2017+OpenGL环境的配置(固定管线+可编程管线)

--------------------------------------------------------------------------------------

【小知识:查看自己OpenGL 的版本(固定管线)】

[cpp] view plain copy
  1. #include<Windows.h>    
  2. #include <iostream>    
  3. #include <GL/glut.h>    
  4. using namespace std;  
  5. int main(int argc, char** argv)    
  6. {    
  7.     glutInit(&argc, argv);    
  8.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);    
  9.     glutInitWindowSize(300, 300);    
  10.     glutInitWindowPosition(100, 100);    
  11.     glutCreateWindow("OpenGL Version");    
  12.   
  13.     cout<<"OpenGL版本号"<<glGetString(GL_VERSION)<<endl;    
  14.     system("pause");    
  15.     return 0;    
  16. }    

最后,希望大家多多关注我的OpenGL系列。