是否可以在OpenGL 3+;没有编写GLSL着色器?它会在旧电脑上运行吗?

是否可以在OpenGL 3+;没有编写GLSL着色器?它会在旧电脑上运行吗?,opengl,opengl-3,Opengl,Opengl 3,我是OpenGL3的新手,现在我正在考虑迁移到OpenGL3并移植我的旧代码。就在昨天,我开始阅读我在网上找到的一些教程。我已经有了使用旧OpenGL的经验。让我印象深刻的是,我所知道的关于它的几乎所有东西都被弃用了/从核心删除了/烧掉了 所以我需要一些指针来理解新的架构 我需要将顶点缓冲区传递给图形硬件,这样会更快,没关系。但从这一点开始,教程将继续编写和编译GLSL着色器。这是否意味着从现在起,我将需要着色器来完成(以前)最简单的任务并处理所有血淋淋的细节?绘制一个古劳德着色的三角形,但要确

我是OpenGL3的新手,现在我正在考虑迁移到OpenGL3并移植我的旧代码。就在昨天,我开始阅读我在网上找到的一些教程。我已经有了使用旧OpenGL的经验。让我印象深刻的是,我所知道的关于它的几乎所有东西都被弃用了/从核心删除了/烧掉了

所以我需要一些指针来理解新的架构

我需要将顶点缓冲区传递给图形硬件,这样会更快,没关系。但从这一点开始,教程将继续编写和编译GLSL着色器。这是否意味着从现在起,我将需要着色器来完成(以前)最简单的任务并处理所有血淋淋的细节?绘制一个古劳德着色的三角形,但要确保透视效果正确(片段着色器)。或者自己进行透视变换(顶点“着色”)

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

这些代码在旧计算机上有效吗?我的第一台电脑已经9岁了(2004年买的),现在还可以用,那个时代的很多3D游戏都可以毫无问题地使用。。。OpenGL3需要现代硬件吗

是否可以在OpenGL3+中绘制任何东西而不编写GLSL着色器

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

但从这一点开始,教程将继续编写和编译GLSL着色器。这是否意味着从现在起,我将需要着色器来完成(以前)最简单的任务并处理所有血淋淋的细节

对。但这是件好事,因为它让事情变得简单多了。以前您必须进行大量OpenGL状态设置调用,现在您所要做的就是以简洁的方式将其写下来,并可以使用单个
glUseProgram
调用加载它

此外,还没有任何严肃的OpenGL程序(即使使用旧的固定函数管道)使用OpenGL的内置矩阵操作函数。矩阵对于其他事物也是必需的,所以只需自己计算并加载它们

这些代码在旧计算机上有效吗?我的第一台电脑已经9岁了(2004年买的),现在还可以用,那个时代的很多3D游戏都可以毫无问题地使用。。。OpenGL3需要现代硬件吗


支持OpenGL-3的硬件在2006年末上市。2003年以后出售的所有产品都支持OpenGL-2,一切正常。基于GLSL的着色器是在OpenGL-2中引入的,OpenGL-3中所做的大部分工作都可以很好地应用于OpenGL-2。

好的,GLSL是在OGL2中首次发布的,因此许多计算机都支持这些版本。但是,您不会拥有该语言的最新功能。我建议你专注于学习你的电脑支持的最新版本,并担心以后的可移植性。OpenGL 2.0于2004年发布,如果我没记错的话,它支持着色器的ARB扩展。尽管我的猜测是,至少今天(2009年,4年前)大多数计算机都支持OpenGL 3.2,就像@AntonD说的那样,学习并关注新东西。为什么?因为当你已经知道了新的东西时,学习旧的东西就容易多了。用另一种方法去做最终会困难得多。是的,你当然可以。有用于此目的的兼容性配置文件。然而,GL3及更高版本中的大量新功能仅适用于和/或只能用于着色器。GL3通常需要DX10类硬件,即使一些DX10的东西直到GL4才升级到核心GL,而且GL3中的一些功能不需要DX10硬件。您的2004年硬件不太可能符合要求,可能是因为供应商对在旧硬件上支持新版本的OpenGL不感兴趣,也可能是因为真正缺乏硬件功能支持。