mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
Add framebuffer filter modes (issue #112)
This commit is contained in:
@@ -282,15 +282,44 @@ namespace opengl
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
|
||||
void Framebuffer::setFilter(Image::Filter f)
|
||||
{
|
||||
GLint gmin = (f.min == Image::FILTER_NEAREST) ? GL_NEAREST : GL_LINEAR;
|
||||
GLint gmag = (f.mag == Image::FILTER_NEAREST) ? GL_NEAREST : GL_LINEAR;
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, img);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gmin);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gmag);
|
||||
}
|
||||
|
||||
Image::Filter Framebuffer::getFilter() const
|
||||
{
|
||||
GLint gmin, gmag;
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, img);
|
||||
glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, &gmin);
|
||||
glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &gmag);
|
||||
|
||||
Image::Filter f;
|
||||
f.min = (gmin == GL_NEAREST) ? Image::FILTER_NEAREST : Image::FILTER_LINEAR;
|
||||
f.mag = (gmag == GL_NEAREST) ? Image::FILTER_NEAREST : Image::FILTER_LINEAR;
|
||||
return f;
|
||||
}
|
||||
|
||||
bool Framebuffer::loadVolatile()
|
||||
{
|
||||
status = strategy->createFBO(fbo, depthbuffer, img, width, height);
|
||||
if (status == GL_FRAMEBUFFER_COMPLETE)
|
||||
setFilter(settings.filter);
|
||||
|
||||
return (status == GL_FRAMEBUFFER_COMPLETE);
|
||||
}
|
||||
|
||||
void Framebuffer::unloadVolatile()
|
||||
{
|
||||
settings.filter = getFilter();
|
||||
strategy->deleteFBO(fbo, depthbuffer, img);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user