opengl 3和opengl 4之间的区别


10

我刚刚开始游戏编程,我想开始学习opengl。我从头开始发现了一个非常好的入门教程,而我想知道openGL 3和openGl 4之间是否有很大的区别。或者我应该问一下,openGL 4是否会使openGL 3过时,或者我可以以openGL 3,然后可以移至openGL 4了吗?

Answers:


12

首先,我将链接到有关OpenGL版本工作方式的说明。简而言之,OpenGL(通常)是向后兼容的,因此所有GL 3代码在GL 4实现上都可以正常工作。

OpenGL版本的4.x系列代表您可以称为“ Direct3D 11”级硬件的东西。它公开了该硬件的功能。D3D10硬件由OpenGL的3.x版本表示。因此,“转向openGL 4”意味着放弃较低的硬件,或拥有多种渲染途径。

4.2规范中可以找到3.3和4.2之间的实际功能更改的详细分类。请注意,许多功能(separate_shader_objects,shading_language_420pack,texture_storage)不限于4.x硬件;它们是API的更改,您可以通过扩展程序在3.x硬件上进行访问。

最突出的问题是:GL 4.x允许我做什么,而我却无法使用3.x硬件?

细分可能是最著名的功能。它也可能是最不常用的工具。这并不是说它是无用的。适当使用镶嵌可以增强模型中的细节。但至少对我而言,GL 4并不是最好的选择。

着色器子例程是一个有趣的想法。基本上,这使您可以动态地将着色器的不同片段组合在一起。您可以或多或少地将函数附加到程序中的特定绑定点。该规范有点难以遵循,但是它是很好的功能。

我想说的是,图像加载/存储可能是GL 4功能中最被忽视但功能最强大的部分。有了它,您就可以实现与订单无关的透明性,其性能与OIT差不多。图像加载/存储可能还有许多其他用途,但是聪明的人需要弄清楚它们。

GL 4中有一些零碎的东西。例如双精度支持和间接渲染。这些都是GPGPU风格的东西,因此在游戏中可能用处不大。

但总的来说,GL 4并不会从根本上改变GL 3中实现功能X的方式。


我只是不得不说,您完全错误地说间接渲染是“ GPGPU风格的东西”。对于任何本来会从CPU发出许多调用的渲染器来说,这都是一个巨大的性能提升,并且是游戏的一项出色功能。
CoffeeandCode 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.