opengl - 如果包含输入图像,OpenGL 计算着色器将无法编译
问题描述
此 GLSL 源代码编译(使用 GL_COMPUTE_SHADER)并运行没有问题(仅使用输出图像):
#version 460
layout (local_size_x = 16, local_size_y = 16) in;
layout (rgba8, binding = 3) uniform writeonly lowp image2D destTex;
void main() {
ivec2 pixel_coords = ivec2(gl_GlobalInvocationID.xy);
imageStore(destTex, pixel_coords, vec4(1.0, 0.0, 0.0, 1.0)); // Solid red
}
但是,如果我只添加两行代码以允许输入图像,则以下内容无法编译:
#version 460
layout (local_size_x = 16, local_size_y = 16) in;
layout (rgba8, binding = 1) uniform readonly lowp image2D srcTex;
layout (rgba8, binding = 3) uniform writeonly lowp image2D destTex;
void main() {
ivec2 pixel_coords = ivec2(gl_GlobalInvocationID.xy);
vec4 color = imageLoad(srcTex, pixel_coords);
imageStore(destTex, pixel_coords, color);
}
编译器的输出是:
0(7) : error C0000: syntax error, unexpected $undefined, expecting "::" at token "<undefined>"
0(8) : error C1503: undefined variable "color"
有任何想法吗?
解决方案
您似乎在 'x' 和imageLoad
. 擦除它后,您的代码对我来说编译得很好。
推荐阅读
- c++ - clang 无法检测到初始化并给出错误
- c - While 循环要求输入两次,而不是第一次中断
- android - 使用产品风味复制类
- python - 我可以使用哪些算法来检查一个多边形是否适合另一个多边形?
- java - 为什么 DriverManager.getConnection 不使用 Driver.class 中的“acceptsURL”方法
- sql-server - 如何将数千行 T-SQL 剪切为小型存储过程或函数?
- c# - 如何在外部类的每个方法调用周围自动添加锁?
- php - 当 woocommerce 订单状态通过操作挂钩完成时,如何触发 mailster 自动回复?
- shell - ** .SH 文件正确运行的更新问题
- javascript - 搜索时删除前置用户