如何在OpenGL的glsl中使用atomic 64bit?

问题描述 投票:0回答:1

我尝试使用glsl的64位整数类型的原子函数,例如atomicCompSwap。

我找到了一些相关的扩展

  • GL_EXT_shader_atomic_int64
    当我尝试启用此扩展时,出现以下编译错误
ERROR  Compilation error: 0(16) : error C0202: extension EXT_shader_atomic_int64 not supported
  • GL_NV_shader_atomic_int64
    可以毫无错误地启用此扩展。然而,使用atomicCompSwap 时会出现一些奇怪的编译错误。请检查以下示例代码
#extension GL_ARB_gpu_shader_int64 : require
#extension GL_NV_shader_atomic_int64 : require
layout(std430, binding = 0) coherent buffer Test{ uint64_t test; };
void main() {
    uint64_t origin_key = 0u;
    uint64_t key = 1u;
    atomicCompSwap(test, origin_key, key);
}

编译错误是

error C1115: unable to find compatible overloaded function "atomicCompSwap(uint64_t, u64vec2)"
opengl glsl
1个回答
0
投票

请参阅NV_shader_atomic_int64。在此扩展中,

atomicCompSwap
仅针对
int64_t
实现,并具有以下接口:

int64_t atomicCompSwap(inout int64_t mem, int64_t data);
© www.soinside.com 2019 - 2024. All rights reserved.