Чтение содержимого SSBO, возвращаемого glMapBufferRange - PullRequest
0 голосов
/ 12 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...