Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/render.cc')
-rw-r--r--src/render/render.cc39
1 files changed, 33 insertions, 6 deletions
diff --git a/src/render/render.cc b/src/render/render.cc
index 76704a4..8311c16 100644
--- a/src/render/render.cc
+++ b/src/render/render.cc
@@ -20,9 +20,11 @@ namespace render {
GLuint textures[32];
-core::Cvar *r_drawradius = 0;
-core::Cvar *r_drawstats = 0;
+core::Cvar *r_radius = 0;
core::Cvar *r_wireframe = 0;
+core::Cvar * r_arraysize = 0;
+
+core::VertexArray *vertexarray = 0;
bool texture(const char *filename, size_t id)
{
@@ -30,8 +32,6 @@ bool texture(const char *filename, size_t id)
if (!image)
return false;
- // FIXME - I don't get this part... yet
-
glGenTextures(1, &textures[id]);
glBindTexture(GL_TEXTURE_2D, textures[id]);
@@ -64,19 +64,46 @@ void init()
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);
+ if (!texture("bitmaps/crosshair.tga", 2)) {
+ con_error << "Essential file bitmaps/crosshair.tga missing" << std::endl;
+ core::application()->shutdown();
+ }
+
+ r_arraysize = core::Cvar::get("r_arraysize", 4.0f * (float) sizeof(float) , core::Cvar::Archive);
+ size_t mb = (size_t) r_arraysize->value();
+ if (mb < 8)
+ mb = 8;
+ if (mb > 256)
+ mb = 256;
+ (*r_arraysize) = (float) mb;
+ vertexarray = new core::VertexArray(mb);
+
+ r_radius = core::Cvar::get("r_radius", "0", core::Cvar::Archive);
r_wireframe = core::Cvar::get("r_wireframe", "0", core::Cvar::Archive);
}
void shutdown()
{
con_print << "Shutting down renderer..." << std::endl;
+
+ glDeleteTextures(2, textures);
+
+ // clear entity models, this will force a reload
+ for (std::map<unsigned int, core::Entity *>::iterator it=core::Entity::registry.begin(); it != core::Entity::registry.end(); it++) {
+ core::Entity *entity = (*it).second;
+ if (entity->model())
+ entity->entity_model = 0;
+ }
+
+ core::Model::clear();
+ delete vertexarray;
+ vertexarray = 0;
}
}