glsl - 计算着色器中 [[vk::binding(0, 0)]] RWStructuredBuffer<int> 的 GLSL 等价物是什么

标签 glsl vulkan hlsl hlsl2glsl

我有这个 HLSL,我想用 GLSL 编写等价物。如果有用的话,我正在尝试运行此示例 https://github.com/mcleary/VulkanHpp-Compute-Sample

[[vk::binding(0, 0)]] RWStructuredBuffer<int> InBuffer;
[[vk::binding(1, 0)]] RWStructuredBuffer<int> OutBuffer;

[numthreads(1, 1, 1)]
void Main(uint3 DTid : SV_DispatchThreadID)
{
    OutBuffer[DTid.x] = InBuffer[DTid.x] * InBuffer[DTid.x];
}

最佳答案

等效的 GLSL 应如下所示:

layout(std430, binding = 0) buffer InBuffer {
    int inBuffer[ ];
};

layout(std430, binding = 1) buffer OutBuffer {
    int outBuffer[ ];
};

layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
void main() 
{
    outBuffer[gl_GlobalInvocationID.x] = inBuffer[gl_GlobalInvocationID.x] * inBuffer[gl_GlobalInvocationID.x];
}

关于glsl - 计算着色器中 [[vk::binding(0, 0)]] RWStructuredBuffer<int> 的 GLSL 等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72942798/

相关文章:

vulkan - 为什么 vkGetPhysicalDeviceSurfaceFormatsKHR 不必返回至少一种当前模式?

c++ - Vulkan:管道衍生品的创造和 yield

c++ - HLSL 中的镜面反射

unity3d - 从 DX9 到 DX11 的顶点着色器编译错误(Unity 5.6 到 2017.4)

c# - Unity Compute Shaders顶点索引错误

php - 在 PHP 中应用 FXAA?

GLSL ES1.0 并将纹理单元索引传递给片段着色器?

graphics - Vulkan 资源所有权转移与 VK_SHARING_MODE_CONCURRENT 和不同队列系列的性能

c++ - 将clamp()添加到片段着色器时,OpenGL GLSL在标记 "::"处期望 "<int-const>"

opengl - glUniform/glVertexAttribPointer 类型必须匹配着色器中声明的类型吗?