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()?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage