diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2013-04-14 04:40:24 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2013-04-14 04:40:24 +0400 |
commit | d2b14ed4f007d7eb1160b67c6b3722cec52df375 (patch) | |
tree | d42d26d45f701030a2d11eeef8da9e21c41c2335 /source/gameengine/Rasterizer | |
parent | 6b37baf34c0cfa94619a3106a25a10fc9626920c (diff) |
BGE: Adding mipmapping control to bge.render via bge.render.setMipmapping() and bge.render.getMipmapping().
Diffstat (limited to 'source/gameengine/Rasterizer')
3 files changed, 46 insertions, 0 deletions
diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h index c04b62bc5da..ace91f6dd51 100644 --- a/source/gameengine/Rasterizer/RAS_IRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h @@ -151,6 +151,17 @@ public: }; /** + * Mipmap options + */ + enum MipmapOption { + RAS_MIPMAP_NONE, + RAS_MIPMAP_NEAREST, + RAS_MIPMAP_LINEAR, + + RAS_MIPMAP_MAX, // Should always be last + }; + + /** * SetDepthMask enables or disables writing a fragment's depth value * to the Z buffer. */ @@ -417,6 +428,9 @@ public: virtual void SetAnisotropicFiltering(short level)=0; virtual short GetAnisotropicFiltering()=0; + virtual void SetMipmapping(MipmapOption val)=0; + virtual MipmapOption GetMipmapping()=0; + virtual void SetUsingOverrideShader(bool val)=0; virtual bool GetUsingOverrideShader()=0; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp index f995f7ddb3d..e90f7573ab1 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp @@ -1064,6 +1064,35 @@ short RAS_OpenGLRasterizer::GetAnisotropicFiltering() return (short)GPU_get_anisotropic(); } +void RAS_OpenGLRasterizer::SetMipmapping(MipmapOption val) +{ + if (val == RAS_IRasterizer::RAS_MIPMAP_LINEAR) + { + GPU_set_linear_mipmap(1); + GPU_set_mipmap(1); + } + else if (val == RAS_IRasterizer::RAS_MIPMAP_NEAREST) + { + GPU_set_linear_mipmap(0); + GPU_set_mipmap(1); + } + else + { + GPU_set_linear_mipmap(0); + GPU_set_mipmap(0); + } +} + +RAS_IRasterizer::MipmapOption RAS_OpenGLRasterizer::GetMipmapping() +{ + if (GPU_get_linear_mipmap()) + return RAS_IRasterizer::RAS_MIPMAP_LINEAR; + else if (GPU_get_mipmap()) + return RAS_IRasterizer::RAS_MIPMAP_NEAREST; + else + return RAS_IRasterizer::RAS_MIPMAP_NONE; +} + void RAS_OpenGLRasterizer::SetUsingOverrideShader(bool val) { m_usingoverrideshader = val; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h index 94589f84197..04f27360c6b 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h @@ -324,6 +324,9 @@ public: virtual void SetAnisotropicFiltering(short level); virtual short GetAnisotropicFiltering(); + virtual void SetMipmapping(MipmapOption val); + virtual MipmapOption GetMipmapping(); + virtual void SetUsingOverrideShader(bool val); virtual bool GetUsingOverrideShader(); |