可以在着色器中找到纹理的内部格式吗?

时间:2015-11-27 13:53:29

标签: c++ opengl glsl textures shader

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

例如,如果我有一个格式为 string[] Lines = File.ReadAllLines(@"StudentExamMarks.txt"); int i = 0; var items = from line in Lines where i++ != 0 let words = line.Split(' ', '.', ':') select new { foreName = words[0], Surname = words[1], Mark = words[2] }; 的纹理,是否可以在着色器中识别蓝色和alpha值是“常量”并且可以忽略?

我知道我可以使用制服将纹理类型从c ++传递到着色器。但是有没有“内在的”方式从着色器中找出来?

1 个答案:

答案 0 :(得分:3)

不,我不相信有任何东西可以直接提供这些信息。

查看最新的GLSL规范(此时为4.50),我希望有一个假设函数可以将这些信息列在" 8.9.1节中。纹理查询功能"从第158页开始。但是那里列出的唯一功能是:

  • textureSize:获取纹理大小。
  • textureQueryLod:获取给定纹理坐标的详细程度。
  • textureQueryLevels:获取纹理中的mipmap级别数。
  • textureSamples:获取多重采样纹理的样本数。

所以,除非我错过了一些完全不同的东西,否则你所寻找的东西是不存在的。