【发布时间】:2015-11-28 01:56:02
【问题描述】:
是否可以在着色器 (glsl) 中找到纹理的内部格式?
例如,如果我有一个格式为 GL_RG 的纹理,是否可以在着色器中识别出蓝色和 alpha 值是“恒定的”并且可以忽略?
我知道我可以使用制服将纹理类型从 c++ 传递到着色器。但是有没有一种“内在”的方法可以从着色器中找出来?
【问题讨论】:
标签: c++ opengl glsl textures shader
是否可以在着色器 (glsl) 中找到纹理的内部格式?
例如,如果我有一个格式为 GL_RG 的纹理,是否可以在着色器中识别出蓝色和 alpha 值是“恒定的”并且可以忽略?
我知道我可以使用制服将纹理类型从 c++ 传递到着色器。但是有没有一种“内在”的方法可以从着色器中找出来?
【问题讨论】:
标签: c++ opengl glsl textures shader
不,我认为没有任何东西可以直接为您提供这些信息。
查看最新的 GLSL 规范(此时为 4.50),我希望从第 158 页开始的“8.9.1。纹理查询函数”部分中列出了一个假设函数来获取此信息。但列出的唯一函数有:
textureSize: 获取纹理大小。textureQueryLod:获取用于给定纹理坐标的详细程度。textureQueryLevels:获取纹理中的mipmap层数。textureSamples:获取多重采样纹理的样本数。因此,除非我错过了完全不同的东西,否则您正在寻找的东西不存在。
【讨论】: