目录

一.OpenGL的环境:

1.OpenGL

2.gult:OpenGL工具库 OpenGL Utility Toolkit

3.glew

4.glfw

5.glad(2018.9)

二.旧版本 glut的安装方法 (资料最多的OpenGL,跳过此步骤即可,这里只是为了记录)

1.方法

2.使用VS的插件

三.新版本 glfw和glad的安装

1.下载glfw(管理窗口)和glad

2.打开vs,创建新的空白工程

3.添加cpp

4.OpenGL属性

5.glad文件

6.运行测试代码

7.警告解决办法


在初学一讲了写基本概念,之后红宝书直接放上了代码,所以我这里先配置一下OpenGL的环境。

首先介绍下OpenGL环境的演变:

一.OpenGL的环境:

1.OpenGL

OpenGL函数库相关的API有核心库(gl),实用库(glu),辅助库(aux)、实用工具库(glut),窗口库(glx、agl、wgl)和扩展函数库等。gl是核心,glu是对gl的部分封装。glx、agl、wgl 是针对不同窗口系统的函数。glut是为跨平台的OpenGL程序的工具包,比aux功能强大(aux很大程度上已经被glut库取代。)。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。

2.gult:OpenGL工具库 OpenGL Utility Toolkit

glut是实用工具库,基本上是用于做窗口界面的,并且是跨平台。这部分函数以glut开头,主要包括窗口操作函数,窗口初始化、窗口大小、窗口位置等函数;回调函数:响应刷新消息、键盘消息、鼠标消息、定时器函数等;创建复杂的三维物体;菜单函数;程序运行函数。gult对应的开源实现是freegult。

GLUT库下载地址:http://www.transmissionzero.co.uk/software/freeglut-devel/

3.glew

glut 或者 freegult 主要是1.0的基本函数功能;glew是使用OpenGL2.0之后的一个工具函数。

不同的显卡公司,也会发布一些只有自家显卡才支 持的扩展函数,你要想用这函数,不得不去寻找最新的glew.h,有了glew扩展库,你就再也不用为找不到函数的接口而烦恼,因为glew能自动识别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全部函数。(这里需要注意,glew并不包括glut)

GLEW库下载地址:http://glew.sourceforge.net/

4.glfw

glfw 无愧于其号称的 lightweight 的OpenGL框架,的确是除了跨平台必要做的事情都没有做,所以一个头文件,很少量的API,就完成了任务。glfw 的开发目的是用于替代 glut 的,从代码和功能上来看,我想它已经完全的完成了任务。

一个轻量级的,开源的,跨平台的library。支持OpenGL及OpenGL ES,用来管理窗口,读取输入,处理事件等。因为OpenGL没有窗口管理的功能,所以很多热心的人写了工具来支持这些功能,比如早期的glut,现在的freeglut等。

那么 glfw 有何优势呢?glut太老了,最后一个版本还是90年代的。freeglut完全兼容glut,算是glut的代替品,功能齐全,但是bug太多。稳定性也不好(不是我说的啊),glfw应运而生。

5.glad(2018.9)

glad与glew相比,简单说glad是glew的升级版。用哪个都行。就是glew比较老,glad比较新。

所以综上所述,我们需要安装的就是 glad+glfw

我使用的是VS2017,以下主要讲解组装的办法。

首先:

二.旧版本 glut的安装方法 (资料最多的OpenGL,跳过此步骤即可,这里只是为了记录)

1.方法

下载OpenGL的所需要的文件

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

然后得到5个文件:

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

然后:

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

2.找到目录..\VC\Tools\MSVC\14.10.25017\lib\x86  将glut.lib,glut32.lib放到里面。

3.最后把glut.dll和glut32.dll放到C:\Windows\system32文件夹内(电脑32位系统)或‪C:\Windows\SysWOW64(电脑64位系统)。

2.使用VS的插件

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

然后点击 项目—管理Nuget程序包(若没有找到项目底下的这个选项,请点击这里)

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

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

装完后测试一下,输入以下代码

  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. int main(int argc, char *argv[])

  9. {

  10. glutInit(&argc, argv);

  11. glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

  12. glutInitWindowPosition(100, 100);

  13. glutInitWindowSize(400, 400);

  14. glutCreateWindow("OpenGL");

  15. glutDisplayFunc(Show);

  16. glutMainLoop();

  17. return 0;

  18. }

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

