【问题标题】:OpenGL 3.1-4.1 new and deprecated featuresOpenGL 3.1-4.1 新特性和弃用特性
【发布时间】:2011-05-18 16:53:26
【问题描述】:

我已经使用 OpenGL 大约一年了,并且学到了很多东西。不幸的是,我了解到它的方式是旧的 3.x 之前的方式,即立即模式、默认着色器、矩阵堆栈等。通过查看 OpenGL 规范,我或多或少知道从那时到现在发生了什么变化,但是我不完全理解一些新的做事方式。

据我了解,他们摆脱了矩阵堆栈,这意味着您必须跟踪自己的转换矩阵,这似乎并不太复杂。他们还摆脱了即时模式,这意味着您现在需要使用 VBO 或 VAO(永远不知道哪一个,也许两者都...)来发送像素/法线/纹理等。着色器程序的信息。我并不真正了解这些对象的工作方式,我认为您需要将所有信息放入其中,并提供某种偏移量以显示像素、法线和纹理坐标之间的分隔符。有人可以简要解释一下这实际上是如何工作的(或给我发送一个解释它的链接)吗?我尝试了维基百科和谷歌搜索,但发现自己仍然不太了解它们。

还有一点我想了解更多关于着色器的信息,因为我从未使用过它们。我不会问如何编码它们或任何东西,只是需要在那里输入什么以及 opengl 仍然为你做什么。更具体地说,您需要在着色器中做什么才能获得基本的渲染程序?我知道你需要做所有的光照计算并使用你的矩阵来计算真正的顶点位置。但是,opengl 是否仍然处理背面剔除、剪线、多边形填充和其他较低级别的问题,还是您必须自己将它们编码到着色器中(或者它们甚至不属于着色器)?

【问题讨论】:

    标签: opengl rendering shader


    【解决方案1】:

    由于不推荐使用立即模式,因此执行“hello triangle”应用程序会涉及更多内容。这里有一个很好的现代 OpenGL 教程:

    http://arcsynthesis.org/gltut/

    你应该仔细阅读它。请记住,它不使用 VAO,因此您之后必须在其他地方阅读它。 VAO 并没有太大的改变,因此您不必从提到的教程中忘记东西来使用它们。

    关于您的第二个问题...您的顶点着色器将由 OpenGL 为每个顶点执行。您的工作是计算顶点的最终位置并准备要发送到片段着色器的数据(如法线、光照数据......),给定顶点的属性和您发送到着色器的其他数据(制服 - 您将阅读它在教程中)。片段着色器将在每个片段中执行,并且在片段着色器中您正在计算每个片段的最终颜色。

    你可以在这里看到:

    http://www.opengl.org/sdk/docs/man4/

    glPolygonMode 和 glCullFace 之类的东西仍然存在。

    【讨论】:

    • 感谢您的回复。一旦有机会,我一定会查看该链接。而且我知道 ech 着色器应该做什么,就像你写的那样,只是不确定你是否必须决定自己画什么,或者 opengl 是否仍然为你做了,你所要做的就是顶点位置/像素颜色你自己(这似乎是这种情况,感谢上帝)。非常有帮助的答案 +1
    • 您的教程链接现已损坏。
    猜你喜欢
    • 2014-03-11
    • 2011-08-26
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2018-08-04
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多