文章目录

  • 0、 概念/准备
  • 1、VS+Opengl
    • 快速添加
    • 手动编译
  • 2、QT中使用opengl
    • 1.pro配置文件
    • 2.引入头文件 继承QGLWidget
    • 3.实现三个主要函数
  • 3、引用

0、 概念/准备

opengl官网地址

1、OpenGL 函数库相关的 API 有核心库(gl),实用库(glu),辅助库(aux)、实用工具库(glut),窗口库(glx、agl、wgl)和扩展函数库等。gl 是核心,glu 是对 gl 的部分封装。glx、agl、wgl 是针对不同窗口系统的函数。glut 是为跨平台的 OpenGL 程序的工具包,比aux 功能强大(aux 很大程度上已经被 glut 库取代)。扩展函数库是硬件厂商为实现硬件更新利用 OpenGL 的扩展机制开发的函数。
实际上windows系统默认是自带opengl32.lib已经包含在Microsoft SDK里了,它在Visual Studio安装的时候就默认安装了。由于这篇教程用的是VS编译器,并且是在Windows操作系统上,我们只需将opengl32.lib添加进连接器设置里就行了
2、在opengl官网详细说明安装平台支持主流的windows·、linux、Mac系统,在安装opengl之前首先保证电脑的GPU驱动是否是匹配的(渲染和速度会优化),当然没有GPU也是可以的。


1、VS+Opengl

这里的opengl实际包含两部分:窗口加载库+函数管理库
**窗口加载:**在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(Abstract)出去。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。
幸运的是,有一些库已经提供了我们所需的功能,其中一部分是特别针对OpenGL的。这些库节省了我们书写操作系统相关代码的时间,提供给我们一个窗口和上下文用来渲染。最流行的几个库有GLUT,SDL,SFML和GLFW。在教程里我们将使用GLFW。
GLFW 轻量级 lightweight 的 OpenGL 框架,的确是除了跨平台必要做的事情都没有做,所以一个头文件,很少量的 API,就完成了任务。glfw 的开发目的是用于替代 glut 的,从代码和功能上来看,我想它已经完全的完成了任务。它是一个轻量级的,开源的,跨平台的library。支持 OpenGL 及 OpenGL ES,用来管理窗口,读取输入,处理事件等。
函数管理:OpenGL 只是一个标准/规范,具体的实现是驱动开发商针对特定显卡实现的。由于 OpenGL 驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。这个过程非常复杂,而且很繁琐,需要对每个可能使用的函数都要重复这个过程。幸运的是,有些库能简化此过程。现在主要用glew和gad
glew:glut 或者 freegult 主要是 OpenGL 1.0 的基本函数功能,glew 是使用 OpenGL 2.0 之后的一个工具函数。
不同的显卡公司会发布一些只有自家显卡才支持的扩展函数,要想用这数涵数,不得不去寻找最新的 glext.h,有了 glew 扩展库,就再也不用为找不到函数的接口而烦恼,因为 glew 能自动识别你的平台所支持的全部 OpenGL 高级扩展函数。也就是说,只要包含一个 glew.h 头文件,你就能使用 gl,glu,glext,wgl,glx 的全部函数。
glew 支持目前流行的各种操作系统,但有一个缺陷是它并没有提供一种方式可以屏蔽 OpenGL 旧函数的调用,尽管可以使用 Core profile 的方式,但是代码中仍然存在 glVetex、glBegin 这样固定管线 OpenGL 的函数调用(虽然它们在 Core Profile 模式下没有任何作用),看起来不那么统一。要做到这一点可以使用下面的 glad。

glad 是继 gl3w,glew 之后,当前最新的用来访问 OpenGL 规范接口的第三方库。简单说glad 是 glew 的升级版。
glad 是一个开源的库,它的配置与大多数的开源库有些许的不同,glad 使用了一个在线服务。在这里能够指定 glad 需要定义的 OpenGL 版本,并且根据这个版本加载所有相关的OpenGL 函数。这样做让 glad.h 中仅仅只包含我们想要的头文件,例如在设置 3.3 + Core Profile 版本之后,可以严格控制头文件中只有这些内容,所以凡是代码中有 OpenGL 旧函数的调用都会在编译的时候给出错误提示。

  • 所以在这里最好选择GLFW +GLEW(最好都是32位,据说64位问题多)或者GLFW +GLAD(推荐)

快速添加

官网有编译好的库文件,可以直接下载,在工程中引用
即可:
GLFW下载链接
GLEW下载链接
GLAD下载地址

手动编译

在上面网站都支持源码下载,其实可以根据工程的需要+Cmake或者用VS去编译适合自己的的库文件(不具体展示)

通过上述的方法,将得到的dll和lib或者.so因为opengl支持主流的windows·、linux、Mac系统

#include <glad/glad.h>
#include <GLFW/glfw3.h>

2、QT中使用opengl

如果厌倦了繁琐的配置和版本兼容问题,那么使用QT来开发再好不过。Qt是一个非常强大的应用程序开发框架,它自己提供了OpenGL的模块,不需要配置环境即可直接使用,其次对GLSL也有支持。
主要流程:

1.pro配置文件

QT       += opengl
#最好包含
LIBS += -lopengl32 \-lglu32 \

