Bug 1130616 - Support EXT_color_buffer_half_float on ANGLE. - r=jrmuizel,khuey

This commit is contained in:
Jeff Gilbert
2015-02-24 14:09:09 -08:00
parent e7baeb36a1
commit 6d0bffcb21
14 changed files with 700 additions and 91 deletions

View File

@@ -49,8 +49,8 @@ WebGLContext::Clear(GLbitfield mask)
mShouldPresent = true;
}
static GLclampf
GLClampFloat(GLclampf val)
static GLfloat
GLClampFloat(GLfloat val)
{
if (val < 0.0)
return 0.0;
@@ -62,18 +62,28 @@ GLClampFloat(GLclampf val)
}
void
WebGLContext::ClearColor(GLclampf r, GLclampf g,
GLclampf b, GLclampf a)
WebGLContext::ClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a)
{
if (IsContextLost())
return;
MakeContextCurrent();
mColorClearValue[0] = GLClampFloat(r);
mColorClearValue[1] = GLClampFloat(g);
mColorClearValue[2] = GLClampFloat(b);
mColorClearValue[3] = GLClampFloat(a);
const bool supportsFloatColorBuffers = (IsExtensionEnabled(WebGLExtensionID::EXT_color_buffer_half_float) ||
IsExtensionEnabled(WebGLExtensionID::WEBGL_color_buffer_float));
if (!supportsFloatColorBuffers) {
r = GLClampFloat(r);
g = GLClampFloat(g);
b = GLClampFloat(b);
a = GLClampFloat(a);
}
gl->fClearColor(r, g, b, a);
mColorClearValue[0] = r;
mColorClearValue[1] = g;
mColorClearValue[2] = b;
mColorClearValue[3] = a;
}
void