emscripten-core/emscripten

glMapBufferData requires INVALIDATE_BUFFER?

Open

#6 692 ouverte le 13 juin 2018

Voir sur GitHub
 (2 commentaires) (0 réactions) (0 assignés)C++ (3 519 forks)batch import
GLgood first bughelp wanted

Métriques du dépôt

Stars
 (27 361 stars)
Métriques de merge PR
 (Merge moyen 19j 10h) (147 PRs mergées en 30 j)

Description

The emulation for glMapBufferRange requires MAP_WRITE and INVALIDATE_BUFFER here: https://github.com/kripken/emscripten/blob/a4d732f3094cfb2377609e1661044679f9c79734/src/library_gl.js#L1744

Under the hood, in glUnmapBufferData, the call is translated into a glBufferSubData. I don't think requiring INVALIDATE_BUFFER is correct here -- that means that the entire buffer should be discarded, not just the range that's mapped (which is INVALIDATE_RANGE). I think that:

  1. The requirement should be changed to INVALIDATE_RANGE
  2. A check should be done that there isn't an existing mapping for that buffer (additional restriction of only one range mapping per buffer, which GL doesn't have -- this could be relaxed with additional code, but probably not necessary in practice)

(Note I haven't tested any of this, this is just by code inspection from a question someone asked)

Guide contributeur