首页 > 其他分享 >[CG从零开始] 2. 彻底弄清OpenGL 涉及的工具库

[CG从零开始] 2. 彻底弄清OpenGL 涉及的工具库

时间:2022-09-27 14:23:55浏览次数:47  
标签:API 操作系统 OpenGL glut CG 从零开始 GLUT 加载

1. 跨平台窗口管理

为了将 OpenGL 渲染的内容在操作系统的窗口中显示出来,我们不可避免的需要调用操作系统的 API 创建窗口、渲染上下文等等,每个操作系统的 API 都不一样,为了减少繁琐工作以及为了程序的可以移植性,有一些工具库帮助我们完成了这些事情,使得我们不需要和 native API 打交道。

1.1 glut

OpenGL Utility Toolkit (GLUT) 是一个用于 OpenGL 程序的实用程序库,主要执行与主机操作系统的系统级 I/O。执行的功能包括窗口定义、窗口控制以及键盘和鼠标输入的监控。还提供了用于绘制许多几何图元(实体和线框模式)的例程,包括立方体、球体和犹他茶壶。GLUT 对创建弹出菜单也有一些有限的支持。

GLUT 的两个目标是允许在操作系统之间创建相当可移植的代码(GLUT 是跨平台的)并使学习 OpenGL 更容易。在使用 GLUT 时开始使用 OpenGL 编程通常只需要几行代码,并且不需要了解操作系统特定的窗口 API。

1.2 freeglut

freeglut 可以认为是 glut 的替代品,glut 已经不在维护和更新了,已经太老了,而且 glut 的许可不许修改并发布,所以后面有了 freeglut,freeglut 支持的操作系统更加完善,而且不断在更新、维护。

1.3 glfw

GLFW 是一个开源的多平台库,用于桌面上的 OpenGL、OpenGL ES 和 Vulkan 开发。它提供了一个简单的 API,用于创建窗口、上下文和表面,接收输入和事件。GLFW 是用 C 语言编写的,支持 Windows、macOS、X11 和 Wayland。glfw 很年轻,而且很活跃在 github 已经有了 3.9k+ star, 可以来代替 glut 和 freeglut。

2. OpenGL 函数加载库

OpenGL 加载库是一个在运行时加载指向 OpenGL 函数、核心以及扩展的指针的库。这是在大多数平台上从 1.1 以上的 OpenGL 版本访问函数所必需的。扩展加载库还抽象出不同平台上加载机制之间的差异。

大多数扩展加载库不需要包含 gl.h。相反,它们提供了自己必须使用的头文件。大多数扩展加载库使用代码生成来构造加载函数指针和包含的头文件的代码。

运行时加载可以进行 fallback 机制,例如某个能力当前平台不支持,那么可以降级到另一个功能上。

2.1 glew

OpenGL Extension Wrangler Library (GLEW) 是一个跨平台的开源 C/C++ 扩展加载库。GLEW 提供了有效的运行时机制来确定目标平台支持哪些 OpenGL 扩展。OpenGL 核心和扩展功能在单个头文件中公开。GLEW 已经在各种操作系统上进行了测试,包括 Windows、Linux、Mac OS X、FreeBSD、Irix 和 Solaris。

2.2 glad

GLAD 继 GL3W,GLEW之后,是一个比较获取的函数加载库,提供在线生成服务,可以选择自己需要的能力。官方网址为https://glad.dav1d.de/

2.3 结论

作为实验、学习、能力验证等,使用 glfw + glad 即可满足需求。

标签:API,操作系统,OpenGL,glut,CG,从零开始,GLUT,加载
From: https://www.cnblogs.com/WAoyu/p/16734373.html

相关文章

  • JetBrains 码上道:从零开始,开发插件(官方抽IDEA免费许可, 站长将会讲半小时插件开发)
    IntelliJIDEA 作为开发者青睐的工具,不仅自身功能强大,同时也吸引了众多开发者在IntelliJ平台上创造各种各样的插件。这些插件高效且实用,都来自作者们对开发工作的深入......
  • Opengl ES之EBO
    前面我们介绍了VBO与VAO等缓冲对象,今天我们来介绍一下EBO。对于VBO或VAO可以查看之前的文章:OpenglES之VBO和VAOEBO是个啥EBO(ElementBufferObject,也叫IBO:IndexBuf......
  • Opengl ES之VBO和VAO
    前言本文主要介绍了什么是VBO/VAO,为什么需要使用VBO/VAO以及如何使用VBO和VAO。VBO什么是VBOVBO(vertexBufferObject):顶点缓冲对象。是在显卡存储空间中开辟的一块区......
  • [CG从零开始] 1. 安装 pyopengl
    因为只是为了验证原理和想法,实在不愿意折腾C++去编译、链接找库......,并且为了配合今后一系列关于CG的文章,决定用python的openglwrapper来进行实践,所以第一步就是......
  • typora 使用 picgo 配置 smms 图床
    0、准备预先注册好sm.ms,安装好nodejs,(git可选)1、正文smms图床的原域名不能直接访问,得换到备用域名smms.app,这个功能picgo的[v1.5.0-alpha.9]版本前后才有,npm......
  • JeecgBoot 3.4.2 版本发布,Vue3版本大升级
    项目介绍JeecgBoot是一款企业级的低代码平台!前后端分离架构SpringBoot2.x,SpringCloud,AntDesign&Vue,Mybatis-plus,Shiro,JWT支持微服务。强大的代码生成器让前后端代码一......
  • 【C++】从零开始的CS:GO逆向分析1——寻找偏移与基址的方法
    【C++】从零开始的CS:GO逆向分析1——寻找偏移与基址的方法 前言:此文章主要用于提供方法与思路,fps游戏基本都能如此找偏移,文章里找的偏移比较少,主要用来演示寻找思路,文......
  • ArcGIS 修改属性字段类型 字符串转数字
    https://www.docin.com/p-58631989.htmlhttps://support.esri.com/zh-cn/technical-article/000002287......
  • OpenGL+VS2022环境配置
    OpenGL+VS2022环境配置网上博客写的都什么玩意儿,配了半天终于配出来了。。。简单的很!新建文件夹新建一个文件夹,你可以命名为OpenGL,当然你也可以选你喜欢的名字。我这里......
  • 一些Arcgis操作
    多值提取至点https://desktop.arcgis.com/zh-cn/arcmap/latest/tools/spatial-analyst-toolbox/extract-multi-values-to-points.htm参数说明数据类型in_point_features......