diff options
author | Stijn Buys <ingar@osirion.org> | 2008-11-12 18:24:36 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-11-12 18:24:36 +0000 |
commit | dd16796ac3ef352a5ff404373b568dd00ef74936 (patch) | |
tree | 7796dfc6bcfce41bc7b0bc986ca2e8bf3d230e69 /src/render | |
parent | 70f4455bd0f887477d027b85c8f2ead3d56eecfe (diff) |
add star corona
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/draw.cc | 48 | ||||
-rw-r--r-- | src/render/render.cc | 4 | ||||
-rw-r--r-- | src/render/screenshot.cc | 3 | ||||
-rw-r--r-- | src/render/screenshot.h | 5 |
4 files changed, 52 insertions, 8 deletions
diff --git a/src/render/draw.cc b/src/render/draw.cc index 1b1262f..96bc632 100644 --- a/src/render/draw.cc +++ b/src/render/draw.cc @@ -17,6 +17,7 @@ #include "render/draw.h" #include "render/dust.h" #include "render/gl.h" +#include "math/functions.h" namespace render { @@ -272,7 +273,7 @@ void draw_globe(core::EntityGlobe *globe) gl::disable(GL_LIGHTING); } else { // disable camera light, level light only - gl::disable(GL_LIGHT0); + gl::disable(GL_LIGHT0); } if (globe->render_texture) { @@ -298,16 +299,55 @@ void draw_globe(core::EntityGlobe *globe) glLightfv(GL_LIGHT1, GL_POSITION, fake_light); } } - gl::push(); gl::translate(location); + + if(flag_is_set(globe->flags(), core::Entity::Bright)) { + + if (!globe->render_texture) { + gl::enable(GL_TEXTURE_2D); + } + Textures::bind("bitmaps/fx/corona"); + + if (globe->state()->distance() <= farplane) { + gl::depthmask(GL_FALSE); + } + gl::color(globe->color()); + globe->color().a = 1.0f; + gl::enable(GL_BLEND); + + gl::begin(gl::Quads); + glTexCoord2f(0,1); + gl::vertex((Camera::axis().up() - Camera::axis().left()) * radius * 2.0f); + glTexCoord2f(0,0); + gl::vertex((Camera::axis().up() + Camera::axis().left()) * radius * 2.0f); + glTexCoord2f(1,0); + gl::vertex((Camera::axis().up() * -1 + Camera::axis().left()) * radius * 2.0f); + glTexCoord2f(1,1); + gl::vertex((Camera::axis().up() * -1 - Camera::axis().left()) * radius * 2.0f); + gl::end(); + + Stats::quads++; + + gl::disable(GL_BLEND); + if (globe->state()->distance() <= farplane) { + gl::depthmask(GL_TRUE); + } + if (!globe->render_texture) { + gl::disable(GL_TEXTURE_2D); + } + + radius *= 0.5f; + } + + gl::multmatrix(globe->state()->axis()); if (globe->rotationspeed()) { - float angle = core::application()->time() * globe->rotationspeed(); - angle = angle - 360.0f * floorf(angle / 360.0f); + float angle = math::degrees360f(core::application()->time() * globe->rotationspeed()); gl::rotate(angle, math::Vector3f::Zaxis()); } + draw_sphere(globe->color(), radius); gl::pop(); diff --git a/src/render/render.cc b/src/render/render.cc index 9afa179..81237dc 100644 --- a/src/render/render.cc +++ b/src/render/render.cc @@ -96,6 +96,7 @@ void init(int width, int height) } // unload game assets (zone change) +/* TODO RenderExt class containing render state */ void unload() { // clear zone sky textures @@ -123,7 +124,7 @@ void unload() // clear all assets void clear() { - //con_debug << " vclearing render data...\n"; + //con_debug << " clearing render data...\n"; // clear zone sky textures for (core::Zone::Registry::iterator it = core::Zone::registry().begin(); it != core::Zone::registry().end(); it++) { @@ -199,3 +200,4 @@ void shutdown() } } // namespace render + diff --git a/src/render/screenshot.cc b/src/render/screenshot.cc index c2ee88a..e006344 100644 --- a/src/render/screenshot.cc +++ b/src/render/screenshot.cc @@ -106,4 +106,5 @@ void Screenshot::save() } } -} // namsepace render
\ No newline at end of file +} // namsepace render + diff --git a/src/render/screenshot.h b/src/render/screenshot.h index bf61ef6..8b9269a 100644 --- a/src/render/screenshot.h +++ b/src/render/screenshot.h @@ -22,6 +22,7 @@ private: static int number; }; -} +} // namespace render + +#endif // __INCLUDED_RENDER_SCREENSHOT_H__ -#endif // __INCLUDED_RENDER_SCREENSHOT_H__
\ No newline at end of file |