opengl - 如何使用 glClearBufferData 初始化缓冲区
问题描述
GLuint buffer;
glCreateBuffers(1, &buffer);
glNamedBufferStorage(buffer, 1024, NULL, GL_MAP_WRITE_BIT | GL_MAP_READ_BIT | GL_DYNAMIC_STORAGE_BIT);
unsigned int x = 0x01010101;
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glClearBufferData(GL_ARRAY_BUFFER, GL_R32UI, GL_RED, GL_UNSIGNED_INT, &x);
int* p = (int*)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE);
for (int i = 0; i < 4; ++i)
cout << hex << p[i] << " ";
glUnmapBuffer(GL_ARRAY_BUFFER);
但是,输出是“1010102”而不是“1010101”。
解决方案
glClearBufferData(GL_ARRAY_BUFFER, GL_R32UI, GL_RED, GL_UNSIGNED_INT, &x);
正确的格式参数应该是GL_RED_INTEGER
,而不是GL_RED
。
推荐阅读
- python - REST API 快速响应最佳实践
- jenkins - 在本地 mac 机器上启动 tomcat 服务器的 Ant 脚本未完成
- python - Python:如何在具有容差的列表中对相似列表进行分组并取平均值?
- python - 长 f 字符串的 PEP8-conform 拆分
- mysql - MySQL - 列计数功能位置错误
- tensorflow - 在 Tensorflow RNN 中计算门时,如何从上层访问状态?
- python - 限制活动线程数 Python
- python - Python 继续使用过滤器读取日志文件并将过滤器数据写入新文件
- javascript - 遇到 TS 错误“使用 react-router 的类型'不存在属性'exact'”
- django - Django REST,从列表中的值追加新字段