SDL-mirror/EXCLUDE/GLIMM/src/App.cpp

114 lines
1.6 KiB
C++
Raw Normal View History

#include "App.hpp"
#include <GL/gl.h>
#include <GL/glu.h>
#pragma comment(lib, "glu32.lib")
GLfloat Rotation = 0.0f;
App::App() : my_Done(false)
{
}
App::~App()
{
Finalize();
}
void App::Initialize()
{
Finalize();
my_Window.Initialize(L"GLIMM", Video_Mode(Width, Height, Bits_Per_Pixel), Fullscreen);
my_Window.Set_Listener(this);
my_Window.Show();
my_Window.Hide_Cursor();
}
void App::Finalize()
{
my_Window.Finalize();
}
void App::Run()
{
Initialize();
while (!my_Done)
{
my_Window.Handle_Events();
Update();
Draw();
my_Window.Display();
}
}
void App::On_Close()
{
my_Done = true;
my_Window.Hide();
}
void App::On_Key_Down(int Key)
{
switch (Key)
{
case VK_ESCAPE:
On_Close();
break;
}
}
void App::On_Key_Up(int Key)
{
}
void App::On_Char(unsigned int Char)
{
printf("Char: U+%04X\n", Char);
}
void App::On_Resized(unsigned int Width, unsigned int Height)
{
glViewport(0, 0, Width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void App::On_Mouse_Button_Down(Mouse_Button Button)
{
switch (Button)
{
case Mouse_Button_Left:
my_Window.Get_IMM().Toggle();
break;
}
}
void App::Update()
{
Rotation += 0.2f;
}
void App::Draw()
{
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glRotatef(Rotation, 0.0f, 0.0f, -1.0f);
glBegin(GL_TRIANGLES);
glColor3f(0.7f, 0.0f, 0.0f);
glVertex3f(0.0f, 0.5f, 0.0f);
glColor3f(0.0f, 0.7f, 0.0f);
glVertex3f(-0.5f, -0.5f, 0.0f);
glColor3f(0.0f, 0.0f, 0.7f);
glVertex3f(0.5f, -0.5f, 0.0f);
glEnd();
}