<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Genesis 3d Hilfe!!!]]></title><description><![CDATA[<p>Game.cpp:</p>
<pre><code class="language-csharp">//---------------------------------------------------
// Game1.cpp :
// Nur Anzeige von BSP-Welt (ohne Bewegungen)
//---------------------------------------------------

#include &quot;Game1.h&quot;

// Spielobjekt
TGame Game;

// Vorwärtsdeklaration (für Fensterereignisse)
LRESULT CALLBACK WndProc (HWND hWnd,
  UINT iMessage, WPARAM wParam, LPARAM lParam);

// Windows-Hauptfunktion mit Game-Schleife
int WINAPI WinMain
  (HINSTANCE hInstance, HINSTANCE hPrevInstance,
   LPSTR lpCmdLine, int nCmdShow)
{
  // Fensterklasse initialisieren
  WNDCLASS Win;     // Objekt der Fensterklasse
  MSG      msg;     // Aktuelle Meldung
  // Extrabytes für Klassen/Fensterinstanz
  Win.cbClsExtra = 0;
  Win.cbWndExtra = 0;
  // Instanz der Fensterklasse
  Win.hInstance  = hInstance;    
  // Symbol und Cursor der Fensterklasse
  Win.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
  Win.hCursor = LoadCursor(NULL, IDC_ARROW);
  // Hintergrundfarbe (schwarz) und Fensterstil
  Win.hbrBackground =
    (HBRUSH)GetStockObject(BLACK_BRUSH);
  Win.style = CS_HREDRAW | CS_VREDRAW;
  // Verknüpfung mit Ereignis-Routine
  Win.lpfnWndProc = WndProc;
  // Name der Fensterklasse
  Win.lpszClassName = GVersion;
  Win.lpszMenuName = NULL;    // kein Menü
  // Registrierung der Fensterklasse
  RegisterClass (&amp;Win);
  // Fenster erzeugen
  GHandle = CreateWindow (Win.lpszClassName,
    &quot;Genesis3D - [Esc]=Ende&quot;, WS_TILED,
    CW_USEDEFAULT, CW_USEDEFAULT, MaxWidth,
    MaxHeight, NULL, NULL, hInstance, NULL);
  if (!GHandle)
  {
    return 0;  // nicht ok
  }
  // Mauszeiger verbergen
  ShowCursor (false);
  // Fenster zeigen und &quot;auffrischen&quot;
  ShowWindow   (GHandle, nCmdShow);
  UpdateWindow (GHandle);
  // Spielinitialisierung
  Game.CreateGame ();
  // Spielmodus auf &quot;Laufen&quot; einstellen
  Game.isRunning = true;
  // Solange Spiel &quot;läuft&quot;
  while (Game.isRunning)
  {
    // evtl. Fenstereignisse abfragen
    while (PeekMessage
      (&amp;msg, NULL, 0, 0, PM_NOREMOVE))
    {
      // Spielverlauf 
      Game.RunGame ();
      if (!GetMessage(&amp;msg, NULL, 0, 0))
      {
        Game.isRunning = false;
        break;
      }
      // Ereignisdaten auswerten (lassen)
      TranslateMessage (&amp;msg);
      DispatchMessage  (&amp;msg);
    }
  }
  // Programm-/Spielende
  Game.FreeGame ();
  return 1;  // ok
}

// Verarbeitung der Fensterereignisse
LRESULT CALLBACK WndProc (HWND hWnd,
  UINT iMessage, WPARAM wParam, LPARAM lParam)
{
  // Ereignis auswerten
  switch (iMessage)
  {
    case WM_KEYDOWN:
    {
      switch (wParam)
      {
        case VK_ESCAPE:  // Spielende mit [Esc]-Taste
        {
          PostMessage(hWnd, WM_QUIT, 0, 0);
        }
      }
    }
    // ansonsten Ereignis an &quot;Default-Handler&quot;
    default:
      return DefWindowProc 
        (hWnd, iMessage, wParam, lParam);
  }
  return 0;
}

//---------------------------------------------------

// Spiel initialisieren/&quot;aufbauen&quot;
void TGame::CreateGame (void)
{
  geRect   WorldScreen;    // Anzeigefläche
  char     WorldName[64];  // Name der Welt/Level
  geVFile *WorldFile;      // BSP-Datei (Welt/Level)

  // 3D-Engine initialisieren
  Engine = geEngine_Create (GHandle, GVersion, &quot;.&quot;);
  if (!Engine) ExitError
    (&quot;3D-Engine kann nicht gestartet werden!&quot;);
  // Anzeigedaten für Engine ausschalten
  geEngine_EnableFrameRateCounter(Engine, GE_FALSE);
  // Treiber auswählen
  SetDriver ();
  // Anzeigefläche festlegen
  WorldScreen.Left   = 0;
  WorldScreen.Right  = MaxWidth  - 1;
  WorldScreen.Top    = 0;
  WorldScreen.Bottom = MaxHeight - 1;
  // Koordinaten-Matrix setzen
  geXForm3d_SetIdentity (&amp;XForm);
  // Kamera initialisieren
  Camera = geCamera_Create (2.0, &amp;WorldScreen);
  if (!Camera) ExitError
    (&quot;Kamera kann nicht installiert werden!&quot;);
  // BSP-Datei laden
  strcpy (WorldName, Pfad); 
  strcat (WorldName, BSP_Datei);
  WorldFile = geVFile_OpenNewSystem (NULL,
    GE_VFILE_TYPE_DOS, WorldName, NULL,
    GE_VFILE_OPEN_READONLY);
  // Wenn Datei ok, Welt/Level erzeugen
  if (WorldFile)
  {
    World = geWorld_Create(WorldFile);
    geVFile_Close(WorldFile);
  };
  if (!World) ExitError
    (&quot;Welt/Level lässt sich nicht erzeugen!&quot;);
  // Welt/Level mit 3D-Engine verknüpfen
  if (!geEngine_AddWorld(Engine, World)) ExitError
    (&quot;Welt/Level lässt sich nicht einbinden!&quot;);
}

//---------------------------------------------------

// Spiel &quot;in Szene setzen&quot;
void TGame::RunGame (void)
{
  // Koordinaten und Winkel ausrichten
  geXForm3d_SetIdentity (&amp;XForm);
  geXForm3d_RotateX (&amp;XForm, 0.0);
  geXForm3d_RotateY (&amp;XForm, 0.0);
  geXForm3d_RotateZ (&amp;XForm, 0.0);
  geXForm3d_Translate (&amp;XForm, 0.0, 0.0, 0.0);
  geCamera_SetWorldSpaceXForm (Camera, &amp;XForm);
  // Rendering starten
  if (!geEngine_BeginFrame(Engine, Camera, GE_TRUE))
    ExitError (&quot;BeginFrame gescheitert!&quot;);
  // Welt/Level rendern und darstellen
  if (!geEngine_RenderWorld
    (Engine, World, Camera, 0.0)) ExitError
      (&quot;Rendering gescheitert!&quot;);
  // Rendering beenden
  if (!geEngine_EndFrame(Engine)) ExitError
    (&quot;EndFrame gescheitert!&quot;);
}

//---------------------------------------------------

// Spiel &quot;abbauen&quot;
void TGame::FreeGame (void)
{
  // Kamera, Welt und Engine freigeben
  if (Camera) geCamera_Destroy (&amp;Camera);
  if (World) geWorld_Free (World);
  if (Engine) 
  {
     geEngine_ShutdownDriver(Engine);
     geEngine_Free (Engine);
  }
  // Zeiger &quot;nullen&quot;
  Camera = NULL; World = NULL; Engine = NULL;
}

//--------------------------------------------------

// Grafiktreiber/modus wählen/setzen
void TGame::SetDriver (void)
{
  geDriver_System *DriverSystem; long Breite, Hoehe;
  // Treibersystem &quot;einbetten&quot;
  DriverSystem = geEngine_GetDriverSystem (Engine);
  if (!DriverSystem)
    ExitError (&quot;Kein Treibersystem gefunden!&quot;);
  // DirectX-Grafiktreiber aufnehmen
  Driver = geDriver_SystemGetNextDriver
    (DriverSystem, NULL);
  if (!Driver) ExitError (&quot;Treiber nicht gefunden!&quot;);
  // Suchschleife für Grafikmodus
  DMode = geDriver_GetNextMode (Driver, NULL);
  // Liste nach passendem Modus durchsuchen
  while(true)
  {
    if (!DMode) ExitError (&quot;Falscher Treibermodus!&quot;);
    // Auflösungswerte ermitteln
    geDriver_ModeGetWidthHeight
      (DMode, &amp;Breite, &amp;Hoehe);
    // Wenn Maße passen, Schleife verlassen
    if (Breite == MaxWidth &amp;&amp; Hoehe == MaxHeight) break;
    // Ansonsten weitersuchen
    DMode = geDriver_GetNextMode (Driver, DMode);
  }
  // Grafiktreiber/modus überprüfen
  if ((!Driver) || (!DMode)) ExitError
    (&quot;Kein passender Grafiktreiber/modus!&quot;);
  // Grafiktreiber/modus initialisieren
  if (!geEngine_SetDriverAndMode
    (Engine, Driver, DMode)) ExitError
      (&quot;Grafikinitialisierung fehlgeschlagen!&quot;);
}

//--------------------------------------------------

// Spielabbruch bei Fehler
void TGame::ExitError (char *Txt)
{
  // Fehlermeldung anzeigen, Programm abbrechen
  MessageBox (NULL, Txt, &quot;Fehler&quot;, 48);
  FreeGame();
  _exit (EXIT_FAILURE);
}
</code></pre>
<p>und Game.h:</p>
<pre><code class="language-csharp">//---------------------------------------------------
// Game1.h :
// Header mit Klassendeklaration von TGame
//---------------------------------------------------

// #define _BCB  // nur für Borland C++Builder

#include &lt;windows.h&gt;
#include &quot;include\genesis.h&quot;

class TGame
{
public:
  // Eigenschaften
  geEngine      *Engine;     // 3D-Engine
  geWorld       *World;      // World/Level
  geCamera      *Camera;     // Kamera/Betrachter
  geDriver      *Driver;     // Grafiktreiber
  geDriver_Mode *DMode;      // Grafikmodus
  geXForm3d      XForm;      // Welt-Matrix
  bool           isRunning;  // Spielmodus an/aus
  // Methoden
  void CreateGame (void);
  void RunGame    (void);
  void FreeGame   (void);
  void SetDriver  (void);
  void ExitError  (char *Txt);
} ;

// Pfad- und Dateinamen
const char *Pfad      = &quot;.\\levels\\&quot;;
const char *BSP_Datei = &quot;World0.bsp&quot;;
const char *GVersion  = &quot;GPlay1&quot;;
// Globale Konstanten
const int MaxWidth    = 640;   // Max. Screenbreite
const int MaxHeight   = 480;   // Max. Screenhöhe

// Globalvariable
HWND GHandle;      // Handle des &quot;Spielfensters&quot;
</code></pre>
<p>Da steht irgendwas von Treiber nicht gefunden!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/181874/genesis-3d-hilfe</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 17:04:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/181874.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 May 2007 12:02:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Genesis 3d Hilfe!!! on Fri, 18 May 2007 12:02:45 GMT]]></title><description><![CDATA[<p>Game.cpp:</p>
<pre><code class="language-csharp">//---------------------------------------------------
// Game1.cpp :
// Nur Anzeige von BSP-Welt (ohne Bewegungen)
//---------------------------------------------------

#include &quot;Game1.h&quot;

// Spielobjekt
TGame Game;

// Vorwärtsdeklaration (für Fensterereignisse)
LRESULT CALLBACK WndProc (HWND hWnd,
  UINT iMessage, WPARAM wParam, LPARAM lParam);

// Windows-Hauptfunktion mit Game-Schleife
int WINAPI WinMain
  (HINSTANCE hInstance, HINSTANCE hPrevInstance,
   LPSTR lpCmdLine, int nCmdShow)
{
  // Fensterklasse initialisieren
  WNDCLASS Win;     // Objekt der Fensterklasse
  MSG      msg;     // Aktuelle Meldung
  // Extrabytes für Klassen/Fensterinstanz
  Win.cbClsExtra = 0;
  Win.cbWndExtra = 0;
  // Instanz der Fensterklasse
  Win.hInstance  = hInstance;    
  // Symbol und Cursor der Fensterklasse
  Win.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
  Win.hCursor = LoadCursor(NULL, IDC_ARROW);
  // Hintergrundfarbe (schwarz) und Fensterstil
  Win.hbrBackground =
    (HBRUSH)GetStockObject(BLACK_BRUSH);
  Win.style = CS_HREDRAW | CS_VREDRAW;
  // Verknüpfung mit Ereignis-Routine
  Win.lpfnWndProc = WndProc;
  // Name der Fensterklasse
  Win.lpszClassName = GVersion;
  Win.lpszMenuName = NULL;    // kein Menü
  // Registrierung der Fensterklasse
  RegisterClass (&amp;Win);
  // Fenster erzeugen
  GHandle = CreateWindow (Win.lpszClassName,
    &quot;Genesis3D - [Esc]=Ende&quot;, WS_TILED,
    CW_USEDEFAULT, CW_USEDEFAULT, MaxWidth,
    MaxHeight, NULL, NULL, hInstance, NULL);
  if (!GHandle)
  {
    return 0;  // nicht ok
  }
  // Mauszeiger verbergen
  ShowCursor (false);
  // Fenster zeigen und &quot;auffrischen&quot;
  ShowWindow   (GHandle, nCmdShow);
  UpdateWindow (GHandle);
  // Spielinitialisierung
  Game.CreateGame ();
  // Spielmodus auf &quot;Laufen&quot; einstellen
  Game.isRunning = true;
  // Solange Spiel &quot;läuft&quot;
  while (Game.isRunning)
  {
    // evtl. Fenstereignisse abfragen
    while (PeekMessage
      (&amp;msg, NULL, 0, 0, PM_NOREMOVE))
    {
      // Spielverlauf 
      Game.RunGame ();
      if (!GetMessage(&amp;msg, NULL, 0, 0))
      {
        Game.isRunning = false;
        break;
      }
      // Ereignisdaten auswerten (lassen)
      TranslateMessage (&amp;msg);
      DispatchMessage  (&amp;msg);
    }
  }
  // Programm-/Spielende
  Game.FreeGame ();
  return 1;  // ok
}

// Verarbeitung der Fensterereignisse
LRESULT CALLBACK WndProc (HWND hWnd,
  UINT iMessage, WPARAM wParam, LPARAM lParam)
{
  // Ereignis auswerten
  switch (iMessage)
  {
    case WM_KEYDOWN:
    {
      switch (wParam)
      {
        case VK_ESCAPE:  // Spielende mit [Esc]-Taste
        {
          PostMessage(hWnd, WM_QUIT, 0, 0);
        }
      }
    }
    // ansonsten Ereignis an &quot;Default-Handler&quot;
    default:
      return DefWindowProc 
        (hWnd, iMessage, wParam, lParam);
  }
  return 0;
}

//---------------------------------------------------

// Spiel initialisieren/&quot;aufbauen&quot;
void TGame::CreateGame (void)
{
  geRect   WorldScreen;    // Anzeigefläche
  char     WorldName[64];  // Name der Welt/Level
  geVFile *WorldFile;      // BSP-Datei (Welt/Level)

  // 3D-Engine initialisieren
  Engine = geEngine_Create (GHandle, GVersion, &quot;.&quot;);
  if (!Engine) ExitError
    (&quot;3D-Engine kann nicht gestartet werden!&quot;);
  // Anzeigedaten für Engine ausschalten
  geEngine_EnableFrameRateCounter(Engine, GE_FALSE);
  // Treiber auswählen
  SetDriver ();
  // Anzeigefläche festlegen
  WorldScreen.Left   = 0;
  WorldScreen.Right  = MaxWidth  - 1;
  WorldScreen.Top    = 0;
  WorldScreen.Bottom = MaxHeight - 1;
  // Koordinaten-Matrix setzen
  geXForm3d_SetIdentity (&amp;XForm);
  // Kamera initialisieren
  Camera = geCamera_Create (2.0, &amp;WorldScreen);
  if (!Camera) ExitError
    (&quot;Kamera kann nicht installiert werden!&quot;);
  // BSP-Datei laden
  strcpy (WorldName, Pfad); 
  strcat (WorldName, BSP_Datei);
  WorldFile = geVFile_OpenNewSystem (NULL,
    GE_VFILE_TYPE_DOS, WorldName, NULL,
    GE_VFILE_OPEN_READONLY);
  // Wenn Datei ok, Welt/Level erzeugen
  if (WorldFile)
  {
    World = geWorld_Create(WorldFile);
    geVFile_Close(WorldFile);
  };
  if (!World) ExitError
    (&quot;Welt/Level lässt sich nicht erzeugen!&quot;);
  // Welt/Level mit 3D-Engine verknüpfen
  if (!geEngine_AddWorld(Engine, World)) ExitError
    (&quot;Welt/Level lässt sich nicht einbinden!&quot;);
}

//---------------------------------------------------

// Spiel &quot;in Szene setzen&quot;
void TGame::RunGame (void)
{
  // Koordinaten und Winkel ausrichten
  geXForm3d_SetIdentity (&amp;XForm);
  geXForm3d_RotateX (&amp;XForm, 0.0);
  geXForm3d_RotateY (&amp;XForm, 0.0);
  geXForm3d_RotateZ (&amp;XForm, 0.0);
  geXForm3d_Translate (&amp;XForm, 0.0, 0.0, 0.0);
  geCamera_SetWorldSpaceXForm (Camera, &amp;XForm);
  // Rendering starten
  if (!geEngine_BeginFrame(Engine, Camera, GE_TRUE))
    ExitError (&quot;BeginFrame gescheitert!&quot;);
  // Welt/Level rendern und darstellen
  if (!geEngine_RenderWorld
    (Engine, World, Camera, 0.0)) ExitError
      (&quot;Rendering gescheitert!&quot;);
  // Rendering beenden
  if (!geEngine_EndFrame(Engine)) ExitError
    (&quot;EndFrame gescheitert!&quot;);
}

//---------------------------------------------------

// Spiel &quot;abbauen&quot;
void TGame::FreeGame (void)
{
  // Kamera, Welt und Engine freigeben
  if (Camera) geCamera_Destroy (&amp;Camera);
  if (World) geWorld_Free (World);
  if (Engine) 
  {
     geEngine_ShutdownDriver(Engine);
     geEngine_Free (Engine);
  }
  // Zeiger &quot;nullen&quot;
  Camera = NULL; World = NULL; Engine = NULL;
}

//--------------------------------------------------

// Grafiktreiber/modus wählen/setzen
void TGame::SetDriver (void)
{
  geDriver_System *DriverSystem; long Breite, Hoehe;
  // Treibersystem &quot;einbetten&quot;
  DriverSystem = geEngine_GetDriverSystem (Engine);
  if (!DriverSystem)
    ExitError (&quot;Kein Treibersystem gefunden!&quot;);
  // DirectX-Grafiktreiber aufnehmen
  Driver = geDriver_SystemGetNextDriver
    (DriverSystem, NULL);
  if (!Driver) ExitError (&quot;Treiber nicht gefunden!&quot;);
  // Suchschleife für Grafikmodus
  DMode = geDriver_GetNextMode (Driver, NULL);
  // Liste nach passendem Modus durchsuchen
  while(true)
  {
    if (!DMode) ExitError (&quot;Falscher Treibermodus!&quot;);
    // Auflösungswerte ermitteln
    geDriver_ModeGetWidthHeight
      (DMode, &amp;Breite, &amp;Hoehe);
    // Wenn Maße passen, Schleife verlassen
    if (Breite == MaxWidth &amp;&amp; Hoehe == MaxHeight) break;
    // Ansonsten weitersuchen
    DMode = geDriver_GetNextMode (Driver, DMode);
  }
  // Grafiktreiber/modus überprüfen
  if ((!Driver) || (!DMode)) ExitError
    (&quot;Kein passender Grafiktreiber/modus!&quot;);
  // Grafiktreiber/modus initialisieren
  if (!geEngine_SetDriverAndMode
    (Engine, Driver, DMode)) ExitError
      (&quot;Grafikinitialisierung fehlgeschlagen!&quot;);
}

//--------------------------------------------------

// Spielabbruch bei Fehler
void TGame::ExitError (char *Txt)
{
  // Fehlermeldung anzeigen, Programm abbrechen
  MessageBox (NULL, Txt, &quot;Fehler&quot;, 48);
  FreeGame();
  _exit (EXIT_FAILURE);
}
</code></pre>
<p>und Game.h:</p>
<pre><code class="language-csharp">//---------------------------------------------------
// Game1.h :
// Header mit Klassendeklaration von TGame
//---------------------------------------------------

// #define _BCB  // nur für Borland C++Builder

#include &lt;windows.h&gt;
#include &quot;include\genesis.h&quot;

class TGame
{
public:
  // Eigenschaften
  geEngine      *Engine;     // 3D-Engine
  geWorld       *World;      // World/Level
  geCamera      *Camera;     // Kamera/Betrachter
  geDriver      *Driver;     // Grafiktreiber
  geDriver_Mode *DMode;      // Grafikmodus
  geXForm3d      XForm;      // Welt-Matrix
  bool           isRunning;  // Spielmodus an/aus
  // Methoden
  void CreateGame (void);
  void RunGame    (void);
  void FreeGame   (void);
  void SetDriver  (void);
  void ExitError  (char *Txt);
} ;

// Pfad- und Dateinamen
const char *Pfad      = &quot;.\\levels\\&quot;;
const char *BSP_Datei = &quot;World0.bsp&quot;;
const char *GVersion  = &quot;GPlay1&quot;;
// Globale Konstanten
const int MaxWidth    = 640;   // Max. Screenbreite
const int MaxHeight   = 480;   // Max. Screenhöhe

// Globalvariable
HWND GHandle;      // Handle des &quot;Spielfensters&quot;
</code></pre>
<p>Da steht irgendwas von Treiber nicht gefunden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1287350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1287350</guid><dc:creator><![CDATA[subcortex]]></dc:creator><pubDate>Fri, 18 May 2007 12:02:45 GMT</pubDate></item></channel></rss>