using othographic projection now

3d_asteroids
Martin Felis 2011-06-20 22:06:35 +02:00
parent 419ebc8783
commit 0d78fc5ece
7 changed files with 57 additions and 12 deletions

View File

@ -89,6 +89,7 @@ class Model : public Engine::ModelBase {
} }
bool GetGameModified() { return mGameModified; } bool GetGameModified() { return mGameModified; }
protected: protected:
/** \brief Initializes the system */ /** \brief Initializes the system */
virtual int OnInit (int argc, char* argv[]); virtual int OnInit (int argc, char* argv[]);

View File

@ -183,6 +183,47 @@ bool View::OnReceiveEvent (const Engine::EventBasePtr &event) {
/* /*
* Module specific functions * Module specific functions
*/ */
void View::Resize (int width, int height) {
if (height == 0)
height = 1;
mWindowWidth = static_cast<unsigned int> (width);
mWindowHeight = static_cast<unsigned int> (height);
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
float world_width, world_height;
world_width = GetModel()->GetWorldWidth ();
world_height = GetModel()->GetWorldHeight ();
Engine::LogMessage ("width %f height %f", world_width, world_height);
glOrtho (- world_width * 0.5, world_width * 0.5, -world_height * 0.5, world_height * 0.5, 0., 100.);
// gluPerspective(mCamera->GetFOVY (), float (width) / float (height), 0., 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity ();
Engine::LogDebug ("Resize to: %d x %d", mWindowWidth,mWindowHeight);
/** \warning
* This call has to be made for SDL 1.2 for 1.3 there seems to be a
* workaround, however since I do not yet run SDL 1.3 I hold on to this.
* See http://lists.libsdl.org/pipermail/sdl-libsdl.org/2008-November/067306.html
*/
Uint32 video_flags = SDL_OPENGL;
if (mDrawFullscreen)
video_flags = video_flags | SDL_FULLSCREEN;
if( SDL_SetVideoMode( mWindowWidth, mWindowHeight, 16, video_flags) == 0 ) {
Engine::LogError ("Video mode set failed: %s", SDL_GetError ());
exit (-1);
}
}
void View::UpdateCamera () { void View::UpdateCamera () {
mCamera->SetEye ( mCamera->SetEye (
0., 0.,
@ -422,10 +463,10 @@ void View::DrawUi () {
ViewState current_view_state = GetViewState(); ViewState current_view_state = GetViewState();
/* stringstream fps_stream;
fps_stream << "fps: " << GetFrameRate();
SelectFont ("console.ttf size=12"); SelectFont ("console.ttf size=12");
Engine::GUI::Label (99999, GetStringViewState(current_view_state), 8, 16); Engine::GUI::Label (99999, fps_stream.str().c_str(), 8, 48);
*/
switch (current_view_state) { switch (current_view_state) {
case ViewStateMainMenu: case ViewStateMainMenu:
@ -1659,6 +1700,7 @@ void View::DrawAsteroid (AsteroidEntity *asteroid) {
glEnable (GL_LIGHTING); glEnable (GL_LIGHTING);
glEnable (GL_LIGHT0); glEnable (GL_LIGHT0);
glTranslatef (0., -1., 0.);
// glRotatef (90, 1., 0., 0.); // glRotatef (90, 1., 0., 0.);
float scale = 1.8 * asteroid->mPhysicState->mRadius; float scale = 1.8 * asteroid->mPhysicState->mRadius;
glScalef (scale, scale, scale); glScalef (scale, scale, scale);

View File

@ -81,6 +81,7 @@ class View : public Engine::ViewBase {
/** \brief Updates the camera for further drawing */ /** \brief Updates the camera for further drawing */
virtual void UpdateCamera (); virtual void UpdateCamera ();
virtual void Resize (int width, int height);
private: private:
void DrawUi(); void DrawUi();

View File

@ -163,14 +163,15 @@ int main (int argc, char* argv[]) {
version_string += FYSXASTEROIDS_VERSION; version_string += FYSXASTEROIDS_VERSION;
SDL_WM_SetCaption(version_string.c_str(), version_string.c_str()); SDL_WM_SetCaption(version_string.c_str(), version_string.c_str());
engine.GetView()->SetGridSize (8,8);
/// \todo get rid of the world settings in asteroids /// \todo get rid of the world settings in asteroids
dynamic_cast<asteroids::Physics*>(engine.GetPhysics())->SetWorldSize (26, 20); dynamic_cast<asteroids::Physics*>(engine.GetPhysics())->SetWorldSize (26, 20);
engine.GetPhysics()->SetWorldBounds (vector3d (-13, 0, -10), vector3d (13, 0, 10)); engine.GetPhysics()->SetWorldBounds (vector3d (-13, 0, -10), vector3d (13, 0, 10));
engine.GetPhysics()->EnableWorldWarp(Engine::PhysicsBase::WorldWarpModeX); engine.GetPhysics()->EnableWorldWarp(Engine::PhysicsBase::WorldWarpModeX);
engine.GetPhysics()->EnableWorldWarp(Engine::PhysicsBase::WorldWarpModeZ); engine.GetPhysics()->EnableWorldWarp(Engine::PhysicsBase::WorldWarpModeZ);
engine.GetView()->SetGridSize (8,8);
engine.GetView()->Resize (800, 600);
// run the default commands and load the configuration // run the default commands and load the configuration
Engine::RunCommand ("exec asteroids.rc"); Engine::RunCommand ("exec asteroids.rc");
Engine::RunCommand ("exec config.rc"); Engine::RunCommand ("exec config.rc");

View File

@ -163,10 +163,10 @@ void draw_sprite_helper (float u_start, float u_end, float width, float height)
*/ */
glBegin(GL_QUADS); glBegin(GL_QUADS);
glTexCoord2f (u_start, 0.f); glColor3f (1.f, 0.f, 0.f); glVertex3f (0.f, 0.f, 0.f); glTexCoord2f (u_start, 0.f); glVertex3f (0.f, 0.f, 0.f);
glTexCoord2f (u_end, 0.f); glColor3f (0.f, 1.f, 0.f); glVertex3f (0.f, 0.f, height); glTexCoord2f (u_end, 0.f); glVertex3f (0.f, 0.f, height);
glTexCoord2f (u_end, 1.f); glColor3f (0.f, 0.f, 1.f); glVertex3f (width, 0.f, height); glTexCoord2f (u_end, 1.f); glVertex3f (width, 0.f, height);
glTexCoord2f (u_start, 1.f); glColor3f (1.f, 0.f, 1.f); glVertex3f (width, 0.f,0.f); glTexCoord2f (u_start, 1.f); glVertex3f (width, 0.f,0.f);
glEnd(); glEnd();
} }

View File

@ -681,7 +681,7 @@ void ViewBase::DrawOBJModelShaded (OBJModelPtr obj_model) {
texture = iter->second; texture = iter->second;
} else { } else {
LogMessage ("Disabling textures"); // LogMessage ("Disabling textures");
} }
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
@ -1003,7 +1003,7 @@ void ViewBase::Resize (int width, int height) {
glViewport(0, 0, width, height); glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glLoadIdentity();
gluPerspective(mCamera->GetFOVY (), float (width) / float (height), 0.1, 100); gluPerspective(mCamera->GetFOVY (), float (width) / float (height), 0., 100);
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
glLoadIdentity (); glLoadIdentity ();

View File

@ -29,7 +29,7 @@ class ViewBase : public Module{
virtual ~ViewBase() {}; virtual ~ViewBase() {};
/** \brief Resizes the View */ /** \brief Resizes the View */
void Resize (int width, int height); virtual void Resize (int width, int height);
/** \brief Switches to fullscreen */ /** \brief Switches to fullscreen */
void SetFullscreen (bool fullscreen); void SetFullscreen (bool fullscreen);
bool GetIsFullscreen () { return mDrawFullscreen; }; bool GetIsFullscreen () { return mDrawFullscreen; };