Anfängerfrage (was ist was?)
-
Hallo Zusammen
Folgender Text bezieht sich auf grundlegende Fragen zu SDL/DirectX/OpenGL und andere Bibliotheken.
Ich bin sicher dass diese Fragen hier bereits mehrere Male beantwortet wurden (Ja, ich habe die Suchfunktion benutzt), doch keine hat mir konkrete Antworten geliefert wie ich sie haben möchte, deshalb stelle ich sie eben selber nochmals :).
Ich bin nicht gerade ein Superprofi in c++ programmierung aber bestimmt kein Totalanfänger der meint, einen schnellen 3D Actionshooter in 5 Minuten bauen zu können. Ich weiss, wie extrem Aufwändig das ganze ist.
Ich habe mir die Illusion zugetraut, selber eine "einfache" 3D-Engine zu bauen (Einfach ist mit Funktionsumfang gemeint, nicht etwa einen ein- oder zweizeiler
). Mit SDL habe ich mich bereits beschäftigt und habe rausgekriegt, dass ich keine Polygone (oder ggf. nur Dreiecke/Vierecke) zeichnen kann, sondern dazu beispielsweise die SGE-Klassen verwenden muss. Stimmt das? Kann ich Polygone mit nativ-SDL zeichnen? Natürlich könnte man jedes Pixel in einem Polygon zeichnen doch da würde mir trotz allem dann doch der Kopf platzen, zudem alles auf der Bildschirmauflösung abhängt :p (Beachtet Grösse der Objekte).Mit OpenGL resp. DirectX wollte ich mich zuerst nicht auseinandersetzten, da diese zu umfangreich wären, ich viel Ballast, also Funktionen und tausende von Klassen geladen habe, die ich nicht benötige. Doch nun bin ich mir wieder nicht sicher. Greift SDL direkt auf die Hardware bezüglich Rendering/Cache zu? Denn wenn ja würde mir der Funktionsumfang eigentlich reichen. Ich will noch keine 16x AA mit 8X Antistropic und was weiss ich Trilinear Optimization einschalten können. Auch keine "Maps" (z.B. *.bsp)'s laden oder bereits irgendetwas 3D laden.Im Prinzip möchte ich eine schnelle Hardwareschnittstelle (die nicht veraltet ist) und primitive 2D Figuren darstellen.
Was ich nun konkret wissen möchte: Was würdet Ihr in meiner Lage tun?
Wenns möglich ist möchte ich plattformunabhängig programmieren, aber vorzugsweise auf ner Unix 2.6 64Bit Kiste

Gruss
howdy
-
hm... also wenn du ne 3D-Engine baun willst (geht auch wenn man nich so viel ahnung hat, bekommt man ja dadurch) dann is SDL definitiv die falsche wahl. denn sdl is nu mal für 2d ausgelegt. Dann würde ich dir ogl oder d3d empfehlen, damit kannst du wirklich 3d machen. Mit sdl kannst eben nur sprites rendern und sowas, aber keine wirklichen 3d-objekte. Aso, und 3D is auch nich schwerer als 2D. Jedenfalls mit D3D (ogl kenn ich ncih). Also wenn du 2d in d3d kannst, dann kannste auch schon 3d,... naja fast
n bisschen. rest kommt dann. Also mit sdl kriegst du keine 3d-engine hin. nimm was anderes. wenn du nur 2d machen willst, dann is sdl sicherlich ne gute wahl.
-
Maxi schrieb:
hm... also wenn du ne 3D-Engine baun willst (geht auch wenn man nich so viel ahnung hat, bekommt man ja dadurch) dann is SDL definitiv die falsche wahl. denn sdl is nu mal für 2d ausgelegt.
Genau das will ich ja? Ich will ja nur 2D und nichts 3D.
Maxi schrieb:
Dann würde ich dir ogl oder d3d empfehlen, damit kannst du wirklich 3d machen. Mit sdl kannst eben nur sprites rendern und sowas, aber keine wirklichen 3d-objekte.
Siehe oben
Maxi schrieb:
Aso, und 3D is auch nich schwerer als 2D. Jedenfalls mit D3D (ogl kenn ich ncih). Also wenn du 2d in d3d kannst, dann kannste auch schon 3d,... naja fast
n bisschen. rest kommt dann. Also mit sdl kriegst du keine 3d-engine hin.Meinst du? Warum denn nicht? 3D IST auf 2D aufgebaut, dein Bildschirm ist ja schliesslich auch 2D :D:D:D
Ausserdem sind 3D-Objekte schlussendlich auch nur verzogene 2D-Figuren, und genau _da_ liegt der springende Punkt.Maxi schrieb:
nimm was anderes. wenn du nur 2d machen willst, dann is sdl sicherlich ne gute wahl.
Oke werd mich mal umschauen.
Danke 
-
howdy schrieb:
Ich habe mir die Illusion zugetraut, selber eine "einfache" 3D-Engine zu bauen
howdy schrieb:
Ich will ja nur 2D und nichts 3D.
Was denn nun?
Pures SDL reicht für kaum ein Spiel aus.
Es ist aber sehr einfach, OpenGL zusammen mit SDL zu verwenden.
Das tue ich bei meinem aktuellen 2D-Projekt auch. OpenGL ist schließlich keine reine 3D-API.
-
howdy schrieb:
Hallo Zusammen
Ich bin sicher dass diese Fragen hier bereits mehrere Male beantwortet wurden (Ja, ich habe die Suchfunktion benutzt), doch keine hat mir konkrete Antworten geliefert wie ich sie haben möchte, deshalb stelle ich sie eben selber nochmals :).Die Suchfunktion kannste vergessen, die funktioniert in diesem Forum nicht.
Stattdessen solltest du immer im FAQ oder bei google vorbeischauen.howdy schrieb:
Meinst du? Warum denn nicht? 3D IST auf 2D aufgebaut, dein Bildschirm ist ja schliesslich auch 2D :D:D:D
Ausserdem sind 3D-Objekte schlussendlich auch nur verzogene 2D-Figuren, und genau _da_ liegt der springende Punkt.Nein, da kommen grundlegend andere Techniken zum Einsatz. Will sagen, 3D ist etwas völlig anderes als 2D. Wenn du 2D programmieren willst solltest du auch eine Engine bzw. Library nehmen die auf 2D ausgelegt ist z.B. SDL wobei SDL alleine eigentlich keine Zeichenfunktionen enthält die sind in SDL_gfx augelagert(?). Um Sprites zu laden nimmst du dann SDL_image...
Wenn du 3D programmieren willst wirst du nicht um OpenGL oder ähnliches herumkomen wenn du dir eine Engine bauen willst. Ich würde dir jedoch raten
eine bereits vorhandene Engine zu nehmen (z.B. Irrlicht) und damit mal ein bischen "herumzubasteln". Eine eigene Engine zu bauen ist ein wahnsinnig großer
Aufwand!!! Außerdem sollte dir klar sein das 3D ziemlich komplex ist.
-
TomasRiker schrieb:
Was denn nun?
Konkret möchte ich eine schnelle Hardware-Schnittstelle und Klassen die mir erlauben, 2D-Figuren über die Grafikkarte zu zeichnen, optimiert auf 2D.
TomasRiker schrieb:
Pures SDL reicht für kaum ein Spiel aus.
Welche Gründe gibt es wenn ich fragen darf?

