/* render/render.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include #include #include #include #include "render/render.h" #include "render/tga.h" #include "render/gl.h" #include "core/core.h" #include "filesystem/filesystem.h" #include "sys/sys.h" namespace render { GLuint textures[32]; core::Cvar *r_drawradius = 0; core::Cvar *r_drawstats = 0; core::Cvar *r_wireframe = 0; bool texture(char * const filename, size_t id) { Image *image = TGA::load(filename); if (!image) return false; // FIXME - I don't get this part... yet glGenTextures(1, &textures[id]); glBindTexture(GL_TEXTURE_2D, textures[id]); int texture_type; if (image->channels() == 4) texture_type = GL_RGBA; else texture_type = GL_RGB; gluBuild2DMipmaps(GL_TEXTURE_2D, image->channels(), image->width(), image->height(), texture_type, GL_UNSIGNED_BYTE, image->data()); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_LINEAR); return true; } void init() { con_print << "Initializing renderer..." << std::endl; con_print << " renderer " << gl::renderer() << std::endl; con_print << " vendor " << gl::vendor() << std::endl; con_print << " version " << gl::version() << std::endl; con_print << "Loading textures..." << std::endl; if (!texture( "bitmaps/loader.tga", 0)) { con_error << "Essential file bitmaps/loader.tga missing" << std::endl; core::application()->shutdown(); } if (!texture("bitmaps/conchars.tga", 1)) { con_error << "Essential file bitmaps/conchars.tga missing" << std::endl; core::application()->shutdown(); } r_drawradius = core::Cvar::get("r_drawradius", "0", core::Cvar::Archive); r_drawstats = core::Cvar::get("r_drawstats", "0", core::Cvar::Archive); r_wireframe = core::Cvar::get("r_wireframe", "0", core::Cvar::Archive); } void shutdown() { con_print << "Shutting down renderer..." << std::endl; } }