不写GLSL着色器,OpenGL 3+是否能绘制任何东西?它能在旧电脑上运行吗?

6

我刚接触OpenGL3,现在正在考虑转向OpenGL3并移植我的旧代码。昨天我开始阅读网络上的一些教程。我已经有使用旧版OpenGL的经验。令我惊讶的是,我所知道的几乎所有内容都已被废弃/删除/禁用了。

因此,我需要一些指引来理解新的架构。

我需要将顶点缓冲区传递给图形硬件,这样速度更快,没问题。但从这一点开始,教程就开始编写和编译GLSL着色器。这是否意味着从现在开始,即使是(以前)最简单的任务也需要着色器,并且要关注所有细节?例如,绘制高洛德着色的三角形,但要确保它被透视正确地呈现(片段着色器)。或者进行透视变换本身(顶点“着色”)。

我从未编写过着色器或使用过任何高级渲染技术。所以现在是时候学习GLSL了...

代码会在老电脑上运行吗?我的第一台电脑已经9年了(2004年购买),但仍然可以使用,那个时代的许多3D游戏都可以在上面运行而没有问题... OpenGL3需要现代硬件吗?


1
GLSL最初是随着OpenGL 2发布的,因此许多计算机支持这些版本。然而,您将无法使用语言的最新功能。我建议您专注于学习您的PC支持的最新版本,并稍后再考虑可移植性问题。 - Anton D
OpenGL 2.0于2004年发布,如果我没记错的话,它支持了Shaders的ARB扩展。尽管我猜想至少大多数计算机今天都支持OpenGL 3.2(2009年,4年前)。正如@AntonD所说,学习并专注于新的东西。为什么?因为当你已经知道新的东西时,学习旧的东西会更容易。反过来做可能最终会更难。 - vallentin
是的,你肯定可以。为此目的有兼容性配置文件。然而,在GL3及以上版本中的许多新功能仅适用于着色器和/或只能在着色器中使用。尽管某些DX10内容直到GL4才被推广到核心GL中,但GL3通常需要DX10级别的硬件,而且GL3中的某些功能不需要DX10硬件。由于缺乏厂商支持旧版OpenGL的新版本或者真正的硬件特性支持的缺乏,您的2004年硬件不太可能符合要求。 - Andon M. Coleman
1个回答

11

在OpenGL 3+中是否可能不编写GLSL着色器而绘制任何内容?

不可能。您必须使用着色器才能使用可编程管线进行渲染。

但是,从这一点开始的教程会继续编写和编译GLSL着色器。这是否意味着从现在开始,即使是(先前)最简单的任务,我也需要着色器来完成并注意所有恶心的细节?

是的。但这是一件好事,因为它使事情变得简单得多。以前,您需要进行大量的OpenGL状态设置调用,现在只需简洁地书写代码,并使用单个glUseProgram调用即可加载。

而且,即使是旧的固定功能管线,也没有任何严重的OpenGL程序使用OpenGL的内置矩阵操作函数。矩阵也用于其他方面,所以自己计算并加载它们。

代码是否适用于旧计算机?我的第一台电脑已经有9年了(2004年购买),仍然可以使用,许多那个时代的3D游戏都可以在上面正常运行...OpenGL3需要现代硬件吗?

支持OpenGL-2的设备在2003年之后销售,而OpenGL-3兼容硬件于2006年末上市。基于GLSL的着色器是在OpenGL-2中引入的,并且OpenGL-3中的许多内容也可以很好地应用于OpenGL-2。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接