我什么时候应该使用GLSL?

时间:2013-01-30 17:12:48

标签: opengl glsl

我用了一个学期的Opengl,但是用传统方式,比如:glBegin ... glEnd。

我听说有人说GLSL是OpenGL的未来,我只是想知道我是否需要跳入GLSL而不是传统的OpenGL?

此外,GLSL是否仅适用于良好的GPU?

2 个答案:

答案 0 :(得分:4)

简短回答:是的,你确实需要更新你的OpenGL用法,因为你通常会从glBegin / glEnd中获得糟糕的性能,并通过限制你自己的旧固定管道行为来限制你可以做的事情。

答案很长:

你混淆了两个不同的问题。其中之一是立即模式(glBegin glVertex ... glEnd等)与批量模式(glVertexPointer等)。要从现代GPU中获得完整性能,您需要使用批次。请参阅此SO讨论:When are VBOs faster than "simple" OpenGL primitives (glBegin())?

另一个是固定管道与可编程着色器(glEnable状态等等。与GLSL相比)。在许多情况下,这可能是性能问题,但更重要的是,这是一个灵活性问题。使用GLSL,您可以更好地控制渲染事物的方式,因此您可以完成使用固定管道无法实现的事情 - 至少不是以可用的帧速率。可编程着色器也更好地反映了现代GPU的真正工作方式 - 事实上,如果您使用固定管道,它可能只是在引擎盖下使用着色器进行模拟。

答案 1 :(得分:3)

GLSL不是OpenGL的未来,它是当前的编程方式。正如Aeluned所述,glBegin和glEnd已被弃用(在OpenGL ES中甚至不支持。)

好的GPU是什么意思?即使是英特尔集成显卡也支持着色器,使用GLSL并不仅仅是因为GLSL。在执行繁重的工作时,您可能会获得较慢的性能,但如果您实现固定管道,我认为您将获得相同的性能。

我会说学习GLSL是可行的方法。

相关问题