可能在着色器中找到纹理的内部格式

Possible to find internal format of texture in shader?

本文关键字:纹理 内部 格式      更新时间:2023-10-16

是否可以在着色器(glsl)中找到纹理的内部格式

例如,如果我有一个格式为GL_RG的纹理,是否可以在着色器中识别出蓝色和alpha值是"常量"并且可以忽略?

我知道我可以使用统一将纹理类型从c++传递到着色器。但是,有没有一种"内在"的方法可以从着色器中找到答案?

不,我认为没有任何东西可以直接向您提供这些信息。

看看最新的GLSL规范(目前为4.50),我希望在"8.9.1"部分中列出一个假设函数来获得这些信息。纹理查询函数",从第158页开始。但列出的功能只有:

  • textureSize:获取纹理的大小
  • textureQueryLod:获取用于给定纹理坐标的细节级别
  • textureQueryLevels:获取纹理中mipmap级别的数目
  • textureSamples:获取多采样纹理的采样数

所以,除非我错过了完全不同的东西,否则你想要的东西是不存在的。