我刚刚编写了一个纹理采样器对象,并注意到GL_DEPTH_STENCIL_TEXTURE_MODE
虽然可用作glTex
参数,但无法通过采样器选择。它是否正确?它是缺少硬件实现细节的原因,还是现在通常在着色器内部完成的事情?
答案 0 :(得分:2)
这是对的吗?
你是什么意思"正确"?这就是OpenGL规范所说的内容,按照这个定义,"正确"。
如果您询问硬件是如何做到的,那么这显然取决于硬件。但它是纹理参数而不是采样参数的原因是它从根本上改变了纹理的性质。
在深度模式下,着色器将纹理读取为浮点纹理,类型为sampler2D
或其他类型,具体取决于纹理的类型。在模板模式下,它被读作无符号整数纹理,采样器类型为usampler2D
或其他。
GLSL不允许着色器选择采样器是否给出浮点值或整数值。