-
Storm.Xapek.de schrieb:
Nein, da kommen grundlegend andere Techniken zum Einsatz. Will sagen, 3D ist etwas völlig anderes als 2D. Wenn du 2D programmieren willst solltest du auch eine Engine bzw. Library nehmen die auf 2D ausgelegt ist z.B. SDL wobei SDL alleine eigentlich keine Zeichenfunktionen enthält die sind in SDL_gfx augelagert(?). Um Sprites zu laden nimmst du dann SDL_image...
Wie genau ist denn das anders? Ich spreche hier alleine von der Darstellung und nicht von Algorithmen. Wenn ich einen 3D-Ball darstelle dann muss doch die Grafikkarte _schlussendlich_ auch "nur" einen Kreis zeichnen, der einfach eine Textur hat (abgestimmt mit Lighting) die nach nem Kreis aussieht!
Storm.Xapek.de schrieb:
Wenn du 3D programmieren willst wirst du nicht um OpenGL oder ähnliches herumkomen wenn du dir eine Engine bauen willst. Ich würde dir jedoch raten
eine bereits vorhandene Engine zu nehmen (z.B. Irrlicht) und damit mal ein bischen "herumzubasteln". Eine eigene Engine zu bauen ist ein wahnsinnig großer
Aufwand!!! Außerdem sollte dir klar sein das 3D ziemlich komplex ist.Kann sein dass ich nicht um OpenGL rumkomme. Aber wie gesagt ich will was selber machen :D:D Ich will vorerst noch keine Heightmap laden oder was von irgendwelchen Personen als "rumlatschen" verstanden wurde, erstellen. Ich bin mir bewusst dass der Aufwand brutal ist!
Mit Irrlicht habe ich schon herumexperimentiert doch das ist mir bereits zu umfangreich und im Prinzip nur nacheinanderfolgende Aufrufe von bereits vorgefertigten Funktionen, also z.B: zeichneRechteck() oder zeichneWasser(). Das ist ja bereits ne 3D Engine
-
grafikkarten sind heutzutage nunmal fuer 3d-darstellung ausgelegt.
und dafuer gibt es genau zwei apis: opengl und direct3d.
wenn du die dritte dimension nicht brauchst, lass sie halt weg.
guck dir einfach mal beispiele an.
-
hellihjb schrieb:
grafikkarten sind heutzutage nunmal fuer 3d-darstellung ausgelegt.
und dafuer gibt es genau zwei apis: opengl und direct3d.
wenn du die dritte dimension nicht brauchst, lass sie halt weg.
guck dir einfach mal beispiele an.NeHe kenn ich bereits :D:D
Tja ich leb in der falschen Zeit
Heute ist nichts mehr einflussbar, jedenfalls nicht auf dieser Ebene wie ich mirs vorstelle.
-
wenn du das tatsaechlich kennen wuerdest, dh probiert und verstanden haettest, muesstest du jetzt nicht hier rumpienzen
