【发布时间】:2018-11-04 09:34:43
【问题描述】:
我有一个特殊的 SSBO,只有一个 int,我需要从着色器和 cpu 读取和写入。
我创建的SSBO如下:
glGenBuffers(1, &ssbo);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssbo);
glObjectLabel(GL_BUFFER, ssbo, -1, ("\"SSBO\""));
GLint zero = 0;
glBufferData(GL_SHADER_STORAGE_BUFFER, sizeof(GLint), &zero, GL_STATIC_COPY);
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 3, ssbo);
当我渲染时,glDbeugMessage 返回:
OpenGL Event Notification:
Source: GL_DEBUG_SOURCE_API
Type: GL_DEBUG_TYPE_PERFORMANCE
ID: Unkown error code: 131186
Severity: GL_DEBUG_SEVERITY_MEDIUM
Message:
Buffer performance warning: Buffer object "SSBO" (bound to
GL_SHADER_STORAGE_BUFFER, and GL_SHADER_STORAGE_BUFFER (3), usage hint is
GL_DYNAMIC_DRAW) is being copied/moved from VIDEO memory to HOST memory.
此警告中最重要的是它表示 SSBO 有提示:GL_DYNAMIC_DRAW 尽管我尝试将提示设置为:GL_STATIC_COPY
所以我的问题是,我应该使用什么提示来防止 OpenGL 警告,以及如何实际强制使用该提示?
【问题讨论】:
标签: c++ opengl runtime-error buffer gpu