【发布时间】:2022-06-11 03:50:01
【问题描述】:
我有一个 64 色的调色板。我需要创建一个 512*512 的表并将调色板中的颜色索引写入其中,然后将所有内容显示在屏幕上。问题是glsl不支持二维数组,帧之间无法保存表格
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
-
我没有任何代码!
我有一个 64 色的调色板。我需要创建一个 512*512 的表并将调色板中的颜色索引写入其中,然后将所有内容显示在屏幕上。问题是glsl不支持二维数组,帧之间无法保存表格
【问题讨论】:
您可以做的最接近的事情是创建一个单独的缓冲区并只使用其中的一部分。 这是一个示例缓冲区 A:
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
fragCoord -= .5;
if(any(greaterThan(fragCoord, vec2(512)))) return;
fragColor = vec4(mod(fragCoord.x,2.), 0, 0, 1); // generate a color at point.
}
然后在主着色器中,您可以通过以下方式访问像素:
// vec2 p; // p.x and p.y in range(0, 512)
texture(iChannel0, p/iResolution.xy);
【讨论】: