Я хочу получить данные из объекта буфера хранилища.Сначала я хочу воспользоваться glGetBufferSubData
.Но, похоже, что эта функция не существует в OpenGLES, хотя она существует в 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 напечатанных символов.Зачем?В чем проблема?Я уверен, что размер буфера большой от другой информации.