图像和纹理的主要区别
图像是单一层级的纹理,不支持滤波,不支持深度比较
图像布局限定符
layout () uniform image2D image1;
layout () uniform image2D image2;
layout (rgb32, binding=1) uniform image2D image3; //绑定到图像单元1
举例
void main()
{
vec4 pos = imageLoad(); //读
...
imageStore(); //存
vglAttachShaderSource(prog, GL_COMPUTE_SHADER);
glLinkProgram(prog);
dt_location = glGetUniformLocation(prog, "C:\"); //查询图像位置
vmath::glMapBufferRange();
glUnMapBuffer();
...
glUseProgram(prog);
glBindImageTexture(); //将纹理绑定到图像单元
glUniform1f(); //设置图像单元索引
glDispatchCompute(); //发送到计算管线上
glMemoryBarrier(); //在两个过程中插入内存屏障,保证时序性
glBindImageTexture();
glDisPatchCompute();