mirror of
https://github.com/aap/librw.git
synced 2025-12-20 01:19:51 +00:00
anisotropy plugin
This commit is contained in:
@@ -527,7 +527,7 @@ static GLint addressConvMap[] = {
|
||||
};
|
||||
|
||||
static void
|
||||
setFilterMode(uint32 stage, int32 filter)
|
||||
setFilterMode(uint32 stage, int32 filter, int32 maxAniso = 1)
|
||||
{
|
||||
if(rwStateCache.texstage[stage].filter != (Texture::FilterMode)filter){
|
||||
rwStateCache.texstage[stage].filter = (Texture::FilterMode)filter;
|
||||
@@ -545,6 +545,11 @@ setFilterMode(uint32 stage, int32 filter)
|
||||
}
|
||||
natras->filterMode = filter;
|
||||
}
|
||||
if(natras->maxAnisotropy != maxAniso){
|
||||
setActiveTexture(stage);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, (float)maxAniso);
|
||||
natras->maxAnisotropy = maxAniso;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -675,7 +680,7 @@ setTexture(int32 stage, Texture *tex)
|
||||
return;
|
||||
}
|
||||
setRasterStageOnly(stage, tex->raster);
|
||||
setFilterMode(stage, tex->getFilter());
|
||||
setFilterMode(stage, tex->getFilter(), tex->getMaxAnisotropy());
|
||||
setAddressU(stage, tex->getAddressU());
|
||||
setAddressV(stage, tex->getAddressV());
|
||||
}
|
||||
@@ -1787,6 +1792,8 @@ initOpenGL(void)
|
||||
// printf("%d %s\n", i, ext);
|
||||
}
|
||||
|
||||
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &gl3Caps.maxAnisotropy);
|
||||
|
||||
if(gl3Caps.gles){
|
||||
if(gl3Caps.glversion >= 30)
|
||||
shaderDecl = shaderDecl310es;
|
||||
|
||||
@@ -132,9 +132,7 @@ rasterCreateTexture(Raster *raster)
|
||||
natras->filterMode = 0;
|
||||
natras->addressU = 0;
|
||||
natras->addressV = 0;
|
||||
|
||||
// TEST
|
||||
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16.0f);
|
||||
natras->maxAnisotropy = 1;
|
||||
|
||||
bindTexture(prev);
|
||||
return raster;
|
||||
@@ -196,6 +194,7 @@ rasterCreateCameraTexture(Raster *raster)
|
||||
natras->filterMode = 0;
|
||||
natras->addressU = 0;
|
||||
natras->addressV = 0;
|
||||
natras->maxAnisotropy = 1;
|
||||
|
||||
bindTexture(prev);
|
||||
|
||||
@@ -259,6 +258,7 @@ rasterCreateZbuffer(Raster *raster)
|
||||
natras->filterMode = 0;
|
||||
natras->addressU = 0;
|
||||
natras->addressV = 0;
|
||||
natras->maxAnisotropy = 1;
|
||||
|
||||
bindTexture(prev);
|
||||
}
|
||||
@@ -329,6 +329,7 @@ allocateDXT(Raster *raster, int32 dxt, int32 numLevels, bool32 hasAlpha)
|
||||
natras->filterMode = 0;
|
||||
natras->addressU = 0;
|
||||
natras->addressV = 0;
|
||||
natras->maxAnisotropy = 1;
|
||||
|
||||
bindTexture(prev);
|
||||
|
||||
|
||||
@@ -239,6 +239,7 @@ struct Gl3Raster
|
||||
uint8 filterMode;
|
||||
uint8 addressU;
|
||||
uint8 addressV;
|
||||
int32 maxAnisotropy;
|
||||
|
||||
uint32 fbo; // used for camera texture only!
|
||||
Raster *fboMate; // color or zbuffer raster mate of this one
|
||||
@@ -251,6 +252,7 @@ struct Gl3Caps
|
||||
int glversion;
|
||||
bool dxtSupported;
|
||||
bool astcSupported; // not used yet
|
||||
float maxAnisotropy;
|
||||
};
|
||||
extern Gl3Caps gl3Caps;
|
||||
// GLES can't read back textures very nicely.
|
||||
|
||||
Reference in New Issue
Block a user