[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] WebGL context resize / canvas redraw

On Thu, Feb 25, 2010 at 6:17 PM, Kenneth Russell <kbr@google.com> wrote:
> On Thu, Feb 25, 2010 at 6:04 AM, Carl van Heezik <carl@microcan.nl> wrote:
>> Chris,
>> context resize
>> I noticed some differences in the WebGL implementations in Webkit and
>> Minefield.
>> When you resize the canvas the following instructions are enough to resize
>> the
>> rendering context in Webkit.
>>     canvas.width   = canvas.clientWidth;
>>     canvas.height  = canvas.clientHeight;
>> I think in Minefield you lose the shaders and other buffers because it only
>> works
>> when I recreate the shader program and buffers. What behavior is supposed to
>> happen when you change the canvas size?
> This is a bug in Minefield. Resizing the canvas should not destroy the
> context, only reallocate the back buffer for the canvas.

HTML5 says:

  "When the canvas element is created, and subsequently whenever the
width and height attributes are set (whether to a new value or to the
previous value), the bitmap and any associated contexts must be
cleared back to their initial state and reinitialized with the newly
specified coordinate space dimensions."

so the WebGL context ought to be reset to its initial state (the same
as if you replaced the <canvas> element with an entirely new one).
Resources that are generated by the context but are not part of the
context (in the 2d case these are CanvasGradient, CanvasPattern,
ImageData, etc - you can create them from one context, and then draw
them on a totally different canvas's context, since they have an
independent existence) won't get reset, though.

Is WebGL compatible with this definition? (I've not looked carefully
but it seems it may not be). If not, and if there's good reasons to be
incompatible, then it'd be good to get HTML5 updated so it allows this
resetting behaviour to be specified by each context.

Philip Taylor

You are currently subscribe to public_webgl@khronos.org.
To unsubscribe, send an email to majordomo@khronos.org with
the following command in the body of your email: