[Scummvm-git-logs] scummvm master -> a9df1f82bebb52d8a8ec39ffbb93202a91a7c718
aquadran
noreply at scummvm.org
Thu Oct 2 09:13:50 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
a9df1f82be WINTERMUTE: Split texture path for 2D only and 3D mesh for TinyGL
Commit: a9df1f82bebb52d8a8ec39ffbb93202a91a7c718
https://github.com/scummvm/scummvm/commit/a9df1f82bebb52d8a8ec39ffbb93202a91a7c718
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-10-02T11:12:33+02:00
Commit Message:
WINTERMUTE: Split texture path for 2D only and 3D mesh for TinyGL
Changed paths:
engines/wintermute/ad/ad_actor_3dx.cpp
engines/wintermute/base/base_game.cpp
engines/wintermute/base/base_object.cpp
engines/wintermute/base/base_sub_frame.cpp
engines/wintermute/base/base_surface_storage.cpp
engines/wintermute/base/base_surface_storage.h
engines/wintermute/base/gfx/base_surface.h
engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
engines/wintermute/base/gfx/opengl/base_surface_opengl3d.h
engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
engines/wintermute/base/gfx/osystem/base_surface_osystem.h
engines/wintermute/base/gfx/tinygl/base_surface_tinygl.cpp
engines/wintermute/base/gfx/tinygl/base_surface_tinygl.h
engines/wintermute/base/gfx/xmaterial.cpp
diff --git a/engines/wintermute/ad/ad_actor_3dx.cpp b/engines/wintermute/ad/ad_actor_3dx.cpp
index ab975fd9cbd..1f8d0817c82 100644
--- a/engines/wintermute/ad/ad_actor_3dx.cpp
+++ b/engines/wintermute/ad/ad_actor_3dx.cpp
@@ -1166,7 +1166,7 @@ bool AdActor3DX::loadBuffer(char *buffer, bool complete) {
_game->_surfaceStorage->removeSurface(_shadowImage);
_shadowImage = nullptr;
- _shadowImage = _game->_surfaceStorage->addSurface(params);
+ _shadowImage = _game->_surfaceStorage->addSurface(params, false);
break;
case TOKEN_BLOCKED_REGION: {
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index e187fefb3f9..d4061dc25b3 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -631,7 +631,7 @@ bool BaseGame::initialize2() { // we know whether we are going to be accelerated
#if defined(USE_TINYGL)
if (!force2dRenderer && matchingRendererType == Graphics::kRendererTypeTinyGL) {
if (_playing3DGame) {
- _renderer3D = nullptr;//makeTinyGL3DRenderer(this);
+ _renderer3D = makeTinyGL3DRenderer(this);
}
}
#endif // defined(USE_TINYGL)
@@ -997,7 +997,7 @@ bool BaseGame::loadBuffer(char *buffer, bool complete) {
}
_shadowImage = nullptr;
- _shadowImage = _game->_surfaceStorage->addSurface(params);
+ _shadowImage = _game->_surfaceStorage->addSurface(params, false);
break;
#endif
@@ -1129,7 +1129,7 @@ bool BaseGame::loadBuffer(char *buffer, bool complete) {
}
#ifdef ENABLE_WME3D
if (!_shadowImage) {
- _shadowImage = _game->_surfaceStorage->addSurface("shadow.png");
+ _shadowImage = _game->_surfaceStorage->addSurface("shadow.png", false);
}
#endif
@@ -4241,7 +4241,7 @@ bool BaseGame::saveGame(int32 slot, const char *desc, bool quickSave) {
SAFE_DELETE(_saveLoadImage);
if (_saveImageName && _saveImageName[0] != '\0') {
_saveLoadImage = _game->_renderer->createSurface();
- if (!_saveLoadImage || DID_FAIL(_saveLoadImage->create(_saveImageName, true, 0, 0, 0))) {
+ if (!_saveLoadImage || DID_FAIL(_saveLoadImage->create(_saveImageName, true, true, 0, 0, 0))) {
SAFE_DELETE(_saveLoadImage);
}
}
@@ -4294,7 +4294,7 @@ bool BaseGame::loadGame(const char *filename) {
if (_loadImageName && _loadImageName[0] != '\0') {
_saveLoadImage = _game->_renderer->createSurface();
- if (!_saveLoadImage || DID_FAIL(_saveLoadImage->create(_loadImageName, true, 0, 0, 0))) {
+ if (!_saveLoadImage || DID_FAIL(_saveLoadImage->create(_loadImageName, true, true, 0, 0, 0))) {
SAFE_DELETE(_saveLoadImage);
}
}
diff --git a/engines/wintermute/base/base_object.cpp b/engines/wintermute/base/base_object.cpp
index 454b6cf5a54..2662f4e1ded 100644
--- a/engines/wintermute/base/base_object.cpp
+++ b/engines/wintermute/base/base_object.cpp
@@ -527,7 +527,7 @@ bool BaseObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
}
if (val->isString()) {
- _shadowImage = _game->_surfaceStorage->addSurface(val->getString());
+ _shadowImage = _game->_surfaceStorage->addSurface(val->getString(), false);
stack->pushBool(_shadowImage != nullptr);
} else {
stack->pushBool(true);
@@ -1135,7 +1135,7 @@ bool BaseObject::persist(BasePersistenceManager *persistMgr) {
if (persistMgr->checkVersion(1, 6, 1)) {
persistMgr->transferString(TMEMBER(tempString));
if (!tempString.empty()) {
- _shadowImage = _game->_surfaceStorage->addSurface(tempString.c_str());
+ _shadowImage = _game->_surfaceStorage->addSurface(tempString.c_str(), false);
}
}
}
diff --git a/engines/wintermute/base/base_sub_frame.cpp b/engines/wintermute/base/base_sub_frame.cpp
index 94cea4c55b8..99c47c97cdb 100644
--- a/engines/wintermute/base/base_sub_frame.cpp
+++ b/engines/wintermute/base/base_sub_frame.cpp
@@ -686,7 +686,7 @@ bool BaseSubFrame::setSurface(const char *filename, bool defaultCK, byte ckRed,
SAFE_DELETE_ARRAY(_surfaceFilename);
- _surface = _game->_surfaceStorage->addSurface(filename, defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
+ _surface = _game->_surfaceStorage->addSurface(filename, true, defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
if (_surface) {
size_t filenameSize = strlen(filename) + 1;
_surfaceFilename = new char[filenameSize];
@@ -712,7 +712,7 @@ bool BaseSubFrame::setSurfaceSimple() {
_surface = nullptr;
return STATUS_OK;
}
- _surface = _game->_surfaceStorage->addSurface(_surfaceFilename, _ckDefault, _ckRed, _ckGreen, _ckBlue, _lifeTime, _keepLoaded);
+ _surface = _game->_surfaceStorage->addSurface(_surfaceFilename, true, _ckDefault, _ckRed, _ckGreen, _ckBlue, _lifeTime, _keepLoaded);
if (_surface) {
return STATUS_OK;
} else {
diff --git a/engines/wintermute/base/base_surface_storage.cpp b/engines/wintermute/base/base_surface_storage.cpp
index 7699392b665..5ed14a2b4fe 100644
--- a/engines/wintermute/base/base_surface_storage.cpp
+++ b/engines/wintermute/base/base_surface_storage.cpp
@@ -102,7 +102,7 @@ bool BaseSurfaceStorage::removeSurface(BaseSurface *surface) {
//////////////////////////////////////////////////////////////////////
-BaseSurface *BaseSurfaceStorage::addSurface(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
+BaseSurface *BaseSurfaceStorage::addSurface(const char *filename, bool texture2D, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
for (int32 i = 0; i < _surfaces.getSize(); i++) {
if (scumm_stricmp(_surfaces[i]->_filename, filename) == 0) {
_surfaces[i]->_referenceCount++;
@@ -115,9 +115,9 @@ BaseSurface *BaseSurfaceStorage::addSurface(const char *filename, bool defaultCK
_game->LOG(0, "Missing image: '%s'", filename);
}
if (_game->_debugMode) {
- return addSurface("invalid_debug.bmp", defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
+ return addSurface("invalid_debug.bmp", texture2D, defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
} else {
- return addSurface("invalid.bmp", defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
+ return addSurface("invalid.bmp", texture2D, defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded);
}
}
@@ -128,7 +128,7 @@ BaseSurface *BaseSurfaceStorage::addSurface(const char *filename, bool defaultCK
return nullptr;
}
- if (DID_FAIL(surface->create(filename, defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded))) {
+ if (DID_FAIL(surface->create(filename, texture2D, defaultCK, ckRed, ckGreen, ckBlue, lifeTime, keepLoaded))) {
delete surface;
return nullptr;
} else {
diff --git a/engines/wintermute/base/base_surface_storage.h b/engines/wintermute/base/base_surface_storage.h
index 84cc01cdf2a..64d02847fd2 100644
--- a/engines/wintermute/base/base_surface_storage.h
+++ b/engines/wintermute/base/base_surface_storage.h
@@ -43,7 +43,7 @@ public:
//DECLARE_PERSISTENT(BaseSurfaceStorage, BaseClass)
bool restoreAll();
- BaseSurface *addSurface(const char *filename, bool defaultCK = true, byte ckRed = 0, byte ckGreen = 0, byte ckBlue = 0, int lifeTime = -1, bool keepLoaded = false);
+ BaseSurface *addSurface(const char *filename, bool texture2D = true, bool defaultCK = true, byte ckRed = 0, byte ckGreen = 0, byte ckBlue = 0, int lifeTime = -1, bool keepLoaded = false);
bool removeSurface(BaseSurface *surface);
BaseSurfaceStorage(BaseGame *inGame);
~BaseSurfaceStorage() override;
diff --git a/engines/wintermute/base/gfx/base_surface.h b/engines/wintermute/base/gfx/base_surface.h
index 2a4a67d07dc..b130617950c 100644
--- a/engines/wintermute/base/gfx/base_surface.h
+++ b/engines/wintermute/base/gfx/base_surface.h
@@ -59,7 +59,7 @@ public:
virtual bool display(int x, int y, Common::Rect32 rect, Graphics::TSpriteBlendMode blendMode = Graphics::BLEND_NORMAL, bool mirrorX = false, bool mirrorY = false) = 0;
virtual bool displayTiled(int x, int y, Common::Rect32 rect, int numTimesX, int numTimesY) = 0;
virtual bool restore();
- virtual bool create(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime = -1, bool keepLoaded = false) = 0;
+ virtual bool create(const char *filename, bool texture2D, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime = -1, bool keepLoaded = false) = 0;
virtual bool create(int width, int height);
virtual bool setAlphaImage(const char *filename) {
return STATUS_FAILED;
diff --git a/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
index 246b8cfab42..107004cd72e 100644
--- a/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.cpp
@@ -40,9 +40,11 @@ BaseSurfaceOpenGL3D::BaseSurfaceOpenGL3D(BaseGame *game, BaseRenderer3D *rendere
}
BaseSurfaceOpenGL3D::~BaseSurfaceOpenGL3D() {
- glDeleteTextures(1, &_tex);
_renderer->invalidateTexture(this);
- _tex = 0;
+ if (_tex) {
+ glDeleteTextures(1, &_tex);
+ _tex = 0;
+ }
if (_imageData) {
_imageData->free();
@@ -58,9 +60,11 @@ BaseSurfaceOpenGL3D::~BaseSurfaceOpenGL3D() {
}
bool BaseSurfaceOpenGL3D::invalidate() {
- glDeleteTextures(1, &_tex);
_renderer->invalidateTexture(this);
- _tex = 0;
+ if (_tex) {
+ glDeleteTextures(1, &_tex);
+ _tex = 0;
+ }
if (_imageData) {
_imageData->free();
@@ -129,7 +133,7 @@ bool BaseSurfaceOpenGL3D::displayTiled(int x, int y, Common::Rect32 rect, int nu
return true;
}
-bool BaseSurfaceOpenGL3D::create(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
+bool BaseSurfaceOpenGL3D::create(const char *filename, bool texture2D, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
if (defaultCK) {
ckRed = 255;
ckGreen = 0;
diff --git a/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.h b/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.h
index de769a77046..0998e2cb3d5 100644
--- a/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.h
+++ b/engines/wintermute/base/gfx/opengl/base_surface_opengl3d.h
@@ -46,7 +46,7 @@ public:
bool displayTrans(int x, int y, Common::Rect32 rect, uint32 alpha = 0xFFFFFFFF, Graphics::TSpriteBlendMode blendMode = Graphics::BLEND_NORMAL, bool mirrorX = false, bool mirrorY = false, int offsetX = 0, int offsetY = 0) override;
bool display(int x, int y, Common::Rect32 rect, Graphics::TSpriteBlendMode blendMode = Graphics::BLEND_NORMAL, bool mirrorX = false, bool mirrorY = false) override;
bool displayTiled(int x, int y, Common::Rect32 rect, int numTimesX, int numTimesY) override;
- bool create(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime = -1, bool keepLoaded = false) override;
+ bool create(const char *filename, bool texture2D, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime = -1, bool keepLoaded = false) override;
bool create(int width, int height) override;
bool setAlphaImage(const char *filename) override;
bool putSurface(const Graphics::Surface &surface, bool hasAlpha = false) override;
diff --git a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
index c93d5d43c15..497c5f6513c 100644
--- a/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
+++ b/engines/wintermute/base/gfx/osystem/base_surface_osystem.cpp
@@ -78,7 +78,7 @@ BaseSurfaceOSystem::~BaseSurfaceOSystem() {
}
//////////////////////////////////////////////////////////////////////////
-bool BaseSurfaceOSystem::create(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
+bool BaseSurfaceOSystem::create(const char *filename, bool texture2D, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
if (defaultCK) {
ckRed = 255;
ckGreen = 0;
diff --git a/engines/wintermute/base/gfx/osystem/base_surface_osystem.h b/engines/wintermute/base/gfx/osystem/base_surface_osystem.h
index 7e96ca73525..2f35d51b783 100644
--- a/engines/wintermute/base/gfx/osystem/base_surface_osystem.h
+++ b/engines/wintermute/base/gfx/osystem/base_surface_osystem.h
@@ -42,7 +42,7 @@ public:
BaseSurfaceOSystem(BaseGame *inGame);
~BaseSurfaceOSystem() override;
- bool create(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime = -1, bool keepLoaded = false) override;
+ bool create(const char *filename, bool texture2D, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime = -1, bool keepLoaded = false) override;
bool create(int width, int height) override;
bool setAlphaImage(const char *filename) override;
diff --git a/engines/wintermute/base/gfx/tinygl/base_surface_tinygl.cpp b/engines/wintermute/base/gfx/tinygl/base_surface_tinygl.cpp
index 3a4a951d3c2..98f4f0a92ff 100644
--- a/engines/wintermute/base/gfx/tinygl/base_surface_tinygl.cpp
+++ b/engines/wintermute/base/gfx/tinygl/base_surface_tinygl.cpp
@@ -36,12 +36,16 @@
namespace Wintermute {
BaseSurfaceTinyGL::BaseSurfaceTinyGL(BaseGame *game, BaseRenderer3D *renderer)
-: BaseSurface(game), _renderer(renderer), _imageData(nullptr), _maskData(nullptr), _pixelOpReady(false), _surfaceModified(false) {
+: BaseSurface(game), _tex(0), _renderer(renderer), _imageData(nullptr), _maskData(nullptr), _pixelOpReady(false), _surfaceModified(false), _texture2D(true) {
_blitImage = tglGenBlitImage();
}
BaseSurfaceTinyGL::~BaseSurfaceTinyGL() {
_renderer->invalidateTexture(this);
+ if (_tex) {
+ tglDeleteTextures(1, &_tex);
+ _tex = 0;
+ }
if (_imageData) {
_imageData->free();
@@ -60,6 +64,10 @@ BaseSurfaceTinyGL::~BaseSurfaceTinyGL() {
bool BaseSurfaceTinyGL::invalidate() {
_renderer->invalidateTexture(this);
+ if (_tex) {
+ tglDeleteTextures(1, &_tex);
+ _tex = 0;
+ }
if (_imageData) {
_imageData->free();
@@ -128,13 +136,15 @@ bool BaseSurfaceTinyGL::displayTiled(int x, int y, Common::Rect32 rect, int numT
return true;
}
-bool BaseSurfaceTinyGL::create(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
+bool BaseSurfaceTinyGL::create(const char *filename, bool texture2D, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime, bool keepLoaded) {
if (defaultCK) {
ckRed = 255;
ckGreen = 0;
ckBlue = 255;
}
+ _texture2D = texture2D;
+
Common::String surfacefilename = filename;
BaseImage img = BaseImage();
if (!img.getImageInfo(surfacefilename, _width, _height)) {
@@ -259,6 +269,14 @@ bool BaseSurfaceTinyGL::create(int width, int height) {
_width = width;
_height = height;
+ if (!_texture2D) {
+ if (!_valid) {
+ tglGenTextures(1, &_tex);
+ }
+ tglBindTexture(TGL_TEXTURE_2D, _tex);
+ tglTexImage2D(TGL_TEXTURE_2D, 0, TGL_RGBA, _texWidth, _texHeight, 0, TGL_RGBA, TGL_UNSIGNED_BYTE, nullptr);
+ tglBindTexture(TGL_TEXTURE_2D, 0);
+ }
_valid = true;
return true;
}
@@ -276,7 +294,22 @@ bool BaseSurfaceTinyGL::putSurface(const Graphics::Surface &surface, bool hasAlp
_width = surface.w;
_height = surface.h;
- tglUploadBlitImage(_blitImage, *_imageData, 0, false);
+ if (_texture2D) {
+ tglUploadBlitImage(_blitImage, *_imageData, 0, false);
+ } else {
+ if (!_valid) {
+ tglGenTextures(1, &_tex);
+ }
+ _texWidth = Common::nextHigher2(_width);
+ _texHeight = Common::nextHigher2(_height);
+ tglBindTexture(TGL_TEXTURE_2D, _tex);
+ tglTexParameteri(TGL_TEXTURE_2D, TGL_TEXTURE_WRAP_S, TGL_REPEAT);
+ tglTexParameteri(TGL_TEXTURE_2D, TGL_TEXTURE_WRAP_T, TGL_REPEAT);
+ tglTexParameteri(TGL_TEXTURE_2D, TGL_TEXTURE_MIN_FILTER, TGL_LINEAR);
+ tglTexParameteri(TGL_TEXTURE_2D, TGL_TEXTURE_MAG_FILTER, TGL_LINEAR);
+ tglTexImage2D(TGL_TEXTURE_2D, 0, TGL_RGBA, _width, _height, 0, TGL_RGBA, TGL_UNSIGNED_BYTE, _imageData->getPixels());
+ tglBindTexture(TGL_TEXTURE_2D, 0);
+ }
_valid = true;
return true;
@@ -334,7 +367,13 @@ bool BaseSurfaceTinyGL::startPixelOp() {
bool BaseSurfaceTinyGL::endPixelOp() {
_pixelOpReady = false;
if (_surfaceModified) {
- tglUploadBlitImage(_blitImage, *_imageData, 0, false);
+ if (_texture2D) {
+ tglUploadBlitImage(_blitImage, *_imageData, 0, false);
+ } else {
+ tglBindTexture(TGL_TEXTURE_2D, _tex);
+ tglTexImage2D(TGL_TEXTURE_2D, 0, TGL_RGBA, _width, _height, 0, TGL_RGBA, TGL_UNSIGNED_BYTE, _imageData->getPixels());
+ tglBindTexture(TGL_TEXTURE_2D, 0);
+ }
_surfaceModified = false;
}
return true;
@@ -360,6 +399,10 @@ bool BaseSurfaceTinyGL::isTransparentAtLite(int x, int y) const {
void BaseSurfaceTinyGL::setTexture() {
prepareToDraw();
+
+ if (!_texture2D) {
+ tglBindTexture(TGL_TEXTURE_2D, _tex);
+ }
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/base/gfx/tinygl/base_surface_tinygl.h b/engines/wintermute/base/gfx/tinygl/base_surface_tinygl.h
index 0a47129f317..1884532c5e7 100644
--- a/engines/wintermute/base/gfx/tinygl/base_surface_tinygl.h
+++ b/engines/wintermute/base/gfx/tinygl/base_surface_tinygl.h
@@ -46,7 +46,7 @@ public:
bool displayTrans(int x, int y, Common::Rect32 rect, uint32 alpha = 0xFFFFFFFF, Graphics::TSpriteBlendMode blendMode = Graphics::BLEND_NORMAL, bool mirrorX = false, bool mirrorY = false, int offsetX = 0, int offsetY = 0) override;
bool display(int x, int y, Common::Rect32 rect, Graphics::TSpriteBlendMode blendMode = Graphics::BLEND_NORMAL, bool mirrorX = false, bool mirrorY = false) override;
bool displayTiled(int x, int y, Common::Rect32 rect, int numTimesX, int numTimesY) override;
- bool create(const char *filename, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime = -1, bool keepLoaded = false) override;
+ bool create(const char *filename, bool texture2D, bool defaultCK, byte ckRed, byte ckGreen, byte ckBlue, int lifeTime = -1, bool keepLoaded = false) override;
bool create(int width, int height) override;
bool setAlphaImage(const char *filename) override;
bool putSurface(const Graphics::Surface &surface, bool hasAlpha = false) override;
@@ -66,17 +66,29 @@ public:
return _height;
}
+ uint getGLTextureWidth() const {
+ return _texWidth;
+ }
+
+ uint getGLTextureHeight() const {
+ return _texHeight;
+ }
+
TinyGL::BlitImage *getBlitImage() {
return _blitImage;
}
private:
+ TGLuint _tex;
BaseRenderer3D *_renderer;
Graphics::Surface *_imageData;
Graphics::Surface *_maskData;
+ uint _texWidth;
+ uint _texHeight;
bool _pixelOpReady;
bool _surfaceModified;
TinyGL::BlitImage *_blitImage;
+ bool _texture2D;
bool loadImage();
void writeAlpha(Graphics::Surface *surface, const Graphics::Surface *mask);
diff --git a/engines/wintermute/base/gfx/xmaterial.cpp b/engines/wintermute/base/gfx/xmaterial.cpp
index a5cad4bc2ed..2cd8cd12be9 100644
--- a/engines/wintermute/base/gfx/xmaterial.cpp
+++ b/engines/wintermute/base/gfx/xmaterial.cpp
@@ -94,7 +94,7 @@ bool Material::setTexture(const char *filename, bool adoptName) {
_game->_surfaceStorage->removeSurface(_surface);
}
- _surface = _game->_surfaceStorage->addSurface(_textureFilename);
+ _surface = _game->_surfaceStorage->addSurface(_textureFilename, false);
_ownedSurface = true;
_sprite = nullptr;
More information about the Scummvm-git-logs
mailing list