旧版OpenGL 与 新版OpenGL
分割线:OpenGL3.0。
3.0之前,所有OpenGL版本都与早期版本完全向后兼容。针对OpenGL 1.1编写的代码可以在OpenGL 2.1实现中很好地执行。
3.0,引入了废弃functionality的想法。许多OpenGL函数被声明为已弃用,这意味着用户应避免使用它们,因为它们可能会从更高版本的API中删除。
3.1,OpenGL 3.1删除了OpenGL 3.0中几乎弃用的所有功能。这包括固定功能管道。
但是,由于许多实现仍然支持那些不推荐使用和已删除的功能,因此某些实现希望能够为更高GL版本的用户提供一种访问旧API的方式。尝试了几种技术,最终将其分为core和compatibility上下文。
具体说就是,引入了新的扩展名ARB_compatibility。此扩展的存在向用户发出信号,表明已弃用或删除的功能仍然可以通过原始入口点和枚举使用。此种实现的行为由单独的,更大的OpenGL规范定义。因此,存在一个向后兼容的规范和一个非向后兼容的规范。(此时并不存在profile:core&compatibility,只是有这么一个规范)
3.2,OpenGL被分为core和compatibility两种配置文件(profile)。核心只需要一种实现来定义,所以并不能保证可获得compatibility。但是大多数实现中,compatibility配置文件是可获得的。
3.2还引入了新的上下文创建机制,可以返回不同版本的上下文。
旧版OpenGL:在2008年,发布了OpenGL规范的3.0版。在此修订版中,固定函数管道以及大多数相关的OpenGL函数和常量已声明为弃用。这些不推荐使用的元素和概念现在通常称为旧式OpenGL。
以上参考:
旧版OpenGL
OpenGL上下文
与此相关的问题:
1.在GLAD中,为什么没有glBegin?
把core切换成compatibility即可。
2.glBegin在哪个版本被废弃?
3.为什么新版OpenGL的core模式强制使用VAO?而VBO和IBO不能直接渲染?
The compatibility OpenGL profile makes VAO object 0 a default object. The core OpenGL profile makes VAO object 0 not an object at all. So if VAO 0 is bound in the core profile, you should not call any function that modifies VAO state. This includes binding the `GL_ELEMENT_ARRAY_BUFFER` with glBindBuffer.
参考:Vertex Specification
4.VAO出现在哪个版本?
3.0。可从API中查找函数glGenVertexArrays对应的版本号。
5.哪个版本强制使用了VAO?
3.2的core模式。
6.GLFW+GLAD,如何不使用VAO,而仅使用VBO和IBO进行渲染?
方法有二:
1)设置3.1及以前的版本。
2)设置3.2及以后的版本,并设置glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);向后兼容。
7.避免使用旧版OpenGL的原因。
参考:旧版OpenGL
8.自OpenGL 2.0以来的大多数硬件都缺少实际的固定功能硬件。而是使用系统构建的着色器模拟固定功能的过程。
参考:固定功能管道
9.固定渲染管线与立即渲染模式关系。
两者是一个东西。参考:核心模式与立即渲染模式
10.既然OpenGL 4.6 都出来了,为什么我们还要学习OpenGL 3.3?
所有OpenGL的更高的版本都是在3.3的基础上,引入了额外的功能,并没有改动核心架构。新版本只是引入了一些更有效率或更有用的方式去完成同样的功能。
详见核心模式与立即渲染模式
11.立即模式(immediate mode) 与 保留模式(retained-mode)。
参考:
What does “immediate mode” mean in OpenGL?
Immediate mode
Retained mode
旧版OpenGL 与 新版OpenGL相关推荐
- 微信7.0版本与旧版更新对比 新版微信7.0版更新了什么
微信7.0版本与旧版更新对比 新版微信7.0版更新了什么 微信发布了最新版微信7.0版本,变化比较大.微信7.0版更新了什么?微信7.0版本与旧版什么区别. 微信7.0版本更新了什么? 微信7.0版本 ...
- HIVE: 自定义TextInputFormat (旧版MapReduceAPI ok, 新版MapReduceAPI实现有BUG?)
我们的输入文件 hello0, 内容如下: xiaowang 28 shanghai@_@zhangsan 38 beijing@_@someone 100 unknown 逻辑上有3条记录, 它们以 ...
- 【Python】Windows:PyCharm 旧版卸载与新版安装汉化参考(专业版试用期/社区版)
目录 一.PyCharm 2019.1.2 旧版卸载 (1)旧版备份 (2)旧版卸载 (3)旧版安装文件删除 (4)hosts 文件修改 (5)旧版环境变量修改 (6)注册表删除 二.PyCharm ...
- [JIRA] 从3.6.2旧版升级到新版6.0.8的详细过程
前言: JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪.客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. 公司原来用的是JIRA 3.6.2版本, ...
- 计算机书籍旧版好还是新版好,新固件还不如老版本好用?教你如何禁止Kindle自动更新!...
新固件还不如老版本好用?教你如何禁止Kindle自动更新! 2020-02-21 21:35:41 2点赞 25收藏 1评论 固件更新是对Kindle的一次升级,一般来说,静读君是希望大家积极更新的, ...
- 图标出问题_同是Office365,为什么你的软件图标还是旧版的?
为什么你的office365套件最新版的图标还是旧版? 是新版图标还没向正式版用户推送吗? 我的office365的账号有问题吗? 难道是我打开的方式不对吗? 旧版图标 新版图标 打开产品信息一看你的 ...
- win10图标变白纸_同是Office365,为什么你的软件图标还是旧版的?
为什么你的office365套件最新版的图标还是旧版? 是新版图标还没向正式版用户推送吗? 我的office365的账号有问题吗? 难道是我打开的方式不对吗? 旧版图标 新版图标 打开产品信息一看你的 ...
- OpenGL 关于旧版glut和新版本glfw和glad的环境配置
目录 一.OpenGL的环境: 1.OpenGL 2.gult:OpenGL工具库 OpenGL Utility Toolkit 3.glew 4.glfw 5.glad(2018.9) 二.旧版本 ...
- 弹性盒模型--新版与旧版比较(2)
弹性空间与元素具体位置设置是加在子元素身上的 <style> body{ margin: 0; } #box{ height: 300px; border: 1px solid #000; ...
最新文章
- innerHTML outerHTML innerText
- Nmap参数--指纹识别探测
- 机器学习-Stacking方法的原理及实现
- Classes in JScript – Part III 类的继承与封装
- 前端学习(1109):函数的调用
- vue-resource安装
- 计算机是如何启动的?从未上电到操作系统启动
- f3arra1n3.4.1版本_Sysmon v11.1新版本功能测试报告
- Linux内核深入理解定时器和时间管理(1):硬件时钟和jiffies
- Microsoft Updater Application Block 1.2.1 核心设计(core design) [翻译]
- libstdc和glibc的一些共享库问题
- 为地图marker 设置网络图片
- Fast Global Registration
- windows自带截图工具快捷方法
- 网页设计基础(HTML)
- (前端)HTML之CSS(选择器字体排版背景)
- TikTok独立站推广教程
- Windows载图软件 FastStone Capturev9.6
- 算法题思路总结和leecode继续历程
- 杀人游戏-约瑟夫问题
热门文章
- 计算机专业英语词组,[计算机专业英语词组.doc
- windows 通过 Xshell 传文件到 Linux
- clipper运行以及使用——轻松一刻
- 史上最全Apidoc文档生成详解
- Python爬虫(上)
- 农行网上在线支付平台接口安装详解
- Python2 中文编码
- matlab图像压缩像素编码,基于DCT的图像压缩编码算法的MATLAB实现
- PHP中magic_quotes_gpc和magic_quotes_runtime的区别、作用和用法
- 科学计算机可以带上飞机吗,笔记本电脑可以随身带上飞机吗