ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4440734
Jetzt (Chat):
17 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
OpenGL API + SDL
wxWidgets oder SDL benutzen?
Normal
AutorThema
BlueShark Offline
ZFX'ler


Registriert seit:
05.05.2005

Niedersachsen
wxWidgets oder SDL benutzen?Nach oben.
Hallo,

ich möchte mal wissen, was Ihr mir empfeheln würdet.

Hier ein paar Bemerkungen zu meinem Projekt:

-Ich programmiere zurzeit mit einigen anderen Leuten an einem Shooter. Wir haben uns dabei einige Ziele gesetzt, die wir wenn möglich einhalten wollen. Dazu gehört einmal, dass jeder in der Lage sein soll unser Spiel spielen zu können.(sprich Cross-Plattform)
-Nun ist es aber so, dass wir zu mindestens einen kleinen Leveleditor basteln müssen, der auch frei verfügbar sein soll.

Nun stehen wir vor folgendem Dilemma:
Wir haben einmal die SDL und wxWidget zur Hand, damit wir unser Zeug für viele verfügbar machen können. Doch wie sollen wir das ganze aufziehen?

1. Nur die SDL benutzen und für die Tools ne GUI schreiben. Wäre meines Erachtens mit deutlich mehr Arbeit verbunden.
2. SDL nur für das Spiel benutzen und die Tools mithilfe von wxWidget programmieren. Ist glaube ich weniger Aufwand, jedoch ist die Handhabung von OpenGL bei wxWidget und SDL verschieden.

Gruß Harry
06.01.2009, 22:47:44 Uhr
Anz Offline
ZFX'ler


Registriert seit:
05.06.2005

Schweiz
267444182
Re: wxWidgets oder SDL benutzen?Nach oben.
Ich würde die zweite Variante verwenden. Wie du hier nachlesen kannst, gibt es einige Probleme um mit wxWidgets ein Spiel zu entwickeln.

Ich würde vorschlagen ihr entwickelt eine Grafik Engine mit OpenGL, die unabhänging ist vom UI. Damit könnt ihr das Spiel mit SDL entwickeln und später immer noch ein Tool mit wxWidgets programmieren.

Für SDL gibt es einige GUI Libraries, die du hier finden kannt.
07.01.2009, 10:23:55 Uhr
BlueShark Offline
ZFX'ler


Registriert seit:
05.05.2005

Niedersachsen
Re: wxWidgets oder SDL benutzen?Nach oben.
danke für die Links, vor allem den zu wxWidget kann ich gut gebrauchen.

Nun nochmal zum Thema. Wir brauchen ja von vorneherein das Tool, deswegen müssen wir uns deswegen auch schon jetzt Gedanken um sowas machen. Das Problem ist nun, dass wxWidget anders mit OpenGL arbeitet als SDL. Bei wxWidget ruft man zum Beispiel wxGL_SwapBuffers() (bin mir gerade nicht sicher ob der Befehl wirklich so heißt) aus und SDL macht das glaube mithilfe des OpenGL Befehls. Letzten Endes steckt der bei beiden dahinter, aber wenn es mehrere von solchen Unterschieden gibt wird es schwierig die Grafik-Engine sauber von der UI zu trennen.

Oder liege ich gerade komplett falsch?

Gruß BS
07.01.2009, 19:18:42 Uhr
Anz Offline
ZFX'ler


Registriert seit:
05.06.2005

Schweiz
267444182
Re: wxWidgets oder SDL benutzen?Nach oben.
Der Unterschied ist nicht sehr gross. In wxWidgets siehts etwa so aus:
Code:
// ...
SetCurrent();
// OpenGL Befehle
SwapBuffers();
// ...

und mit SDL:
Code:
// ...
// OpenGL Befehle
SDL_GL_SwapBuffers();
// ...


Bildschirminhalt löschen etc übernimmt alles OpenGL. Das könntest du ziemlich einfach in einem Interface verpacken.

Allerdings musst du aber noch einige andere Aspekte berücksichtigen. Double buffering muss zum Beispiel beim Fenster erzeungen angeben werden, aber das lässt sich auch leicht kapsel, falls nötig.

Ein weiteres Interface wird für die Texturen nötig, wenn du wxImage und SDL_image verwenden willst. Aber hierfür kannst du auch eine unabhängige Library benutzen um die Komplexität zu reduzieren.
07.01.2009, 21:20:20 Uhr
frittentuete Offline
ZFX'ler


