Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2009-03-21 09:58:26 +0000
committerStijn Buys <ingar@osirion.org>2009-03-21 09:58:26 +0000
commit27e026234be657e7a0f939405914784633a2e1f3 (patch)
tree14911521510b739ee5e465e9612d305325e8bc1f /src/render/state.cc
parent0cae375e9f299e3541ecef99a1728dcf23cb3b76 (diff)
autodetect hardware generated mipmap support
Diffstat (limited to 'src/render/state.cc')
-rw-r--r--src/render/state.cc33
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()