我想从存储缓冲区对象中检索数据。一开始,我想利用glGetBufferSubData
. 但是在opengl中似乎没有这个功能,虽然在opengl中确实存在。然后我又靠上了glMapBufferRange
。
如果我能在从缓冲区检索数据后解释信息,那就完美了。但我认为要做到这一点,我必须提供确切的布局,甚至更多信息。目前,我不需要做那么多。我要做的是,在两种不同的情况下,我想检索缓冲区内容,并比较两种情况下的内容是否相同。
问题是,glMapBufferRange
返回一个void *
类型。我将其转换为char *
并比较十六进制值中的每个字符:
char *buffercontent = (char *)(glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 80, GL_MAP_READ_BIT)); //just read the first 80 characters. I'm sure the buffer data length is at least 80.
for(int i=0;i<20;i++)
{
printf("%X", *(buffercontent+i));
}
glUnmapBuffer(GL_SHADER_STORAGE_BUFFER);
我感到很困惑,因为我只能看到不到 20 个打印出来的字符。为什么?问题是什么?我确定缓冲区大小与其他信息相比很大。