Registriert seit:
08.03.2005

Hamburg
Re: wxWidgets oder SDL benutzen?Nach oben.
hi,

keine ahnung, ob es dir hilft, aber hier gibt es ein tutorial zur kombination von wx-widgets und SDL: http://code.technoplaza.net/wx-sdl/

habs mir selbst nicht durchgelesen und weiß nicht obs einigermaßen aktuell ist, war aber das erste, was mir nach 1 minute suche aufgefallen ist.

frittentuete
08.01.2009, 09:47:29 Uhr
BlueShark Offline
ZFX'ler


Registriert seit:
05.05.2005

Niedersachsen
Re: wxWidgets oder SDL benutzen?Nach oben.
Mmmhhh also müsste ich also mehr oder weniger die Swap-Methode SDL oder wxWidget überlassen. Da wir Dateien, so wie Bitmaps oder anderes Material in einem virtuellen Archiv haben, ist das mit dem Laden nicht das Problem. Ich glaube, dass diese Kombination von SDL und wxWidget nicht gerade die beste Lösung ist(widerstrebt mir einfach, keine Ahnung warum). Ich werde es wohl so machen, dass ich mit wxWidget die Tools programmiere und die SDL für das Spiel verwende.

Vielen Dank Euch allen für die kompetente Hilfe
Mfg BS
08.01.2009, 15:26:20 Uhr
6SidedDice Offline
Job-Moderator


Registriert seit:
16.10.2002

Nordrhein-Westfalen
161010163
Re: wxWidgets oder SDL benutzen?Nach oben.
Überleg dir einfach mal wie du beim nächsten mal sowas von vorn herein umgehen kannst. Wenn du dir Gedanken um funktionsnamen machst, die unterschiedlich sind, sehe ich den Fehler schon beim Design eurer Engine.
Wieso nicht die GrafikAPI so kapseln, das der Engine völlig egal ist ob sie jetzt mit OpenGL, wxWidget OGL(ka ob man das hier so nennen kann) oder DX rendert. Wäre das so, hättest du nur die geschriebenen Interfaces implementieren müssen, damit das ganze auch auf wxWidget läuft.
Klar, klingt leichter als es ist ... aber der mehr Aufwand ist es wert.

kleines beispiel.

Code:
// basis interface, hier nur eine methode der
// einfachheit
// die engine arbeitet intern nur mit den
// interfaces
class IRenderInterface
{
   virtual void SwapBuffers()=0;
}

// wxWidget
class wxWidgetRenderer : IRenderInterface
{
  virtual void SwapBuffers()
  {
     SetCurrent();
     SwapBuffers();
  }
}

// SDL OGL
class OGLRenderer : IRenderInterface
{
  virtual void SwapBuffers()
  {
     SDL_GL_SwapBuffers();
  }
}

// und noch directx
class DXRenderer : IRenderInterface
{
  virtual void SwapBuffers()
  {
     device.Present(0, 0, 0, 0);
  }
}
09.01.2009, 09:59:31 Uhr
BlueShark Offline
ZFX'ler


Registriert seit:
05.05.2005

Niedersachsen
Re: wxWidgets oder SDL benutzen?Nach oben.
Nun ja, wir wollen eigentlich nur OpenGL verwenden. Immerhin läuft das ja auch unter Windows, wodurch es nicht erforderlich ist, dass man sich damit mehr Arbeit macht.

Aber den Code den du mir da gerade gepostet hast ist richtig nett. Haben gar nicht daran gedacht, dass man das so elegant lösen könnte. Da werden wir nochmal durch unserer Konzept gucken müssen, denn ich bin mir sicher, dass man da an vielen Stellen noch was verbessern kann.

Mfg BS

1 Mal gendert, zuletzt am 09.01.2009, 21:11:34 Uhr von BlueShark.
09.01.2009, 18:43:16 Uhr
Tactive Offline
ZFX'ler


Registriert seit:
21.07.2004

Niedersachsen
Re: wxWidgets oder SDL benutzen?Nach oben.
Die SDL habe ich in meinem Projekt bewusst umgangen, da sie nicht für 64Bit freigegeben ist.

Das ist zwar ein wenig mehr Aufwand (vor allem wenn man sich mit der X-Window Programmierung unter Linux beschäftigt), aber dafür läuft das ganze danach wunderbar unter 64 Bit.

