我已经使用 Opengl 一个学期了,但使用的是传统方式,例如:glBegin...glEnd。
我听说有人说 GLSL 是 OpenGL 的未来,我只是想知道我是否需要跳入 GLSL 而不是传统的 OpenGL?
此外,GLSL 是否只适用于好的 GPU?
简短回答:是的,您确实需要更新您的 OpenGL 使用,因为您通常会从 glBegin/glEnd 获得糟糕的性能,并通过将自己限制在旧的固定管道行为来限制您可以做的事情。
长答案:
你混淆了两个不同的问题。其中之一是立即模式(glBegin glVertex ... glEnd 等)与批处理模式(glVertexPointer 等)。为了充分发挥现代 GPU 的性能,您需要使用批处理。请参阅此 SO 讨论:VBO 何时比“简单”OpenGL 基元 (glBegin()) 更快?.
另一个是固定管道与可编程着色器(glEnable 状态等。与 GLSL)。在许多情况下,这可能是一个性能问题,但更重要的是它是一个灵活性问题。使用 GLSL,您可以更好地控制事物的渲染方式,因此您可以完成使用固定管道实际上不可能完成的事情——至少不是以可用的帧速率。可编程着色器也更好地反映了现代 GPU 的实际工作方式——事实上,如果您使用固定管道,它可能只是在引擎盖下使用着色器进行模拟。
GLSL 不是 OpenGL 的未来,它是当前的编程方式。正如 Aeluned 所说,glBegin 和 glEnd 已被弃用(甚至在 OpenGL ES 中也不支持。)
好的 GPU 是什么意思?即使是英特尔集成显卡也支持着色器,使用 GLSL 并不仅仅因为是 GLSL 而变慢。在做繁重的工作时,您可能会获得较慢的性能,但如果您实施固定管道,我认为您将获得相同的性能。
我想说学习 GLSL 是要走的路。