在许多愚蠢的问题后更新
目标:应用纹理调色板意味着 GL 着色器(模拟 Indexed8 纹理格式)。互联网上到处都是关于某个主题的文章,并且都包含相同的解决方案。我有它,不幸的是,它对我不起作用。
所以。
片段着色器:
uniform sampler2D texture;
uniform sampler2D palette;
uniform int paletteIndex;
layout (origin_upper_left) in vec4 gl_FragCoord;
void main()
{
int colorIndex = int(texture2D(texture, gl_TexCoord[0].xy, 0).r * 255);
gl_FragColor = texelFetch(palette, ivec2(colorIndex, paletteIndex), 0);
}
顶点着色器:
void main () {
gl_Position = ftransform ();
gl_TexCoord [0] = gl_MultiTexCoord0;
}
这是我的结果(左 - 我的照片,右 - 原始):
该死的,我只是设置了不正确的顶点坐标!>.<
感谢试图帮助的好人。现在我知道这与 texture2d 和 fetchTexel 不同,并找到了问题的原因!丁: