可以在着色器中找到纹理的内部格式吗?
Possible to find internal format of texture in shader?
是否可以在着色器 (glsl) 中找到纹理的内部格式?
例如,如果我有一个格式为 GL_RG
的纹理,是否可以在着色器中识别出蓝色和 alpha 值是 "constant" 并且可以忽略?
我知道我可以使用制服将纹理类型从 C++ 传递到着色器。但是有没有一种 "intrinsic" 方法可以从着色器中找到答案?
不,我认为没有任何东西可以直接为您提供此信息。
查看最新的 GLSL 规范(此时为 4.50),我希望一个假设的函数可以在第 158 页开始的“8.9.1.纹理查询函数”部分中列出此信息。但唯一的列出的函数有:
textureSize
: 获取纹理大小。
textureQueryLod
: 获取用于给定纹理坐标的细节级别。
textureQueryLevels
:获取纹理中的mipmap层数。
textureSamples
: 获取多重采样纹理的采样数。
所以除非我错过了完全不同的东西,否则你要找的东西不存在。
是否可以在着色器 (glsl) 中找到纹理的内部格式?
例如,如果我有一个格式为 GL_RG
的纹理,是否可以在着色器中识别出蓝色和 alpha 值是 "constant" 并且可以忽略?
我知道我可以使用制服将纹理类型从 C++ 传递到着色器。但是有没有一种 "intrinsic" 方法可以从着色器中找到答案?
不,我认为没有任何东西可以直接为您提供此信息。
查看最新的 GLSL 规范(此时为 4.50),我希望一个假设的函数可以在第 158 页开始的“8.9.1.纹理查询函数”部分中列出此信息。但唯一的列出的函数有:
textureSize
: 获取纹理大小。textureQueryLod
: 获取用于给定纹理坐标的细节级别。textureQueryLevels
:获取纹理中的mipmap层数。textureSamples
: 获取多重采样纹理的采样数。
所以除非我错过了完全不同的东西,否则你要找的东西不存在。