mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Some minor code cleanups
This commit is contained in:
parent
7689f1f0fd
commit
03affa1bbb
15 changed files with 29 additions and 98 deletions
|
@ -44,8 +44,6 @@ centroid varying float nightRatio;
|
||||||
varying float perspective_factor;
|
varying float perspective_factor;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
varying float area_enable_parallax;
|
|
||||||
|
|
||||||
varying highp vec3 eyeVec;
|
varying highp vec3 eyeVec;
|
||||||
// Color of the light emitted by the light sources.
|
// Color of the light emitted by the light sources.
|
||||||
const vec3 artificialLight = vec3(1.04, 1.04, 1.04);
|
const vec3 artificialLight = vec3(1.04, 1.04, 1.04);
|
||||||
|
|
|
@ -56,7 +56,6 @@ public:
|
||||||
//! Returns bits per pixel.
|
//! Returns bits per pixel.
|
||||||
u32 getBitsPerPixel() const
|
u32 getBitsPerPixel() const
|
||||||
{
|
{
|
||||||
|
|
||||||
return getBitsPerPixelFromFormat(Format);
|
return getBitsPerPixelFromFormat(Format);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,30 +68,12 @@ enum E_TEXTURE_CREATION_FLAG
|
||||||
not recommended to enable this flag. */
|
not recommended to enable this flag. */
|
||||||
ETCF_NO_ALPHA_CHANNEL = 0x00000020,
|
ETCF_NO_ALPHA_CHANNEL = 0x00000020,
|
||||||
|
|
||||||
//! Allow the Driver to use Non-Power-2-Textures
|
|
||||||
/** BurningVideo can handle Non-Power-2 Textures in 2D (GUI), but not in 3D. */
|
|
||||||
ETCF_ALLOW_NON_POWER_2 = 0x00000040,
|
|
||||||
|
|
||||||
//! Allow the driver to keep a copy of the texture in memory
|
//! Allow the driver to keep a copy of the texture in memory
|
||||||
/** Enabling this makes calls to ITexture::lock a lot faster, but costs main memory.
|
/** Enabling this makes calls to ITexture::lock a lot faster, but costs main memory.
|
||||||
This is disabled by default.
|
This is disabled by default.
|
||||||
*/
|
*/
|
||||||
ETCF_ALLOW_MEMORY_COPY = 0x00000080,
|
ETCF_ALLOW_MEMORY_COPY = 0x00000080,
|
||||||
|
|
||||||
//! Enable automatic updating mip maps when the base texture changes.
|
|
||||||
/** Default is true.
|
|
||||||
This flag is only used when ETCF_CREATE_MIP_MAPS is also enabled and if the driver supports it.
|
|
||||||
Please note:
|
|
||||||
- On D3D (and maybe older OGL?) you can no longer manually set mipmap data when enabled
|
|
||||||
(for example mips from image loading will be ignored).
|
|
||||||
- On D3D (and maybe older OGL?) texture locking for mipmap levels usually won't work anymore.
|
|
||||||
- On new OGL this flag is ignored.
|
|
||||||
- When disabled you do _not_ get hardware mipmaps on D3D, so mipmap generation can be slower.
|
|
||||||
- When disabled you can still update your mipmaps when the texture changed by manually calling regenerateMipMapLevels.
|
|
||||||
- You can still call regenerateMipMapLevels when this flag is enabled (it will be a hint on d3d to update mips immediately)
|
|
||||||
*/
|
|
||||||
ETCF_AUTO_GENERATE_MIP_MAPS = 0x00000100,
|
|
||||||
|
|
||||||
/** This flag is never used, it only forces the compiler to compile
|
/** This flag is never used, it only forces the compiler to compile
|
||||||
these enumeration values to 32 bit. */
|
these enumeration values to 32 bit. */
|
||||||
ETCF_FORCE_32_BIT_DO_NOT_USE = 0x7fffffff
|
ETCF_FORCE_32_BIT_DO_NOT_USE = 0x7fffffff
|
||||||
|
@ -137,19 +119,6 @@ enum E_TEXTURE_LOCK_FLAGS
|
||||||
ETLF_FLIP_Y_UP_RTT = 1
|
ETLF_FLIP_Y_UP_RTT = 1
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Where did the last IVideoDriver::getTexture call find this texture
|
|
||||||
enum E_TEXTURE_SOURCE
|
|
||||||
{
|
|
||||||
//! IVideoDriver::getTexture was never called (texture created otherwise)
|
|
||||||
ETS_UNKNOWN,
|
|
||||||
|
|
||||||
//! Texture has been found in cache
|
|
||||||
ETS_FROM_CACHE,
|
|
||||||
|
|
||||||
//! Texture had to be loaded
|
|
||||||
ETS_FROM_FILE
|
|
||||||
};
|
|
||||||
|
|
||||||
//! Enumeration describing the type of ITexture.
|
//! Enumeration describing the type of ITexture.
|
||||||
enum E_TEXTURE_TYPE
|
enum E_TEXTURE_TYPE
|
||||||
{
|
{
|
||||||
|
@ -178,7 +147,7 @@ public:
|
||||||
//! constructor
|
//! constructor
|
||||||
ITexture(const io::path &name, E_TEXTURE_TYPE type) :
|
ITexture(const io::path &name, E_TEXTURE_TYPE type) :
|
||||||
NamedPath(name), DriverType(EDT_NULL), OriginalColorFormat(ECF_UNKNOWN),
|
NamedPath(name), DriverType(EDT_NULL), OriginalColorFormat(ECF_UNKNOWN),
|
||||||
ColorFormat(ECF_UNKNOWN), Pitch(0), HasMipMaps(false), IsRenderTarget(false), Source(ETS_UNKNOWN), Type(type)
|
ColorFormat(ECF_UNKNOWN), Pitch(0), HasMipMaps(false), IsRenderTarget(false), Type(type)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,12 +244,6 @@ public:
|
||||||
//! Get name of texture (in most cases this is the filename)
|
//! Get name of texture (in most cases this is the filename)
|
||||||
const io::SNamedPath &getName() const { return NamedPath; }
|
const io::SNamedPath &getName() const { return NamedPath; }
|
||||||
|
|
||||||
//! Check where the last IVideoDriver::getTexture found this texture
|
|
||||||
E_TEXTURE_SOURCE getSource() const { return Source; }
|
|
||||||
|
|
||||||
//! Used internally by the engine to update Source status on IVideoDriver::getTexture calls.
|
|
||||||
void updateSource(E_TEXTURE_SOURCE source) { Source = source; }
|
|
||||||
|
|
||||||
//! Returns if the texture has an alpha channel
|
//! Returns if the texture has an alpha channel
|
||||||
bool hasAlpha() const
|
bool hasAlpha() const
|
||||||
{
|
{
|
||||||
|
@ -329,7 +292,6 @@ protected:
|
||||||
u32 Pitch;
|
u32 Pitch;
|
||||||
bool HasMipMaps;
|
bool HasMipMaps;
|
||||||
bool IsRenderTarget;
|
bool IsRenderTarget;
|
||||||
E_TEXTURE_SOURCE Source;
|
|
||||||
E_TEXTURE_TYPE Type;
|
E_TEXTURE_TYPE Type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -464,26 +464,6 @@ public:
|
||||||
forwards.Z * pseudoMatrix[8]));
|
forwards.Z * pseudoMatrix[8]));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Fills an array of 4 values with the vector data (usually floats).
|
|
||||||
/** Useful for setting in shader constants for example. The fourth value
|
|
||||||
will always be 0. */
|
|
||||||
void getAs4Values(T *array) const
|
|
||||||
{
|
|
||||||
array[0] = X;
|
|
||||||
array[1] = Y;
|
|
||||||
array[2] = Z;
|
|
||||||
array[3] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! Fills an array of 3 values with the vector data (usually floats).
|
|
||||||
/** Useful for setting in shader constants for example.*/
|
|
||||||
void getAs3Values(T *array) const
|
|
||||||
{
|
|
||||||
array[0] = X;
|
|
||||||
array[1] = Y;
|
|
||||||
array[2] = Z;
|
|
||||||
}
|
|
||||||
|
|
||||||
//! X coordinate of the vector
|
//! X coordinate of the vector
|
||||||
T X;
|
T X;
|
||||||
|
|
||||||
|
|
|
@ -71,18 +71,16 @@ void CGUIFont::setMaxHeight()
|
||||||
|
|
||||||
void CGUIFont::pushTextureCreationFlags(bool (&flags)[3])
|
void CGUIFont::pushTextureCreationFlags(bool (&flags)[3])
|
||||||
{
|
{
|
||||||
flags[0] = Driver->getTextureCreationFlag(video::ETCF_ALLOW_NON_POWER_2);
|
flags[0] = false;
|
||||||
flags[1] = Driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
|
flags[1] = Driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS);
|
||||||
flags[2] = Driver->getTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY);
|
flags[2] = Driver->getTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY);
|
||||||
|
|
||||||
Driver->setTextureCreationFlag(video::ETCF_ALLOW_NON_POWER_2, true);
|
|
||||||
Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
|
Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false);
|
||||||
Driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, true);
|
Driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGUIFont::popTextureCreationFlags(const bool (&flags)[3])
|
void CGUIFont::popTextureCreationFlags(const bool (&flags)[3])
|
||||||
{
|
{
|
||||||
Driver->setTextureCreationFlag(video::ETCF_ALLOW_NON_POWER_2, flags[0]);
|
|
||||||
Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flags[1]);
|
Driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flags[1]);
|
||||||
Driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, flags[2]);
|
Driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, flags[2]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,10 @@ CImage::CImage(ECOLOR_FORMAT format, const core::dimension2d<u32> &size, void *d
|
||||||
IImage(format, size, deleteMemory)
|
IImage(format, size, deleteMemory)
|
||||||
{
|
{
|
||||||
if (ownForeignMemory) {
|
if (ownForeignMemory) {
|
||||||
Data = (u8 *)data;
|
_IRR_DEBUG_BREAK_IF(!data)
|
||||||
|
Data = reinterpret_cast<u8*>(data);
|
||||||
|
if (reinterpret_cast<uintptr_t>(data) % sizeof(u32) != 0)
|
||||||
|
os::Printer::log("CImage created with foreign memory that's not aligned", ELL_WARNING);
|
||||||
} else {
|
} else {
|
||||||
const u32 dataSize = getDataSizeFromFormat(Format, Size.Width, Size.Height);
|
const u32 dataSize = getDataSizeFromFormat(Format, Size.Width, Size.Height);
|
||||||
const u32 allocSize = align_next(dataSize, 16);
|
const u32 allocSize = align_next(dataSize, 16);
|
||||||
|
|
|
@ -71,7 +71,6 @@ CNullDriver::CNullDriver(io::IFileSystem *io, const core::dimension2d<u32> &scre
|
||||||
|
|
||||||
setTextureCreationFlag(ETCF_ALWAYS_32_BIT, true);
|
setTextureCreationFlag(ETCF_ALWAYS_32_BIT, true);
|
||||||
setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, true);
|
setTextureCreationFlag(ETCF_CREATE_MIP_MAPS, true);
|
||||||
setTextureCreationFlag(ETCF_AUTO_GENERATE_MIP_MAPS, true);
|
|
||||||
setTextureCreationFlag(ETCF_ALLOW_MEMORY_COPY, false);
|
setTextureCreationFlag(ETCF_ALLOW_MEMORY_COPY, false);
|
||||||
|
|
||||||
ViewPort = core::rect<s32>(core::position2d<s32>(0, 0), core::dimension2di(screenSize));
|
ViewPort = core::rect<s32>(core::position2d<s32>(0, 0), core::dimension2di(screenSize));
|
||||||
|
@ -406,17 +405,13 @@ ITexture *CNullDriver::getTexture(const io::path &filename)
|
||||||
const io::path absolutePath = FileSystem->getAbsolutePath(filename);
|
const io::path absolutePath = FileSystem->getAbsolutePath(filename);
|
||||||
|
|
||||||
ITexture *texture = findTexture(absolutePath);
|
ITexture *texture = findTexture(absolutePath);
|
||||||
if (texture) {
|
if (texture)
|
||||||
texture->updateSource(ETS_FROM_CACHE);
|
|
||||||
return texture;
|
return texture;
|
||||||
}
|
|
||||||
|
|
||||||
// Then try the raw filename, which might be in an Archive
|
// Then try the raw filename, which might be in an Archive
|
||||||
texture = findTexture(filename);
|
texture = findTexture(filename);
|
||||||
if (texture) {
|
if (texture)
|
||||||
texture->updateSource(ETS_FROM_CACHE);
|
|
||||||
return texture;
|
return texture;
|
||||||
}
|
|
||||||
|
|
||||||
// Now try to open the file using the complete path.
|
// Now try to open the file using the complete path.
|
||||||
io::IReadFile *file = FileSystem->createAndOpenFile(absolutePath);
|
io::IReadFile *file = FileSystem->createAndOpenFile(absolutePath);
|
||||||
|
@ -430,7 +425,6 @@ ITexture *CNullDriver::getTexture(const io::path &filename)
|
||||||
// Re-check name for actual archive names
|
// Re-check name for actual archive names
|
||||||
texture = findTexture(file->getFileName());
|
texture = findTexture(file->getFileName());
|
||||||
if (texture) {
|
if (texture) {
|
||||||
texture->updateSource(ETS_FROM_CACHE);
|
|
||||||
file->drop();
|
file->drop();
|
||||||
return texture;
|
return texture;
|
||||||
}
|
}
|
||||||
|
@ -439,7 +433,6 @@ ITexture *CNullDriver::getTexture(const io::path &filename)
|
||||||
file->drop();
|
file->drop();
|
||||||
|
|
||||||
if (texture) {
|
if (texture) {
|
||||||
texture->updateSource(ETS_FROM_FILE);
|
|
||||||
addTexture(texture);
|
addTexture(texture);
|
||||||
texture->drop(); // drop it because we created it, one grab too much
|
texture->drop(); // drop it because we created it, one grab too much
|
||||||
} else
|
} else
|
||||||
|
@ -459,15 +452,12 @@ ITexture *CNullDriver::getTexture(io::IReadFile *file)
|
||||||
if (file) {
|
if (file) {
|
||||||
texture = findTexture(file->getFileName());
|
texture = findTexture(file->getFileName());
|
||||||
|
|
||||||
if (texture) {
|
if (texture)
|
||||||
texture->updateSource(ETS_FROM_CACHE);
|
|
||||||
return texture;
|
return texture;
|
||||||
}
|
|
||||||
|
|
||||||
texture = loadTextureFromFile(file);
|
texture = loadTextureFromFile(file);
|
||||||
|
|
||||||
if (texture) {
|
if (texture) {
|
||||||
texture->updateSource(ETS_FROM_FILE);
|
|
||||||
addTexture(texture);
|
addTexture(texture);
|
||||||
texture->drop(); // drop it because we created it, one grab too much
|
texture->drop(); // drop it because we created it, one grab too much
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ public:
|
||||||
_IRR_DEBUG_BREAK_IF(srcImages.empty())
|
_IRR_DEBUG_BREAK_IF(srcImages.empty())
|
||||||
|
|
||||||
DriverType = Driver->getDriverType();
|
DriverType = Driver->getDriverType();
|
||||||
_IRR_DEBUG_BREAK_IF(Type == ETT_2D_MS); // not supported by this constructor
|
_IRR_DEBUG_BREAK_IF(Type == ETT_2D_MS) // not supported by this constructor
|
||||||
TextureType = TextureTypeIrrToGL(Type);
|
TextureType = TextureTypeIrrToGL(Type);
|
||||||
HasMipMaps = Driver->getTextureCreationFlag(ETCF_CREATE_MIP_MAPS);
|
HasMipMaps = Driver->getTextureCreationFlag(ETCF_CREATE_MIP_MAPS);
|
||||||
KeepImage = Driver->getTextureCreationFlag(ETCF_ALLOW_MEMORY_COPY);
|
KeepImage = Driver->getTextureCreationFlag(ETCF_ALLOW_MEMORY_COPY);
|
||||||
|
@ -60,7 +60,6 @@ public:
|
||||||
if (!InternalFormat)
|
if (!InternalFormat)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef _DEBUG
|
|
||||||
char lbuf[128];
|
char lbuf[128];
|
||||||
snprintf_irr(lbuf, sizeof(lbuf),
|
snprintf_irr(lbuf, sizeof(lbuf),
|
||||||
"COpenGLCoreTexture: Type = %d Size = %dx%d (%dx%d) ColorFormat = %d (%d)%s -> %#06x %#06x %#06x%s",
|
"COpenGLCoreTexture: Type = %d Size = %dx%d (%dx%d) ColorFormat = %d (%d)%s -> %#06x %#06x %#06x%s",
|
||||||
|
@ -70,7 +69,6 @@ public:
|
||||||
InternalFormat, PixelFormat, PixelType, Converter ? " (c)" : ""
|
InternalFormat, PixelFormat, PixelType, Converter ? " (c)" : ""
|
||||||
);
|
);
|
||||||
os::Printer::log(lbuf, ELL_DEBUG);
|
os::Printer::log(lbuf, ELL_DEBUG);
|
||||||
#endif
|
|
||||||
|
|
||||||
const auto *tmpImages = &srcImages;
|
const auto *tmpImages = &srcImages;
|
||||||
|
|
||||||
|
@ -111,7 +109,6 @@ public:
|
||||||
GL.TexParameteri(TextureType, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
GL.TexParameteri(TextureType, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
GL.TexParameteri(TextureType, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
GL.TexParameteri(TextureType, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
|
||||||
#ifdef GL_GENERATE_MIPMAP_HINT
|
|
||||||
if (HasMipMaps) {
|
if (HasMipMaps) {
|
||||||
if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED))
|
if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED))
|
||||||
GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
|
GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
|
||||||
|
@ -120,8 +117,6 @@ public:
|
||||||
else
|
else
|
||||||
GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE);
|
GL.Hint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
TEST_GL_ERROR(Driver);
|
TEST_GL_ERROR(Driver);
|
||||||
|
|
||||||
for (size_t i = 0; i < tmpImages->size(); ++i)
|
for (size_t i = 0; i < tmpImages->size(); ++i)
|
||||||
|
@ -189,7 +184,6 @@ public:
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _DEBUG
|
|
||||||
char lbuf[100];
|
char lbuf[100];
|
||||||
snprintf_irr(lbuf, sizeof(lbuf),
|
snprintf_irr(lbuf, sizeof(lbuf),
|
||||||
"COpenGLCoreTexture: RTT Type = %d Size = %dx%d ColorFormat = %d -> %#06x %#06x %#06x%s",
|
"COpenGLCoreTexture: RTT Type = %d Size = %dx%d ColorFormat = %d -> %#06x %#06x %#06x%s",
|
||||||
|
@ -197,7 +191,6 @@ public:
|
||||||
InternalFormat, PixelFormat, PixelType, Converter ? " (c)" : ""
|
InternalFormat, PixelFormat, PixelType, Converter ? " (c)" : ""
|
||||||
);
|
);
|
||||||
os::Printer::log(lbuf, ELL_DEBUG);
|
os::Printer::log(lbuf, ELL_DEBUG);
|
||||||
#endif
|
|
||||||
|
|
||||||
GL.GenTextures(1, &TextureName);
|
GL.GenTextures(1, &TextureName);
|
||||||
TEST_GL_ERROR(Driver);
|
TEST_GL_ERROR(Driver);
|
||||||
|
@ -218,10 +211,7 @@ public:
|
||||||
GL.TexParameteri(TextureType, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
GL.TexParameteri(TextureType, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
GL.TexParameteri(TextureType, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
GL.TexParameteri(TextureType, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
GL.TexParameteri(TextureType, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
GL.TexParameteri(TextureType, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
|
||||||
#if defined(GL_VERSION_1_2)
|
|
||||||
GL.TexParameteri(TextureType, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
|
GL.TexParameteri(TextureType, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
|
||||||
#endif
|
|
||||||
|
|
||||||
StatesCache.WrapU = ETC_CLAMP_TO_EDGE;
|
StatesCache.WrapU = ETC_CLAMP_TO_EDGE;
|
||||||
StatesCache.WrapV = ETC_CLAMP_TO_EDGE;
|
StatesCache.WrapV = ETC_CLAMP_TO_EDGE;
|
||||||
|
@ -258,6 +248,9 @@ public:
|
||||||
GL.TexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, InternalFormat, Size.Width, Size.Height, 0, PixelFormat, PixelType, 0);
|
GL.TexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, InternalFormat, Size.Width, Size.Height, 0, PixelFormat, PixelType, 0);
|
||||||
GL.TexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, InternalFormat, Size.Width, Size.Height, 0, PixelFormat, PixelType, 0);
|
GL.TexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, InternalFormat, Size.Width, Size.Height, 0, PixelFormat, PixelType, 0);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
_IRR_DEBUG_BREAK_IF(1)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!name.empty())
|
if (!name.empty())
|
||||||
|
@ -306,6 +299,7 @@ public:
|
||||||
|
|
||||||
if (!LockImage) {
|
if (!LockImage) {
|
||||||
core::dimension2d<u32> lockImageSize(IImage::getMipMapsSize(Size, MipLevelStored));
|
core::dimension2d<u32> lockImageSize(IImage::getMipMapsSize(Size, MipLevelStored));
|
||||||
|
_IRR_DEBUG_BREAK_IF(lockImageSize.Width == 0 || lockImageSize.Height == 0)
|
||||||
|
|
||||||
// note: we save mipmap data also in the image because IImage doesn't allow saving single mipmap levels to the mipmap data
|
// note: we save mipmap data also in the image because IImage doesn't allow saving single mipmap levels to the mipmap data
|
||||||
LockImage = Driver->createImage(ColorFormat, lockImageSize);
|
LockImage = Driver->createImage(ColorFormat, lockImageSize);
|
||||||
|
@ -321,7 +315,7 @@ public:
|
||||||
|
|
||||||
if (use_gl_impl) {
|
if (use_gl_impl) {
|
||||||
|
|
||||||
IImage *tmpImage = LockImage; // not sure yet if the size required by glGetTexImage is always correct, if not we might have to allocate a different tmpImage and convert colors later on.
|
IImage *tmpImage = LockImage;
|
||||||
|
|
||||||
Driver->getCacheHandler()->getTextureCache().set(0, this);
|
Driver->getCacheHandler()->getTextureCache().set(0, this);
|
||||||
TEST_GL_ERROR(Driver);
|
TEST_GL_ERROR(Driver);
|
||||||
|
@ -620,6 +614,7 @@ protected:
|
||||||
TEST_GL_ERROR(Driver);
|
TEST_GL_ERROR(Driver);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
_IRR_DEBUG_BREAK_IF(1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -637,6 +632,7 @@ protected:
|
||||||
TEST_GL_ERROR(Driver);
|
TEST_GL_ERROR(Driver);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
_IRR_DEBUG_BREAK_IF(1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,8 +50,7 @@ void COpenGL3Driver::initFeatures()
|
||||||
TextureFormats[ECF_A1R5G5B5] = {GL_RGB5_A1, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV}; // WARNING: may not be renderable
|
TextureFormats[ECF_A1R5G5B5] = {GL_RGB5_A1, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV}; // WARNING: may not be renderable
|
||||||
TextureFormats[ECF_R5G6B5] = {GL_RGB, GL_RGB, GL_UNSIGNED_SHORT_5_6_5}; // GL_RGB565 is an extension until 4.1
|
TextureFormats[ECF_R5G6B5] = {GL_RGB, GL_RGB, GL_UNSIGNED_SHORT_5_6_5}; // GL_RGB565 is an extension until 4.1
|
||||||
TextureFormats[ECF_R8G8B8] = {GL_RGB8, GL_RGB, GL_UNSIGNED_BYTE}; // WARNING: may not be renderable
|
TextureFormats[ECF_R8G8B8] = {GL_RGB8, GL_RGB, GL_UNSIGNED_BYTE}; // WARNING: may not be renderable
|
||||||
// FIXME: shouldn't this simply be GL_UNSIGNED_BYTE?
|
TextureFormats[ECF_A8R8G8B8] = {GL_RGBA8, GL_BGRA, GL_UNSIGNED_BYTE};
|
||||||
TextureFormats[ECF_A8R8G8B8] = {GL_RGBA8, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV};
|
|
||||||
TextureFormats[ECF_R16F] = {GL_R16F, GL_RED, GL_HALF_FLOAT};
|
TextureFormats[ECF_R16F] = {GL_R16F, GL_RED, GL_HALF_FLOAT};
|
||||||
TextureFormats[ECF_G16R16F] = {GL_RG16F, GL_RG, GL_HALF_FLOAT};
|
TextureFormats[ECF_G16R16F] = {GL_RG16F, GL_RG, GL_HALF_FLOAT};
|
||||||
TextureFormats[ECF_A16B16G16R16F] = {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT};
|
TextureFormats[ECF_A16B16G16R16F] = {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT};
|
||||||
|
|
|
@ -146,7 +146,7 @@ void COpenGLES2Driver::initFeatures()
|
||||||
MaxTextureSize = GetInteger(GL_MAX_TEXTURE_SIZE);
|
MaxTextureSize = GetInteger(GL_MAX_TEXTURE_SIZE);
|
||||||
if (LODBiasSupported)
|
if (LODBiasSupported)
|
||||||
GL.GetFloatv(GL_MAX_TEXTURE_LOD_BIAS, &MaxTextureLODBias);
|
GL.GetFloatv(GL_MAX_TEXTURE_LOD_BIAS, &MaxTextureLODBias);
|
||||||
GL.GetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, DimAliasedLine); // NOTE: this is not in the OpenGL ES 2.0 spec...
|
GL.GetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, DimAliasedLine);
|
||||||
GL.GetFloatv(GL_ALIASED_POINT_SIZE_RANGE, DimAliasedPoint);
|
GL.GetFloatv(GL_ALIASED_POINT_SIZE_RANGE, DimAliasedPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ void MapblockMeshGenerator::getSpecialTile(int index, TileSpec *tile_ret, bool a
|
||||||
|
|
||||||
for (auto &layernum : tile_ret->layers) {
|
for (auto &layernum : tile_ret->layers) {
|
||||||
TileLayer *layer = &layernum;
|
TileLayer *layer = &layernum;
|
||||||
if (layer->texture_id == 0)
|
if (layer->empty())
|
||||||
continue;
|
continue;
|
||||||
top_layer = layer;
|
top_layer = layer;
|
||||||
if (!layer->has_color)
|
if (!layer->has_color)
|
||||||
|
|
|
@ -347,7 +347,7 @@ void getNodeTileN(MapNode mn, const v3s16 &p, u8 tileindex, MeshMakeData *data,
|
||||||
tile = f.tiles[tileindex];
|
tile = f.tiles[tileindex];
|
||||||
bool has_crack = p == data->m_crack_pos_relative;
|
bool has_crack = p == data->m_crack_pos_relative;
|
||||||
for (TileLayer &layer : tile.layers) {
|
for (TileLayer &layer : tile.layers) {
|
||||||
if (layer.texture_id == 0)
|
if (layer.empty())
|
||||||
continue;
|
continue;
|
||||||
if (!layer.has_color)
|
if (!layer.has_color)
|
||||||
mn.getColor(f, &(layer.color));
|
mn.getColor(f, &(layer.color));
|
||||||
|
|
|
@ -12,7 +12,7 @@ void MeshCollector::append(const TileSpec &tile, const video::S3DVertex *vertice
|
||||||
{
|
{
|
||||||
for (int layernum = 0; layernum < MAX_TILE_LAYERS; layernum++) {
|
for (int layernum = 0; layernum < MAX_TILE_LAYERS; layernum++) {
|
||||||
const TileLayer *layer = &tile.layers[layernum];
|
const TileLayer *layer = &tile.layers[layernum];
|
||||||
if (layer->texture_id == 0)
|
if (layer->empty())
|
||||||
continue;
|
continue;
|
||||||
append(*layer, vertices, numVertices, indices, numIndices, layernum,
|
append(*layer, vertices, numVertices, indices, numIndices, layernum,
|
||||||
tile.world_aligned);
|
tile.world_aligned);
|
||||||
|
|
|
@ -897,6 +897,8 @@ video::IImage* CGUITTFont::createTextureFromChar(const char32_t& ch)
|
||||||
|
|
||||||
// Acquire a read-only lock of the corresponding page texture.
|
// Acquire a read-only lock of the corresponding page texture.
|
||||||
void* ptr = tex->lock(video::ETLM_READ_ONLY);
|
void* ptr = tex->lock(video::ETLM_READ_ONLY);
|
||||||
|
if (!ptr)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
video::ECOLOR_FORMAT format = tex->getColorFormat();
|
video::ECOLOR_FORMAT format = tex->getColorFormat();
|
||||||
core::dimension2du tex_size = tex->getOriginalSize();
|
core::dimension2du tex_size = tex->getOriginalSize();
|
||||||
|
|
|
@ -200,9 +200,13 @@ namespace gui
|
||||||
//! Updates the texture atlas with new glyphs.
|
//! Updates the texture atlas with new glyphs.
|
||||||
void updateTexture()
|
void updateTexture()
|
||||||
{
|
{
|
||||||
if (!dirty) return;
|
if (!dirty)
|
||||||
|
return;
|
||||||
|
|
||||||
void* ptr = texture->lock();
|
void* ptr = texture->lock();
|
||||||
|
if (!ptr)
|
||||||
|
return;
|
||||||
|
|
||||||
video::ECOLOR_FORMAT format = texture->getColorFormat();
|
video::ECOLOR_FORMAT format = texture->getColorFormat();
|
||||||
core::dimension2du size = texture->getOriginalSize();
|
core::dimension2du size = texture->getOriginalSize();
|
||||||
video::IImage* pageholder = driver->createImageFromData(format, size, ptr, true, false);
|
video::IImage* pageholder = driver->createImageFromData(format, size, ptr, true, false);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue