OPENGL: Store logical texture dimensions in GLTexture.

This commit is contained in:
Johannes Schickel 2016-03-04 15:32:14 +01:00
parent 2b3340474e
commit 1e1272a8c4
2 changed files with 23 additions and 1 deletions

View file

@ -46,7 +46,8 @@ static GLuint nextHigher2(GLuint v) {
GLTexture::GLTexture(GLenum glIntFormat, GLenum glFormat, GLenum glType) GLTexture::GLTexture(GLenum glIntFormat, GLenum glFormat, GLenum glType)
: _glIntFormat(glIntFormat), _glFormat(glFormat), _glType(glType), : _glIntFormat(glIntFormat), _glFormat(glFormat), _glType(glType),
_width(0), _height(0), _texCoords(), _glFilter(GL_NEAREST), _width(0), _height(0), _logicalWidth(0), _logicalHeight(0),
_texCoords(), _glFilter(GL_NEAREST),
_glTexture(0) { _glTexture(0) {
create(); create();
} }
@ -112,6 +113,9 @@ void GLTexture::setSize(uint width, uint height) {
_height = height; _height = height;
} }
_logicalWidth = width;
_logicalHeight = height;
// If a size is specified, allocate memory for it. // If a size is specified, allocate memory for it.
if (width != 0 && height != 0) { if (width != 0 && height != 0) {
const GLfloat texWidth = (GLfloat)width / _width; const GLfloat texWidth = (GLfloat)width / _width;

View file

@ -99,9 +99,26 @@ public:
*/ */
void updateArea(const Common::Rect &area, const Graphics::Surface &src); void updateArea(const Common::Rect &area, const Graphics::Surface &src);
/**
* Query the GL texture's width.
*/
uint getWidth() const { return _width; } uint getWidth() const { return _width; }
/**
* Query the GL texture's height.
*/
uint getHeight() const { return _height; } uint getHeight() const { return _height; }
/**
* Query the logical texture's width.
*/
uint getLogicalWidth() const { return _logicalWidth; }
/**
* Query the logical texture's height.
*/
uint getLogicalHeight() const { return _logicalHeight; }
/** /**
* Obtain texture coordinates for rectangular drawing. * Obtain texture coordinates for rectangular drawing.
*/ */
@ -120,6 +137,7 @@ private:
const GLenum _glType; const GLenum _glType;
uint _width, _height; uint _width, _height;
uint _logicalWidth, _logicalHeight;
GLfloat _texCoords[4*2]; GLfloat _texCoords[4*2];
GLint _glFilter; GLint _glFilter;