Code: Alles auswählen
//.. aus der stdafx.h:
//>
//> Grafik-Methoden:
//>
#define ZWIANER_DDRAW "DirectXDDraw"
//> #define ZWIANER_WIN32OPENGL "Win32OpengGL"
//> #define ZWIANER_WIN32SDL "Win32SDL"
//.. aus der main.cpp:
CKDDraw *g_pKDDraw = (CKDDraw *)NULL;
CKOpenGL *g_pKOpenGL = (CKOpenGL *)NULL;
CKSDL *g_pKSDL = (CKSDL *)NULL;
#ifdef ZWIANER_DDRAW
CKDDraw *GetgpKGrafik(void)
{
return g_pKDDraw;
}
void DeleteKGrafik(void)
{
delete g_pKDDraw;
g_pKDDraw = NULL;
}
#else
#ifdef ZWIANER_WIN32OPENGL
CKOpenGL *GetgpKGrafik(void)
{
return g_pKOpenGL;
}
void DeleteKGrafik(void)
{
delete g_pKOpenGL;
g_pKOpenGL = NULL;
}
#else
#ifdef ZWIANER_WIN32SDL
CKSDL *GetgpKGrafik(void)
{
return g_pKSDL;
}
void DeleteKGrafik(void)
{
delete g_pKSDL;
g_pKSDL = NULL;
}
#endif
#endif
#endif
//..
int APIENTRY _tWinMain
(
HINSTANCE hInst,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow
)
{
//..
#ifdef ZWIANER_WIN32SDL
g_pKSDL = new CKSDL
(
hInst,
SDL_INIT_VIDEO,
g_bHgAlt
);
if (g_pKSDL != NULL)
{
g_hInst = g_pKSDL->GethInst();
g_hWnd = g_pKSDL->GethWnd();
}
#else
#ifdef ZWIANER_WIN32OPENGL
g_pKOpenGL = new CKOpenGL
(
hInst,
800,
600,
WndProc,
g_bHgAlt,
1
);
if (g_pKOpenGL != NULL)
{
g_hInst = g_pKOpenGL->GethInst();
g_hWnd = g_pKOpenGL->GethWnd();
}
#else
g_pKDDraw = new CKDDraw
(
hInst,
nCmdShow,
g_iPix,
g_bHgAlt,
WndProc,
1
);
if (g_pKDDraw != NULL)
{
g_hInst = g_pKDDraw->GethInst();
g_hWnd = g_pKDDraw->GethWnd();
}
#endif
#endif
if
(
(GetgpKGrafik() != NULL)
&&
(GetgpKGrafik()->GetbAllesOK() == true)
//..
//..
Alle public-Routinen von DDraw/OpenGL/SDL bieten in der jeweiligen Klasse eine für alle konstante Schnittstelle. Was die einzelnen Grafikmethoden im Detail machen, interessiert mich bei der weiteren Spielentwicklung nicht mehr.
Hinweis für gcc/Linux Anwender:
Unter VS ist im Quelltext schön zu sehen, welcher Teil gerade aktiv ist.