У меня есть рабочий код с помощью glMapBufferRange()
из OpenGL-ES 3.0 на Android, который выглядит следующим образом:
glBindBuffer(GL_ARRAY_BUFFER, myVertexBufferName);
glBufferData(GL_ARRAY_BUFFER, myVertexBufferSize, null, GL_STATIC_DRAW);
ByteBuffer mappedBuffer = (ByteBuffer)glMapBufferRange(
GL_ARRAY_BUFFER,
0, myVertexBufferSize,
GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
// [fill buffer...]
glUnmapBuffer(GL_ARRAY_BUFFER);
Мой вопрос заключается в том, чтобы свести значение glMapBufferRange()
в ByteBuffer
к третьей строке. glMapBufferRange()
объявлен для возврата Buffer
:
public static Buffer glMapBufferRange (int target, int offset, int length, int access)
На моей тестовой платформе функция возвращает подкласс ByteBuffer
, поэтому выполнение работ выполняется, но это предположение для всех платформ или версий Android, поддерживающих OpenGL-ES 3+, не кажется очень безопасным. Хотя это кажется разумным, я не нашел никакой документации, которая его гарантирует, и если бы это было гарантировано, кажется, что функция должна быть объявлена как возвращающая ByteBuffer
.
Каков правильный способ (желательно поддерживаемый документацией) использования Buffer
, возвращаемого glMapBufferRange()
?