三.新版本 glfw和glad的安装

1.下载glfw(管理窗口)和glad

首先是glfw

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

在这里我们选择编译好的版本 想自己编译的朋友可以下载 Source package(用CMake)

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

x86就是32位的

其次是glad

glad有一个在线服务,直接下下来就可以用了(编译好的),将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL版本(3.3是可编程管线版本,但更新的版本也能正常工作)。之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。现在可以先(暂时)忽略拓展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。

下载是个压缩文件。

压缩文件里包含两个头文件目录(内有头文件glad.h和khrplatform.h),和一个src文件夹下的glad.c文件。

然后我们把这下载好的两个文件夹移到某个文件下。

2.打开vs,创建新的空白工程

注:如果新建Windows控制台应用程序,程序内部会自动包含stdafx.h的头文件,你必须在源文件的开头写上“#include“stdafx.h”相关语句,而且之后引入glew,glfw包会有莫名其妙的错误。所以创建一个空项目。

3.添加cpp

点击“解决方案资源管理器”,右键点击源文件,添加新项,创建.cpp源文件,输入代码,正常的代码即可。(我这里加了一个graphics.cpp)

4.OpenGL属性

右键点击项目,在弹出的选项中,单击 “属性”。

点击“VC++目录”,第二步会有下拉列表,单击“编辑”

点击添加头文件。分别添加下载的glad和glfw文件夹下的include文件夹(include文件夹下是我们需要的头文件),点击“确定”

同样的道理,加入库文件。(库文件和头文件是相辅相成的),对应的路径就是glfw文件夹下的lib文件夹(glad不需要

注:当添加glfw时,低版本请选择对应版本,2015以上版本请选择“lib-vc2015”

之后包含的库文件VS还认不出来,我们需要指定一下。配置链接器。

点击“编辑”后输入如下:

  1. opengl32.lib

  2. glfw3.lib

注:行与行之间请按回车,opengl32.lib是系统自带的。

点击确定

5.glad文件

将glad.c文件复制到源文件夹下,直接复制,然后右击源文件夹粘贴即可。

至此OpenGL的环境就初步配好了

6.运行测试代码

在之前的cpp中添加如下代码:(初始化一个Opengl窗口)

  1. #include <glad/glad.h>

  2. #include <GLFW/glfw3.h>

  3. #include <iostream>

  4. const unsigned int SCR_WIDTH = 800;

  5. const unsigned int SCR_HEIGHT = 600;

  6. int main()

  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(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);

  13. if (window == NULL)

  14. {

  15. std::cout << "Failed to create GLFW window" << std::endl;

  16. glfwTerminate();

  17. return -1;

  18. }

  19. glfwMakeContextCurrent(window);

  20. if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))

  21. {

  22. std::cout << "Failed to initialize GLAD" << std::endl;

  23. return -1;

  24. }

  25. while (!glfwWindowShouldClose(window))

  26. {

  27. glClearColor(0.2f, 0.3f, 0.3f, 1.0f);

  28. glClear(GL_COLOR_BUFFER_BIT);

  29. glfwSwapBuffers(window);

  30. glfwPollEvents();

  31. }

  32. glfwTerminate();

  33. return 0;

  34. }

点击“运行”,成功初始化了一个OpenGL的窗口

但是,当我们关掉程序回到“错误列表”中会发现警告LNK4098默认库“MSVCRT”与其他库的使用冲突;

请使用 /NODEFAULTLIB:libraryOpenC:\Users\g1018\source\repos\Open\Open\LINK1

解决方法如下。

7.警告解决办法

把之前的链接器的那个页面调出来。

点击“编辑”,输入如下:

MSVCRT.lib

点击“确定”。注:如果往后还有库冲突,解决方法同理。

至此,环境已经搭建完成。

参考网址:

https://blog.csdn.net/AvatarForTest/article/details/79199807

https://blog.csdn.net/qq_19003345/article/details/76098781

