diff options
author | Stijn Buys <ingar@osirion.org> | 2009-03-21 09:58:26 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2009-03-21 09:58:26 +0000 |
commit | 27e026234be657e7a0f939405914784633a2e1f3 (patch) | |
tree | 14911521510b739ee5e465e9612d305325e8bc1f /src/render/state.cc | |
parent | 0cae375e9f299e3541ecef99a1728dcf23cb3b76 (diff) |
autodetect hardware generated mipmap support
Diffstat (limited to 'src/render/state.cc')
-rw-r--r-- | src/render/state.cc | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/src/render/state.cc b/src/render/state.cc index 649493e..cc402ff 100644 --- a/src/render/state.cc +++ b/src/render/state.cc @@ -4,19 +4,46 @@ the terms of the GNU General Public License version 2 */ +#include <string> +#include <sstream> + #include "render/state.h" #include "render/gl.h" #include "render/render.h" namespace render { -int State::render_width; -int State::render_height; -float State::render_aspect; +int State::render_width = 0; +int State::render_height = 0; +float State::render_aspect = 0; +bool State::render_has_generate_mipmaps = 0; void State::init(int width, int height) { resize(width, height); + + render_has_generate_mipmaps = false; + + std::string version(gl::version()); + for (size_t i =0; i < version.size(); i++) { + if (version[i] == '.') + version[i] = ' '; + } + + std::stringstream versionstream(version); + int major, minor; + if (versionstream >> major >> minor) { + + if (major > 1) { + render_has_generate_mipmaps = true; + } else if (major == 1) { + if (minor >3) + render_has_generate_mipmaps = true; + } + + } else { + con_warn << "Could not determine OpenGL version!" << std::endl; + } } void State::shutdown() |