DX9和DX10):什么是默认的像素(和顶点)着色器? (如果可能,也是OpenGL。)

时间:2011-02-21 05:32:56

标签: opengl directx-9 directx-10 pixel-shader

我知道我可以选择在DX9中指定着色器,并且我需要在DX10中指定着色器。我的问题是,如果我说我想使用着色器并且我没有指定一个着色器会发生什么。在一个短语中,我正在寻找的是默认行为。是否有默认着色器?

我对以下情况感兴趣:

  • DX10,不要指定像素着色器。 (我是否必须调用PSSetShader(NULL)?如果我不知道怎么办?)将运行的默认着色器是什么?
  • 同样的问题,顶点着色器。
  • DX9,如果我指定我将使用像素着色器,但是然后不指定一个,会发生什么?有违约吗?如果我选择使用固定功能接口,是否有默认值?这些默认值是否相同?
  • 奖金问题:OpenGL和GLSL怎么样?与DX9相同的问题。

我很乐意看到指向文档的指针 - 我已经仔细阅读了Microsoft在线DX文档,但却无法找到任何类型的默认行为。

谢谢!

1 个答案:

答案 0 :(得分:3)

在OpenGL版本< = 2.x中,如果启用着色器但不提供任何着色器代码,则着色器阶段不完整并尝试渲染某些内容只会导致错误。

在OpenGL版本中,> = 3核心配置文件提供着色器是必需的。没有着色器,它与启用OpenGL-2着色器的情况相同,但没有提供着色器:尝试渲染某些内容=>错误。在OpenGL-3.x兼容性配置文件中,行为与OpenGL-2.x类似 - 没有默认的着色器可以说,行为与固定功能管道匹配,可以通过着色器描述,但是没有指定实际的着色器代码。从技术上讲,现代GPU的OpenGL-2.x驱动程序将在原位创建一个与当前设置的固定功能管道配置相匹配的着色器。