是否可以在着色器(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 ++传递到着色器。但是有没有“内在的”方式从着色器中找出来?
答案 0 :(得分:3)
不,我不相信有任何东西可以直接提供这些信息。
查看最新的GLSL规范(此时为4.50),我希望有一个假设函数可以将这些信息列在" 8.9.1节中。纹理查询功能"从第158页开始。但是那里列出的唯一功能是:
textureSize
:获取纹理大小。textureQueryLod
:获取给定纹理坐标的详细程度。textureQueryLevels
:获取纹理中的mipmap级别数。textureSamples
:获取多重采样纹理的样本数。所以,除非我错过了一些完全不同的东西,否则你所寻找的东西是不存在的。