【问题标题】:is vertex shader needed with compatibility context兼容性上下文是否需要顶点着色器
【发布时间】:2013-09-30 16:52:36
【问题描述】:

如果我使用带有兼容性上下文的 opengl 3.2+ 并且有片段着色器,是否需要有顶点着色器?我想知道每个顶点光照计算和其他每个顶点计算是否可以通过固定函数管道完成,我可以只使用片段着色器。

这对每个顶点属性绑定位置有什么影响?

【问题讨论】:

    标签: opengl glsl shader opengl-3 vertex


    【解决方案1】:

    if per vertex 光照计算和其他 per vertex 计算 可以通过固定功能流水线来完成

    如果您使用固定的管道灯,它们可以完成。否则,它的一部分(如转换的法线、uv 和位置)必须在传递给片段着色器之前在其他地方计算。这个“其他地方”称为顶点着色器。所以是的,如果你不使用固定的管道闪电系统,你必须使用顶点和片段着色器来处理它。

    此外,如果您使用fixed pipeline lightning,您仍然可以使用着色器来访问固定的光照和材质属性。但我认为这样做没有任何意义,除非您希望打破默认行为。

    【讨论】:

    • 网上有文档支持吗? -谢谢
    • 如果你不依赖人们在这里说的话,那你为什么要问?
    • @user968049:其中许多问题的最终来源是在以下位置找到的规范:opengl.org/registry - 但是,它们是非常冗长的文档,大多数人都不能简单地浏览。每当被问到时,我都会尝试引用规范的相关部分,但这是一个如此简单的问题,在这种情况下确实不值得花时间(无意冒犯)。固定功能由兼容性配置文件提供,这可以说是其最重要的目的。看看opengl.org/registry/doc/glspec32.compatibility.20091207.pdf
    • @user968049 至于顶点属性绑定的位置,当您使用固定函数指针(例如glTexCoordPointer (...))时,您必须使用关联的GL预先声明的变量在您的顶点着色器中(例如gl_MultiTexCoord0)。将固定函数指针(顶点位置除外,它始终为 0)作为通用顶点属性位置的别名是违反规范的。 NVIDIA 因违反此规范而臭名昭著,但大多数其他供应商都严格执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多