2.引入头文件 继承QGLWidget

代码如下(示例):

#include<QtOpenGL/qgl.h>
#include<GL/gl.h>
#include<GL/glu.h>

3.实现三个主要函数

    void initializeGL();void resizeGL(int w, int h);void paintGL();

最后运行效果


工程连接


3、引用

1、【由浅入深OpenGL】一:Visual Studio下搭建OpenGL开发环境
2、OpenGL 库介绍和开发环境搭建


OPengl学习(二)——opengl环境搭建相关推荐

  1. 深度学习(二)theano学习笔记(1)环境搭建

    theano学习笔记(1)环境搭建 原文地址:http://blog.csdn.net/hjimce/article/details/46654229 作者:hjimce 搭建theano实属不易,因 ...

  2. 深度学习之tensorflow环境搭建

    深度学习之tensorflow环境搭建: 1.搭建的步骤 1-1.破解版的Pycharm软件包下载 1-2.Ananconda软件包的下载 1-3.使用Anaconda Prompt 命令,首先输入 ...

  3. JEESITE快速开发平台(二)环境搭建

    一.下载源码 下载地址: GitHub:https://github.com/thinkgem/jeesite 开源中国:http://git.oschina.net/thinkgem/jeesite ...

  4. Go学习笔记_环境搭建

    Go学习笔记_环境搭建 Go背景知识 go的特点(官网): Build fast, reliable, and efficient software at scale- Go is an open s ...

  5. 搭建webassembly网页播放器(二)---emcc环境搭建

    emcc全称 emscripten,最重要的功能就是让网页js调用c/c++ 成为可能,是我们基于webassembly搭建网页播放器必须依赖的编译工具. emcc官网的搭建教程较为简单,安装过程中最 ...

  6. 《OpenGL超级宝典》环境搭建

    系统环境 Windows 7 64位 Visual Studio 2010 盗版旗舰 参考文档: OPENGL VS2012环境搭建之FreeGlut OPENGL VS2012环境搭建之Glew O ...

  7. 无线学习:srsRAN环境搭建【无线学习笔记二】

    srsRAN 环境搭建: 文档上的一句话:装上之后找配置文件可以从这里找: By default, all applications will search for confifig fifiles ...

  8. 模拟器真机环境_Appium+python自动化(二)- 环境搭建—下(超详解)

    上一篇android测试开发环境已经准备好, 那么接下来就是appium的环境安装和搭建了. 菲哥和小伙伴们开个玩笑,不要觉得自人品不好,就不会成功那都是骗人的.搭建环境和人品半毛钱关系也没有,搭建环 ...

  9. 怎么装python的keras库_matlab调用keras深度学习模型(环境搭建)

    matlab没有直接调用tensorflow模型的接口,但是有调用keras模型的接口,而keras又是tensorflow的高级封装版本,所以就研究一下这个--可以将model-based方法和le ...

  10. Django学习笔记 开发环境搭建

    为什么使用django? 1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率. 2.大量内置应用:后台管理系 ...

最新文章

  1. JUC之CountDownLatch的源码和使用场景分析
  2. sysenter Hook
  3. 如何导入pytorch包_PyTorch 目前的运行途径
  4. MIUI 10 Android 原生字体,[教程] MIUI10全局字体替换教程,了解一下?
  5. 简明Python教程学习笔记_5_解决问题
  6. ubuntu 破解mysql密码_Ubuntu下忘记MySQL root密码解决方法
  7. Golang笔记——单元测试
  8. 电子计算机专业211大学,这所高校不是211,但“计算机”实力远超985,被称“IT人才摇篮”...
  9. linux debian硬盘安装,Debian硬盘安装方法
  10. php爬虫大数据抓取_爬虫软件介绍?大数据抓取软件?
  11. 五年级上册计算机工作总结,五年级上册数学教学工作总结
  12. [IDE]webstorm安装并配置sass踩坑(windwos)
  13. win10刚安装linux黑屏,win10 + Ubuntu18.04 双系统,UEFI+GPT,从win10切换到Ubuntu时黑屏问题...
  14. 织梦ajax登录界面,dede织梦后台登陆成功后又跳转到登陆页面
  15. laravel实现文件下载功能
  16. radio选中触发事件以及获取选中的值
  17. 怎样用计算机打出Abc,妙用智能ABC输入法 -电脑资料
  18. 全自动过滤型射频水处理器工作原理
  19. vue项目如何减少app.js和vender.js的体积
  20. 【安全资讯】Chrome 的网络钓鱼检测速度提高近 50 倍

热门文章

  1. 万向节死锁的简易理解
  2. NetAlly网络测试仪
  3. iOS冰与火之歌番外篇 - App Hook答疑以及iOS 9砸壳
  4. ASP.NET CORE[练习8]-Identity-用户角色、给用户分配角色、角色校验
  5. 基于FPGA的频率计
  6. 【无标题】基于51单片机和DHT11的温湿度检测系统
  7. tensorflow学习笔记-bili莫烦
  8. 游戏服务器技能系统,MMORPG游戏服务器技能系统设计【上篇】 - 踏踏实实,认真工作 - CSDN博客...
  9. 让后台Stopped的进程继续运行
  10. 蒂特ft232_[经验分享] 最近调试FT232H遇到的坑