X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture.cpp;h=1d2ece8074410ded753c621f4c4dd43418e2694d;hp=185ed7feea582b53194e7a7a61183845b576f065;hb=a993091fbb8fdb76a1d02be9de59529c14b59cf0;hpb=34a4efa81946066d32c1374318dcc0b74ae486a9 diff --git a/source/texture.cpp b/source/texture.cpp index 185ed7fe..1d2ece80 100644 --- a/source/texture.cpp +++ b/source/texture.cpp @@ -95,11 +95,8 @@ DataType Texture::get_alloc_type(PixelFormat fmt) void Texture::set_internal_format(PixelFormat fmt) { - if(!get_component_size(fmt) && MSP_sized_internal_formats) - { - unsigned size = (fmt==DEPTH_COMPONENT ? get_gl_api()==OPENGL_ES2 ? 2 : 4 : 1); - fmt = get_sized_pixelformat(fmt, size); - } + if(!get_component_size(fmt) && OES_required_internalformat) + fmt = get_default_sized_pixelformat(fmt); FormatSwizzle swiz = NO_SWIZZLE; if(ARB_texture_rg && ARB_texture_swizzle) @@ -165,10 +162,20 @@ void Texture::update_parameter(int mask) const set_parameter_i(GL_TEXTURE_COMPARE_FUNC, cmp_func); if(mask&FORMAT_SWIZZLE) { - if(ARB_direct_state_access) - glTextureParameteriv(id, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4); + if(get_gl_api()==OPENGL_ES2) + { + set_parameter_i(GL_TEXTURE_SWIZZLE_R, swizzle_orders[swizzle*4]); + set_parameter_i(GL_TEXTURE_SWIZZLE_G, swizzle_orders[swizzle*4+1]); + set_parameter_i(GL_TEXTURE_SWIZZLE_B, swizzle_orders[swizzle*4+2]); + set_parameter_i(GL_TEXTURE_SWIZZLE_A, swizzle_orders[swizzle*4+3]); + } else - glTexParameteriv(target, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4); + { + if(ARB_direct_state_access) + glTextureParameteriv(id, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4); + else + glTexParameteriv(target, GL_TEXTURE_SWIZZLE_RGBA, swizzle_orders+swizzle*4); + } } }