OpenGL 关于旧版glut和新版本glfw和glad的环境配置相关推荐

  1. OpenGL与gl glu glut freeglut glew glfw封装库关系(十五)

    1.概述     初学者往往搞不明白OpenGL与诸多库的联系下面一张图帮理清楚,gl glu glut freeglut glew glfw都是对OpenGL的封装而已.这些库已经将OpenGL.E ...

  2. Java程序设计(Java9版):第1章 Java开发环境配置 (Set up Java development environment)

    第1章Java开发环境配置(Set up Java development environment) 工欲善其事,必先利其器. - <论语·卫灵公> Write once, run any ...

  3. 【OpenGl】openGL 诸多库之间关系 及 环境配置

    [OpenGl]openGL 诸多库之间关系 及 环境配置 最近一直在学习OpenGL,但是看OpenGL编程指南不同版本之间使用一堆不同的库,概念名称全都混搅起来了,越看越糊涂,于是整理了一下Ope ...

  4. 树莓派Raspberry Pico RP2040 开发环境配置完全缝合终极版C-SDK

    树莓派Raspberry Pico RP2040 开发环境配置骨灰版 总览目录 树莓派Raspberry Pico RP2040 开发环境配置骨灰版 前置说明 0.1 关于调试使用的Debugger ...

  5. 旧版OpenGL 与 新版OpenGL

    分割线:OpenGL3.0. 3.0之前,所有OpenGL版本都与早期版本完全向后兼容.针对OpenGL 1.1编写的代码可以在OpenGL 2.1实现中很好地执行. 3.0,引入了废弃functio ...

  6. opengl库区分:glut、freeglut、glfw、glew、gl3w、glad

    opengl原生库 gl* 随opengl一起发布 opengl实用库 glu* 随opengl一起发布 opengl实用工具库glut glut* 需要下载配置安装(太老了!) opengl实用工具 ...

  7. OpenGL学习笔记之三 OpenGL开发环境之GLFW与GLAD配置

    内容来源:LearnOpenGL CN 前言 在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口.然而,这些操作在每个系统上都是不一样的,Open ...

  8. 的app抓包 ssl_抓包旧版App

    准备软件 今天早些时候有一些开发者发现,苹果悄然发布了iOS 14 Developer Beta开发者预览升级的描述文件,不过最后时刻官方撤回了这个文件,防止新系统提前泄露. 正当开发者想要第一时间升 ...

  9. 钉钉老版本下载3.31_钉钉旧版pc下载-钉钉旧版pc客户端下载-西西软件下载

    钉钉旧版pc版客户端是为了大家需要准备的,不习惯使用新版本的新版本的小伙伴们,想要使用旧版本的,小编就给大家提供旧版本的软件,让小伙伴们可以放心的进行使用,还等什么,赶紧试试吧. 软件介绍: 钉钉,是 ...

最新文章

  1. uva-10954-贪心
  2. 硬链接和软链接使用,以及区别
  3. optee的异常向量表-(irq,fiq,svc...)
  4. vector函数python_Smooth Support Vector Regression - Python实现
  5. 安装完Oracle数据库之后设置手动启动方法
  6. Win32多线程编程(2) — 线程控制
  7. 五分钟用vue实现一个五星打分效果
  8. 关于DataAdapter打开和关闭连接
  9. 图解:为什么非公平锁的性能更高?
  10. Volume group VolGroup00 not found
  11. 十年程序员将Python分成7个阶段学习,你会发现Python真的很简单
  12. 情人节海报psd分层模板|好的图层,任你选择
  13. 卷积神经网络——第一周 卷积神经网络基础——第一部分
  14. [design decision] user awareness: 自动安装还是不自动安装?
  15. Python爬取王者荣耀手游中的游戏英雄角色
  16. 华为云微认证答题_华为云微认证
  17. macfee怎么生成释放代码_mcafee规则设置技巧
  18. Android 开发佳站3
  19. PLSQL的快捷键以及使用技巧
  20. 项目使用jdk17人傻了

热门文章

  1. html5和响应式,35个响应式HTML5和CSS3模版
  2. php 预处理原理,PHP的PDO对象预处理的2种实现方法,实现原理详解
  3. 服务器运行环境怎么搭建,服务器运行环境怎么快速搭建?
  4. linux开发板蓝牙连接,开发板蓝牙通信问题,有这方面经验的请进
  5. Visual Studio查找搜索类和方法的快捷方法
  6. java list循环中删除元素的坑
  7. Git++ - 有趣的命令
  8. 虚拟化的发展历程和实现原理——图文详解
  9. 程序员面试题精选100题(61)-数对之差的最大值[算法]
  10. [BetterExplained]如何有效地记忆与学习