Sichere Verwendung von glMapBufferRange () unter Android / Java
Ich habe Arbeitscode mitglMapBufferRange()
von OpenGL-ES 3.0 auf Android sieht so aus:
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);
Meine Frage bezieht sich auf das Niederwerfen des Ergebnisses vonglMapBufferRange()
zuByteBuffer
in der dritten Zeile.glMapBufferRange()
istdeklariert, ein @ zurückzugebBuffer
:
public static Buffer glMapBufferRange (int target, int offset, int length, int access)
uf meiner Testplattform gibt die Funktion eine Unterklasse von @ zurücByteBuffer
Die Besetzung funktioniert also, aber diese Annahme für alle Plattformen oder Android-Versionen, die OpenGL-ES 3+ unterstützen, scheint nicht sehr sicher zu sein. Obwohl es vernünftig erscheint, habe ich keine Dokumentation gefunden, die es garantiert, und wenn es garantiert wäre, sollte die Funktion anscheinend als returning @ deklariert werdeByteBuffer
.
Was ist die richtige Art und Weise (vorzugsweise durch Dokumentation unterstützt) der Verwendung desBuffer
zurückgegeben vonglMapBufferRange()
?