Uso seguro de glMapBufferRange () no Android / Java
Eu tenho código de trabalho usandoglMapBufferRange()
do OpenGL-ES 3.0 no Android, com a seguinte aparência:
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);
Minha pergunta é sobre como diminuir o resultado deglMapBufferRange()
paraByteBuffer
na terceira linha.glMapBufferRange()
édeclarou retornar umBuffer
:
public static Buffer glMapBufferRange (int target, int offset, int length, int access)
Na minha plataforma de teste, a função retorna uma subclasse deByteBuffer
portanto, o elenco funciona, mas fazer essa suposição para todas as plataformas ou versões do Android com suporte ao OpenGL-ES 3+ não parece muito seguro. Embora pareça razoável, não encontrei nenhuma documentação que a garanta e, se garantida, parece que a função deve ser declarada como retornandoByteBuffer
.
Qual é a maneira correta (de preferência suportada pela documentação) de usar oBuffer
retornado porglMapBufferRange()
?