首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >意外的INVALID_OPERATION on glClearNamedBufferData

意外的INVALID_OPERATION on glClearNamedBufferData
EN

Computer Graphics用户
提问于 2021-08-17 16:56:27
回答 1查看 51关注 0票数 0

在OpenGL 4.5下在AMD RENOIR (DRM 3.40.0, 5.10.56-1-lts, LLVM 12.0.1)上运行

代码语言:javascript
复制
glCreateBuffers(1, &result_buffer);
glNamedBufferData(result_buffer, count * 4, NULL, GL_STATIC_DRAW);
glClearNamedBufferData(result_buffer, GL_R32UI, GL_RED, GL_UNSIGNED_INT, NULL);

GL_INVALID_OPERATION in glClearNamedBufferData(integer vs non-integer)检查结果。

如果我使用GL_R32F,它可以正常工作,但这不是我想要的格式。

规格指出,只有在映射或不映射现有缓冲区对象的名称时才能发生GL_INVALID_OPERATION;两者似乎都不可能发生。

我做错了什么?什么是“整数与非整数”?

EN

回答 1

Computer Graphics用户

回答已采纳

发布于 2021-08-17 18:35:04

缓冲器清除被定义为像素传输操作的一种形式。本质上,您是在指定数据,就像指定要复制的打包像素数据一样。因此,您必须指定像素传输格式和类型参数,以及要在缓冲区中使用的“内部格式”。

但这意味着所有像素传输规则都适用,包括将数据传输到整数内部格式必须使用*_INTEGER像素传输格式这一事实。这是不匹配的:您必须使用GL_RED_INTEGER,因为您正在写入整数内部格式。

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/12139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档