【问题标题】:Is it possible to draw anything in OpenGL 3+ without writing GLSL shaders? Will it run on older computers?是否可以在不编写 GLSL 着色器的情况下在 OpenGL 3+ 中绘制任何东西?它会在旧电脑上运行吗?
【发布时间】:2013-12-04 13:23:52
【问题描述】:

我是 OpenGL3 的新手,现在我正在考虑迁移到 OpenGL3 并移植我的旧代码。我开始阅读昨天在网上找到的一些教程。我已经有使用旧 OpenGL 的经验。令我震惊的是,我所知道的几乎所有内容都已从核心中弃用/删除/销毁。

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

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

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

代码可以在旧电脑上运行吗?我的第一台电脑用了 9 年(2004 年购买)并且仍在工作,那个时代的许多 3D 游戏都可以正常运行... OpenGL3 是否需要现代硬件?

【问题讨论】:

  • 好吧,glsl 最初是与 ogl 2 一起发布的,所以很多计算机都支持这些版本。但是您不会拥有该语言的最新功能。我建议你专注于学习你的电脑支持的最新版本,然后担心便携性。
  • OpenGL 2.0 于 2004 年发布,如果我没记错的话,它支持着色器的 ARB 扩展。虽然我的猜测是今天(2009 年,4 年前)至少大多数计算机都支持 OpenGL 3.2 也像 @AntonD 所说的学习并专注于新东西。为什么?因为在已经知道新东西的情况下学习旧东西要容易得多。反过来做可能最终会困难得多。
  • 是的,你当然可以。有用于此目的的兼容性配置文件。但是,GL3 及更高版本中的大量新功能仅适用于和/或只能在着色器中使用。 GL3 通常需要 DX10 类硬件,即使某些 DX10 的东西直到 GL4 才被提升为核心 GL,并且 GL3 中的某些功能不需要 DX10 硬件。您的 2004 年硬件不太可能符合要求,原因可能是供应商对在旧硬件上支持新版本的 OpenGL 缺乏兴趣,或者确实缺乏硬件功能支持。

标签: opengl opengl-3


【解决方案1】:

是否可以在不编写 GLSL 着色器的情况下在 OpenGL 3+ 中绘制任何东西?

没有。您必须使用着色器来使用可编程管道进行渲染。

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

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

也没有真正的 OpenGL 程序(即使使用旧的固定函数管道)使用 OpenGL 的内置矩阵操作函数。其他事情也需要这些矩阵,所以只需自己计算并加载它们。

代码可以在旧电脑上运行吗?我的第一台电脑用了 9 年(2004 年买的),还在工作,那个年代的许多 3D 游戏都可以正常运行……OpenGL3 需要现代硬件吗?

支持 OpenGL-3 的硬件于 2006 年底上市。2003 年之后销售的所有产品都支持 OpenGL-2。 OpenGL-2 引入了基于 GLSL 的着色器,OpenGL-3 中所做的大部分工作都可以很好地应用于 OpenGL-2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 2012-04-27
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多