diff options
Diffstat (limited to 'backends/graphics/opengl/texture.cpp')
| -rw-r--r-- | backends/graphics/opengl/texture.cpp | 76 | 
1 files changed, 11 insertions, 65 deletions
| diff --git a/backends/graphics/opengl/texture.cpp b/backends/graphics/opengl/texture.cpp index 05b7ac1896..8b38f85e9f 100644 --- a/backends/graphics/opengl/texture.cpp +++ b/backends/graphics/opengl/texture.cpp @@ -95,7 +95,7 @@ void GLTexture::create() {  	}  } -void GLTexture::bind() { +void GLTexture::bind() const {  	GL_CALL(glBindTexture(GL_TEXTURE_2D, _glTexture));  } @@ -263,34 +263,7 @@ void Texture::allocate(uint width, uint height) {  	_userPixelData = _textureData.getSubArea(Common::Rect(width, height));  } -void Texture::draw(GLfloat x, GLfloat y, GLfloat w, GLfloat h) { -	// Only do any processing when the Texture is initialized. -	if (!_textureData.getPixels()) { -		return; -	} - -	// First update any potentional changes. -	updateTexture(); - -	// Set the texture. -	_glTexture.bind(); - -	// Calculate the screen rect where the texture will be drawn. -	const GLfloat vertices[4*2] = { -		x,     y, -		x + w, y, -		x,     y + h, -		x + w, y + h -	}; - -	// Setup coordinates for drawing. -	g_context.activePipeline->setDrawCoordinates(vertices, _glTexture.getTexCoords()); - -	// Draw the texture to the screen buffer. -	GL_CALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); -} - -void Texture::updateTexture() { +void Texture::updateGLTexture() {  	if (!isDirty()) {  		return;  	} @@ -418,7 +391,7 @@ inline void doPaletteLookUp(PixelType *dst, const byte *src, uint width, uint he  }  } // End of anonymous namespace -void TextureCLUT8::updateTexture() { +void TextureCLUT8::updateGLTexture() {  	if (!isDirty()) {  		return;  	} @@ -443,7 +416,7 @@ void TextureCLUT8::updateTexture() {  	}  	// Do generic handling of updating the texture. -	Texture::updateTexture(); +	Texture::updateGLTexture();  }  #if !USE_FORCED_GL @@ -502,7 +475,7 @@ void TextureRGB555::updateTexture() {  	}  	// Do generic handling of updating the texture. -	Texture::updateTexture(); +	Texture::updateGLTexture();  }  #endif // !USE_FORCED_GL @@ -582,33 +555,6 @@ void TextureCLUT8GPU::allocate(uint width, uint height) {  	_clut8Vertices[7] = height;  } -void TextureCLUT8GPU::draw(GLfloat x, GLfloat y, GLfloat w, GLfloat h) { -	// Only do any processing when the Texture is initialized. -	if (!_clut8Data.getPixels()) { -		return; -	} - -	// First update any potentional changes. -	updateTextures(); - -	// Set the texture. -	_target->getTexture()->bind(); - -	// Calculate the screen rect where the texture will be drawn. -	const GLfloat vertices[4*2] = { -		x,     y, -		x + w, y, -		x,     y + h, -		x + w, y + h -	}; - -	// Setup coordinates for drawing. -	g_context.activePipeline->setDrawCoordinates(vertices, _target->getTexture()->getTexCoords()); - -	// Draw the texture to the screen buffer. -	GL_CALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); -} -  Graphics::PixelFormat TextureCLUT8GPU::getFormat() const {  	return Graphics::PixelFormat::createFormatCLUT8();  } @@ -633,7 +579,11 @@ void TextureCLUT8GPU::setPalette(uint start, uint colors, const byte *palData) {  	_paletteDirty = true;  } -void TextureCLUT8GPU::updateTextures() { +const GLTexture &TextureCLUT8GPU::getGLTexture() const { +	return *_target->getTexture(); +} + +void TextureCLUT8GPU::updateGLTexture() {  	const bool needLookUp = Surface::isDirty() || _paletteDirty;  	// Update CLUT8 texture if necessary. @@ -674,14 +624,10 @@ void TextureCLUT8GPU::lookUpColors() {  	// Set the palette texture.  	GL_CALL(glActiveTexture(GL_TEXTURE1));  	_paletteTexture.bind(); - -	// Set the clut8 texture.  	GL_CALL(glActiveTexture(GL_TEXTURE0)); -	_clut8Texture.bind();  	// Do color look up. -	g_context.activePipeline->setDrawCoordinates(_clut8Vertices, _clut8Texture.getTexCoords()); -	GL_CALL(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); +	g_context.activePipeline->drawTexture(_clut8Texture, _clut8Vertices);  	// Restore old state.  	g_context.activePipeline->setShader(oldShader); | 
