OK, then it's obvious why I'm not seeing any improvement in FPS. This 2D
library reuploads all buffers every frame by default.
09.05.2014 13:07, Jukka Jylänki пишет:
The answer is, like usual, "it depends".
What the FULL_ES2 emulation does is it allows the user code to render
from CPU-side memory arrays. When you do glDrawArrays/Elements while
having such arrays bound, the emulation will create its own VBOs under
the hood, upload the CPU-side data to the VBO (with
glBufferData/glBufferSubData), and then render that.
As a result, this means that every draw call from CPU memory results
in a full reupload of that memory to GPU before drawing, and that is
the performance hit.
If you are rendering static geometry that could only be updated once
and then rendered multiple times, then the emulation path cannot know
and take advantage of that, and you could do less work by manual VBO
management. On the other hand, if you are rendering dynamic geometry
that needs to be uploaded to GPU each frame anyways, then chances are
that the difference will be very small.
Generally we would definitely recommend avoiding FULL_ES2 whenever
possible. One way to estimate the impact before having written the
port is to use a browser profiler to measure how much time is being
spent in the GL context bufferData & bufferSubData functions - those
should be where the most of the added cost comes from, assuming that
you could avoid redundant buffer uploads if you used VBOs manually in
the code.
Jukka
2014-05-09 10:54 GMT+03:00 Max Savenkov <[email protected]
<mailto:[email protected]>>:
I'm wondering, how huge is the cost of FULL_ES2 emulation. I'm
porting a 2D library that relies on old Vertex Arrays and I was
using this switch to make it work at all. Then, I decided to write
a path that uses VBOs instead, and after some experimentation, got
it to work and removed FULL_ES2 from compilation. But I'm not
seeing any FPS improvement at all. So, before I delve further into
library's code, I wanted to know, if Vertex Arrays emulation costs
anything at all. Maybe I should just leave FULL_ES2 switch in and
not waste my time on alternate path?
--
You received this message because you are subscribed to the Google
Groups "emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "emscripten-discuss" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/emscripten-discuss/UFFoDp7hgXo/unsubscribe.
To unsubscribe from this group and all its topics, send an email to
[email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.