简要来说,opengl、openglES、GLEW这三个都是一个图形库,可以理解为是在显卡驱动上给渲染用户一个统一的API;而GLUT、FreeGLUT、GLFW这三个是用于图形开发的辅助工具库,主要用于创建和管理OpenGL环境、操作窗口等。

1.1 OpenGL

OpenGL(Open Graphics Library)是一个跨语言,跨平台的应用程序接口,提供2D,3D图形渲染接口,操作在GPU之上,实现硬件加速渲染。OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。但是在你真正能够在程序中使用OpenGL之前,你需要对他进行初始化,但是由于OpenGL是跨平台的,所以也没有一个标准的方式进行初始化。OpenGL初始化分为两个阶段:

第一个阶段,你需要创建一个OpenGL上下文环境,这个上下文环境存储了所有与OpenGL相关的状态(OpenGL是一个状态机),上下文位于操作系统中某个进程中,一个进程可以创建多个上下文,每一个上下文都可以描绘一个不同的可视界面,就像应用程序中的窗口;简单来理解就是为了创建一个窗口;而GLUT、FreeGLUT、GLFW库就是用于干这件事的。

第二个阶段,你需要定位所有需要在OpenGL中使用的函数,而GLEW就是干这件事的。

1.2 GLEW

GLEW(The OpenGL Extension Wrangler Library )是一个基于OpenGL图形接口的跨平台的C++扩展库。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。取得地址的方法因平台而异,在Windows上会是类似这样:

// 定义函数原型
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// 找到正确的函数并赋值给函数指针
GL_GENBUFFERS glGenBuffers  = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// 现在函数可以被正常调用了
GLuint buffer;
glGenBuffers(1, &buffer);

​​​可以看到代码非常复杂,而且很繁琐,我们需要对每个可能使用的函数都要重复这个过程,而GLEW就简化了这个过程。GLEW能自动识别当前平台所支持的全部OpenGL高级扩展涵数。只要包含glew.h头文件,就能使用gl,glu,glext,wgl,glx的全部函数。GLEW支持目前流行的各种操作系统。

不过目前还有一个类似的最流行的库GLAD。

1.3 OpenGL ES

OpenGL ES(OpenGL for Embedded Systems)是 OpenGL 三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,各显卡制造商和系统制造商来实现这组 API。

2.1 GLUT

GLUT(OpenGL Utility Toolkit)是一个闭源、跨平台的工具库,只不过它已经很久没有更新了。它包括了以下常见的功能:

  • 定义以及控制视窗
  • 侦测并处理键盘及滑鼠的事件
  • 以一个函数呼叫绘制某些常用的立体图形,例如长方体、球、以及犹他茶壶(实心或只有骨架,如glutWireTeapot()
  • 提供了简单选单列的实现

2.2 FreeGLUT

FreeGLUT(Free OpenGL Utility Toolkit)是一个开源的、跨平台的工具库,相比于GLUT在经常更新。

2.3 GLFW

GLFW(Graphics Library Framework)是继GLUT,FreeGLUT之后,当前最新的用来创建OpenGL(ES)上下文,以及操作窗口的开源、跨平台、轻量化第三方库。

,,,其他:GLM是一个OpenGL的数学库

一文搞清楚opengl、openglES、GLEW、的关系GLUT、FreeGLUT、GLFW相关推荐

  1. GLUT, freeGLUT, GLFW, GLEW, GLAD 关系与区别

    GLUT:(来自百科)(OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O. 是专为构建中小型OpenGL程序.虽然GLUT是适合 ...

  2. OpenGL 各类库的解析 gl/glu/glut/freeglut/glfw/glew

    看了网上很多资料,讲的都不是很全,正好在学这一块,好好地总结一下吧 注:在windows中,对这些库的大小写是不作要求的 gl.h gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: ...

  3. OpenGL 各类库的解析gl glu glut freeglut glfw glew

    gl.h gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.0A\Include\gl ...

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

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

  5. 【显卡】一文搞懂显卡

    [显卡]一文搞懂显卡 文章目录 [显卡]一文搞懂显卡 1. 前言介绍 1.1 CPU和显卡的区别 1.1.1 作用不同 1.1.2 结构不同 1.1.3 应用场景不同 1.2 三个著名的显卡公司 2. ...

  6. 一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  7. php带参数单元测试_一文搞定单元测试核心概念

    基础概念 单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证,这里的最小可测试单元通常是指函数或者类.单元测试是即所谓的白盒测试,一般由开发人员负责测试,因为开发人员知道被 ...

  8. OpenGL开发学习指南一(freeglut+glew)

    今天花了几个小时倒腾了下OpenGL的环境配置,现在整理下,在这里记录下来,方便读者和自己,避免在安装环境配置出现一些不必要的麻烦 开发工具 1.VS2017 2.freeglut 大家可以直接在So ...

  9. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

最新文章

  1. pandas使用loc函数更新、修改dataframe指定数据行的内容(update or change the content of specific row of dataframe)
  2. java的AutoCloseable接口
  3. [软件推荐]使用OneNote来构建你自己的知识库(OFFICE2010)
  4. 如何将idea自带的maven添加到环境变量
  5. 1886. 判断矩阵经轮转后是否一致
  6. 大厂是如何甄别应聘者简历的包装程度的?
  7. vue实现搜索框记录搜索历史_云开发版的微信商城小程序第四章,首页自定义搜索框的实现...
  8. excel 单元格内换行
  9. flash 图片有描边 html,Flash遮罩制作线条逐渐显示的汽车轮廓动画效果
  10. [SC66 Android9.0]修改Android序列号
  11. 跑步c语言,小程序 跑步 记录跑步代码 记时间和位置更新
  12. github恢复误删除的文件
  13. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day4)
  14. C#使用iTextSharp打印PDF
  15. asp毕业设计——基于asp+access的会员管理系统设计与实现(毕业论文+程序源码)——会员管理系统
  16. 从面试官的角度聊聊培训班对程序员的帮助,同时给培训班出身的程序员一些建议...
  17. 山狮系统_苹果操作系统OSX10.8山狮/美洲狮Mountain Lion怎么安装
  18. PostgreSQL权限修改 : ALTER DEFAULT PRIVILEGES
  19. asp.net酒店餐饮管理系统
  20. datasheet下载网站整理(查IC芯片手册)

热门文章

  1. OCTA光学相干断层扫描血管成像
  2. (CSP2019·J T4)加工零件【spfa】【最短路】
  3. matlab snapnow,任意倾斜椭圆方程的画法.pdf
  4. 微信小程序01:关于错误Page pages/goods_list/index has not been registered yet.的原因
  5. centos 7.6 安装Netbackup 9.1
  6. 自定义输入框可一键清除
  7. 中国ACM橡胶市场调研与投资预测报告(2022版)
  8. WIN7 安装 SQL2000
  9. 【无标题】绝对定位的特点
  10. ScreenShot(Reproduced)