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]>:

> 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].
> 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.

Reply via email to