* Use mipmap minification modes only if mipmaps are actually available
This commit is contained in:
parent
4d7dcc17bb
commit
7860ccca52
@ -1757,22 +1757,37 @@ public class LwjglRenderer implements Renderer {
|
||||
}
|
||||
}
|
||||
|
||||
private int convertMinFilter(Texture.MinFilter filter) {
|
||||
switch (filter) {
|
||||
case Trilinear:
|
||||
return GL_LINEAR_MIPMAP_LINEAR;
|
||||
case BilinearNearestMipMap:
|
||||
return GL_LINEAR_MIPMAP_NEAREST;
|
||||
case NearestLinearMipMap:
|
||||
return GL_NEAREST_MIPMAP_LINEAR;
|
||||
case NearestNearestMipMap:
|
||||
return GL_NEAREST_MIPMAP_NEAREST;
|
||||
case BilinearNoMipMaps:
|
||||
return GL_LINEAR;
|
||||
case NearestNoMipMaps:
|
||||
return GL_NEAREST;
|
||||
default:
|
||||
throw new UnsupportedOperationException("Unknown min filter: " + filter);
|
||||
private int convertMinFilter(Texture.MinFilter filter, boolean haveMips) {
|
||||
if (haveMips){
|
||||
switch (filter) {
|
||||
case Trilinear:
|
||||
return GL_LINEAR_MIPMAP_LINEAR;
|
||||
case BilinearNearestMipMap:
|
||||
return GL_LINEAR_MIPMAP_NEAREST;
|
||||
case NearestLinearMipMap:
|
||||
return GL_NEAREST_MIPMAP_LINEAR;
|
||||
case NearestNearestMipMap:
|
||||
return GL_NEAREST_MIPMAP_NEAREST;
|
||||
case BilinearNoMipMaps:
|
||||
return GL_LINEAR;
|
||||
case NearestNoMipMaps:
|
||||
return GL_NEAREST;
|
||||
default:
|
||||
throw new UnsupportedOperationException("Unknown min filter: " + filter);
|
||||
}
|
||||
} else {
|
||||
switch (filter) {
|
||||
case Trilinear:
|
||||
case BilinearNearestMipMap:
|
||||
case BilinearNoMipMaps:
|
||||
return GL_LINEAR;
|
||||
case NearestLinearMipMap:
|
||||
case NearestNearestMipMap:
|
||||
case NearestNoMipMaps:
|
||||
return GL_NEAREST;
|
||||
default:
|
||||
throw new UnsupportedOperationException("Unknown min filter: " + filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1798,8 +1813,14 @@ public class LwjglRenderer implements Renderer {
|
||||
Image image = tex.getImage();
|
||||
int target = convertTextureType(tex.getType(), image != null ? image.getMultiSamples() : 1, -1);
|
||||
|
||||
boolean haveMips = true;
|
||||
|
||||
if (image != null) {
|
||||
haveMips = image.isGeneratedMipmapsRequired() || image.hasMipmaps();
|
||||
}
|
||||
|
||||
// filter things
|
||||
int minFilter = convertMinFilter(tex.getMinFilter());
|
||||
int minFilter = convertMinFilter(tex.getMinFilter(), haveMips);
|
||||
int magFilter = convertMagFilter(tex.getMagFilter());
|
||||
glTexParameteri(target, GL_TEXTURE_MIN_FILTER, minFilter);
|
||||
glTexParameteri(target, GL_TEXTURE_MAG_FILTER, magFilter);
|
||||
|
Loading…
x
Reference in New Issue
Block a user