Warum verwendet Ihr Eure Engine nicht einfach auch unterhalb von wxWidgets? Letzendlich läuft eh alles über das Fenster-Handle und die entsprechenden Initialisierungs-Befehle ab. Was danach passiert, ist dann egal.



1 Mal gendert, zuletzt am 11.01.2009, 03:03:01 Uhr von Tactive.
11.01.2009, 03:02:48 Uhr
BlueShark Offline
ZFX'ler


Registriert seit:
05.05.2005

Niedersachsen
Re: wxWidgets oder SDL benutzen?Nach oben.
Oje, das wusste ich gar nicht. Na klasse, nun haben wir ein ordentliches Problem, da wir keinen Programmierer(wir sind nur 3 Leute) haben der sich mit Linux auskennt. Warum ist das nicht 64Bit kompatibel!?

OK, jetzt geht es mir richtig übel, bedeutet, dass nun die richtig dummen Fragen kommen^^:

Heißt das jetzt, dass wir sozusagen jedes Programm einmal in 32Bit und einmal in 64Bit bereitstellen müssten?

Wenn dem so wäre, wie sag ich das am besten meinem Compiler?(Verwende CodeBlocks mit dem GCC-Compiler)

Zitat:
Die SDL habe ich in meinem Projekt bewusst umgangen, da sie nicht für 64Bit freigegeben ist.

Wann hast du das Projekt geschrieben? Vielleicht haben die die SDL ja schon "nachgerüstet"?

Zitat:
Warum verwendet Ihr Eure Engine nicht einfach auch unterhalb von wxWidgets? Letzendlich läuft eh alles über das Fenster-Handle und die entsprechenden Initialisierungs-Befehle ab. Was danach passiert, ist dann egal.

Wir verwenden die wxWidget ja nur als UI für das Tool, was wir schreiben. Davon losgelöst ist die Game-Engine und die Grafik-Engine. Dank 6SidedDice haben wir dafür jetzt schon eine einfache Lösung.(nochmals vielen Dank)

Die Grafik-Engine verwendet (jedenfalls momentan)nur OpenGL. Und für die Game-Engine haben wir ein entsprechendes Interface geschrieben, damit wir darin keine System abhängigen API Befehle aufrufen müssen.

Aber wie es eben so ist, ist alles noch ziemlich am Anfang und somit muss noch viel gemacht werden oder wie im Fall der Grafik-Engine abgeändert werden.^^

Mfg BS
11.01.2009, 11:27:19 Uhr
yonibear Offline
ZFX'ler


Registriert seit:
04.02.2006

Hessen
171876359 jonathan_sieber@yahoo.de jonathan_sieber
Re: wxWidgets oder SDL benutzen?Nach oben.
Was auch immer das bedeuten soll dass die SDL nicht für 64 Bit "freigegeben" ist, ich habe auf 64 bit Linux noch nie damit Probleme gehabt, oder nur davon gehört. Ich weiß nicht ob Windows mit der 64 bit Umstellung noch andere Stolperfallen eingeführt hat, aber an sich sollten da auch keine Probleme hinzukommen.
11.01.2009, 19:58:20 Uhr
Blobby Volley 2
6SidedDice Offline
Job-Moderator


Registriert seit:
16.10.2002

Nordrhein-Westfalen
161010163
Re: wxWidgets oder SDL benutzen?Nach oben.
Ich hab zwar keine Ahnung von der SDL geschweige denn von Linux, aber seit wann haben 32bit Programme Schwierigkeiten unter einem 64bit Betriebsystem zu laufen? Afaik sollte das doch keinerlei Probleme geben, oder ist das unter Linux anders?

Zitat:

Ich weiß nicht ob Windows mit der 64 bit Umstellung noch andere Stolperfallen eingeführt hat, aber an sich sollten da auch keine Probleme hinzukommen.


Dasselbe dachte ich jetzt beim lesen von Linux

1 Mal gendert, zuletzt am 12.01.2009, 05:52:41 Uhr von 6SidedDice.
12.01.2009, 05:51:32 Uhr
BlueShark Offline
ZFX'ler


Registriert seit:
05.05.2005

Niedersachsen
Re: wxWidgets oder SDL benutzen?Nach oben.
Also ist das kein Problem ein 32Bit Programm auf einem 64Bit Rechner laufen zu lassen. Natürlich nur unter der Voraussetzung, dass ich alles mitgebe, was man zum Ausführen des Programmes braucht, sprich Libraries.

Mfg BS
12.01.2009, 16:31:17 Uhr
Normal


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel