diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-06-13 18:23:47 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-06-13 18:23:47 -0700 |
commit | eb93218eb68901cd76af900d7710b033f4faa7ed (patch) | |
tree | 441500dbac3a0b9242a5da6cba3e53dbb5e8257c /src/library_gl.js | |
parent | cdd280fef41d1af57ead47819a48f13765cad510 (diff) |
s3tc compression support
Diffstat (limited to 'src/library_gl.js')
-rw-r--r-- | src/library_gl.js | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 1b6ec5c0..9928ab5d 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -100,6 +100,16 @@ var LibraryGL = { var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment); return (height <= 0) ? 0 : ((height - 1) * alignedRowSize + plainRowSize); + }, + + ensureCompression: function() { + if (GL.ensureCompression.done) return; + GL.ensureCompression.done = true; + + var ext = Module.ctx.getExtension('WEBGL_compressed_texture_s3tc') || + Module.ctx.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || + Module.ctx.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc'); + assert(ext, 'Failed to get texture compression WebGL extension'); } }, @@ -274,6 +284,7 @@ var LibraryGL = { }, glCompressedTexImage2D: function(target, level, internalformat, width, height, border, imageSize, data) { + GL.ensureCompression(); if (data) { data = {{{ makeHEAPView('U8', 'data', 'data+imageSize') }}}; } else { @@ -283,6 +294,7 @@ var LibraryGL = { }, glCompressedTexSubImage2D: function(target, level, xoffset, yoffset, width, height, format, imageSize, data) { + GL.ensureCompression(); if (data) { data = {{{ makeHEAPView('U8', 'data', 'data+imageSize') }}}; } else { @@ -947,7 +959,7 @@ var LibraryGL = { _glGetString = function(name_) { switch(name_) { case 0x1F03 /* GL_EXTENSIONS */: // Add various extensions that we can support - return allocate(intArrayFromString(Module.ctx.getSupportedExtensions().join(' ') + ' GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements'), 'i8', ALLOC_NORMAL); + return allocate(intArrayFromString(Module.ctx.getSupportedExtensions().join(' ') + ' GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements GL_ARB_texture_compression GL_EXT_texture_compression_s3tc'), 'i8', ALLOC_NORMAL); } return glGetString(name_); }; |