#include "Headers.h"
EngineCore Engine;
GraphicsEngine GphxEngine;
SceneRenderer Renderer;
int main(int argc, char *argv[])
{
using namespace std;
SDL_Surface* screen = Engine.loadEngine("Window Test",800,600);
//SDL_Surface* screen = Engine.MakeWindow("Hello World");
Renderer.LoadDevice(800,600,32,true);
bool quit = false;
//GphxEngine.LoadImage("Images\\sample.bmp",1);
//GphxEngine.DrawImage(1, 200, 200, screen);
//SDL_UpdateRect(screen,0,0,0,0);
//GphxEngine.Flip_Buffer(screen);
Vertex* Prims;
Prims[0].x = -1.0f;
Prims[0].y = -1.0f;
Prims[0].z = -10.f;
for (int i = 0; i < 2; i++)
{
Prims.r = 255;
Prims.b = 0;
Prims.g = 0;
Prims.a = 0;
}
Prims[1].x = -1.0f;
Prims[1].y = 1.0f;
Prims[1].z = -10.f;
Prims[2].x = 1.0f;
Prims[2].y = -1.0f;
Prims[2].z = -10.0f;
Renderer.drawPrim( Prims, 6 );
Renderer.FlipDevice();
while(!quit)
{
quit = Engine.runEngine();
}
}
#include "Headers.h"
bool SceneRenderer::LoadDevice(int width,int height, int bitsperpixel, bool gwindowed)
{
Uint32 iFlags;
iFlags = SDL_OPENGL;
iFlags |= SDL_HWPALETTE;
iFlags |= SDL_RESIZABLE;
window_width = width;
window_height = height;
window_bitsperpixel = bitsperpixel;
windowed = gwindowed;
const SDL_VideoInfo* pVideoInfo = SDL_GetVideoInfo();
if (NULL == pVideoInfo)
{
return false;
}
if (pVideoInfo->hw_available)
iFlags |= SDL_HWSURFACE;
else
iFlags |= SDL_SWSURFACE;
if(pVideoInfo->blit_hw)
iFlags |= SDL_HWACCEL;
if (windowed == false)
{
iFlags |= SDL_FULLSCREEN;
}
SDL_GL_SetAttribute ( SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute ( SDL_GL_DEPTH_SIZE, window_bitsperpixel);
SDL_GL_SetAttribute ( SDL_GL_STENCIL_SIZE, 0);
SDL_GL_SetAttribute( SDL_GL_ACCUM_RED_SIZE, 0);
SDL_GL_SetAttribute( SDL_GL_ACCUM_GREEN_SIZE, 0);
SDL_GL_SetAttribute( SDL_GL_ACCUM_BLUE_SIZE, 0);
SDL_GL_SetAttribute( SDL_GL_ACCUM_ALPHA_SIZE, 0);
OpenGLSurface = SDL_SetVideoMode( window_width, window_height, window_bitsperpixel, iFlags);
if( NULL == OpenGLSurface) return false;
return true;
};
bool SceneRenderer::clearDevice()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
return true;
};
void SceneRenderer::FlipDevice()
{
glFlush();
SDL_GL_SwapBuffers();
};
void SceneRenderer::unLoadDevice()
{
SDL_FreeSurface(OpenGLSurface);
};
void SceneRenderer::drawPrim( Vertex* pVertices, int count )
{
glPushMatrix();
glPushAttrib( GL_CURRENT_BIT);
glLoadIdentity();
glBegin( GL_TRIANGLES );
for (int i = 0; i < count; i++)
{
glColor4f( pVertices.r, pVertices.g, pVertices.b, pVertices.a );
glVertex3f( pVertices.z, pVertices.y, pVertices.z );
}
glEnd();
glPopAttrib();
glPopMatrix();
};