Fix gles
Because in the past call texture->lock() will return unmodified cached image (always bgra), now the image will be converted dependently
This commit is contained in:
parent
f609114594
commit
6f191bd7da
@ -167,11 +167,15 @@ void Skybox::generateCubeMapFromTextures()
|
|||||||
img->copyToScaling(rgba[i], size, size);
|
img->copyToScaling(rgba[i], size, size);
|
||||||
|
|
||||||
#if defined(USE_GLES2)
|
#if defined(USE_GLES2)
|
||||||
for (unsigned int j = 0; j < size * size; j++)
|
if (CVS->isEXTTextureFormatBGRA8888Usable())
|
||||||
{
|
{
|
||||||
char tmp_val = rgba[i][j*4];
|
// BGRA image returned by getTextureImage causes black sky in gles
|
||||||
rgba[i][j*4] = rgba[i][j*4 + 2];
|
for (unsigned int j = 0; j < size * size; j++)
|
||||||
rgba[i][j*4 + 2] = tmp_val;
|
{
|
||||||
|
char tmp_val = rgba[i][j * 4];
|
||||||
|
rgba[i][j * 4] = rgba[i][j * 4 + 2];
|
||||||
|
rgba[i][j * 4 + 2] = tmp_val;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -17,8 +17,11 @@
|
|||||||
|
|
||||||
#ifndef SERVER_ONLY
|
#ifndef SERVER_ONLY
|
||||||
|
|
||||||
#include "graphics/irr_driver.hpp"
|
|
||||||
#include "graphics/spherical_harmonics.hpp"
|
#include "graphics/spherical_harmonics.hpp"
|
||||||
|
#if defined(USE_GLES2)
|
||||||
|
#include "graphics/central_settings.hpp"
|
||||||
|
#endif
|
||||||
|
#include "graphics/irr_driver.hpp"
|
||||||
#include "graphics/stk_texture.hpp"
|
#include "graphics/stk_texture.hpp"
|
||||||
#include "utils/log.hpp"
|
#include "utils/log.hpp"
|
||||||
|
|
||||||
@ -410,6 +413,18 @@ void SphericalHarmonics::setTextures(const std::vector<video::ITexture *> &spher
|
|||||||
(m_spherical_harmonics_textures[idx])->getTextureImage();
|
(m_spherical_harmonics_textures[idx])->getTextureImage();
|
||||||
assert(img != NULL);
|
assert(img != NULL);
|
||||||
img->copyToScaling(sh_rgba[i], sh_w, sh_h);
|
img->copyToScaling(sh_rgba[i], sh_w, sh_h);
|
||||||
|
#if defined(USE_GLES2)
|
||||||
|
if (!CVS->isEXTTextureFormatBGRA8888Usable())
|
||||||
|
{
|
||||||
|
// Code here assume color format is BGRA
|
||||||
|
for (unsigned int j = 0; j < sh_w * sh_h; j++)
|
||||||
|
{
|
||||||
|
char tmp_val = sh_rgba[i][j * 4];
|
||||||
|
sh_rgba[i][j * 4] = sh_rgba[i][j * 4 + 2];
|
||||||
|
sh_rgba[i][j * 4 + 2] = tmp_val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
} //for (unsigned i = 0; i < 6; i++)
|
} //for (unsigned i = 0; i < 6; i++)
|
||||||
|
|
||||||
Color *float_tex_cube[6];
|
Color *float_tex_cube[6];
|
||||||
|
@ -28,7 +28,9 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
|
#if !defined(USE_GLES2)
|
||||||
static const uint8_t CACHE_VERSION = 1;
|
static const uint8_t CACHE_VERSION = 1;
|
||||||
|
#endif
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
STKTexture::STKTexture(const std::string& path, bool srgb, bool premul_alpha,
|
STKTexture::STKTexture(const std::string& path, bool srgb, bool premul_alpha,
|
||||||
bool set_material, bool mesh_tex, bool no_upload)
|
bool set_material, bool mesh_tex, bool no_upload)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user