Autor Beitrag
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Mi 12.03.03 13:41 
@Blasterboy: Die meisten Spiele sind in C++ und nicht in C geschrieben. Ich bitte diesen Unterschied zu beachten, denn ein Vergleich von C mit Delphi (genauer Object Pascal) ist so ähnlich wie einen kleinen Flitzer mit einer Großraumlimousine zu vergleichen.

@Phobeus:
Siehst du, schon prallen Welten aufeinander.

Zwei Dinge zu glRotatef:
1.
Microsoft OpenGL Implementation hat folgendes geschrieben:
The glRotate function computes a matrix [...]
The current matrix (see glMatrixMode) is multiplied by this rotation matrix [...]

Das heißt, jeder Aufruf von glRotatef errechnet die Matrix komplett neu (mithilfe von sin/cos). Wenn du die Matrix speicherst, geht's also schneller.
2. Wenn du diese Methode verwendest, kommst du leicht zum Gimbal-Lock-Problem. Die Umgehung des Problems durch Quaternionen wird langsamer, weil aus der Quaternion bereits direkt die Matrix berechnet wird.
Das heißt, glRotatef ist einfacher, aber unter Umständen langsamer bzw. ungenauer. Das spricht nicht direkt gegen die Verwendung von glRotatef, aber für die Matrixmethode.

Phobeus hat folgendes geschrieben:
Was Hilfsfunktionen angeht, wird jede fähige Programmier sich schnell selbst etwas dafür zu schreiben, anstatt stundenlang in der SDK nach Hilfe zu suchen.

Wer lesen und schreiben kann ist klar im Vorteil (Achtung, Sarkasmus). Ich habe jedenfalls noch nie länger als ein, zwei Minuten suchen müssen - in der Zeit hätte zumindest ich die gesuchten Funktionen jedenfalls nicht fehlerfrei selbst geschrieben. Auf der anderen Seite kann ich mir dann auch eine schnelle Kapselung für die Matrixmethode schreiben.

Wie dem auch sei, daran sieht man es: Du hast lange Zeit Direct3D und OpenGL verwendet, genau wie ich. Trotzdem bin ich Direct3D-Fan und du OpenGL-Fan. Letztendlich entscheidet also nur persönlicher Geschmack.
Aber dass die objektorientierten Programmierer nur etwa 1% ausmachen ist mir neu.

Noch was zu Delphi / C++:
Zum einen kann man nur Object Pascal mit C++ vergleichen, zum anderen sind diese tatsächlich gleichgut für Spieleprogrammierung geeignet. Auch hier entscheidet wiederum die persönliche Präferenz bzw. die Zielplattform. Desweiteren ist die Sprache C++ wesentlich umfangreicher und dennoch deutlich einfacher zu schreiben (ich meine weniger tippen), und wenn man damit etwas anfangen kann, ist sie deutlich mächtiger als Object Pascal. Wenn man die coolen Features wie Überladene Operatoren, Templates, Mehrfachvererbung etc. aber nicht brauchst, ist Object Pascal vielleicht die bessere Wahl, weil man dort auch noch Delphi zur Verfügung hat.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 12.03.03 17:12 
viele meinen ja das man mit delphi KEINE spiele schreiben kann, aber das ist falsch......

_________________
MFG
Michael Springwald, "kann kein englisch...."
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Mi 12.03.03 23:08 
@glRotate: Das ist technisch nicht einwanfrei. Es wird nicht jedesmal neu berechnet, es wird schlicht und ergreifend dazu multipliziert, anders geht es bei D3D auch nicht von statten. Gerade um dein Problem zu umgehen, gibt es die Stacks bei OpenGL, die es bei Direct3D nicht gibt... deshalb ist gerade bei hierachischen Systemen und unkomplexen Szenen OpenGL eindeutig vorne... bei komplexen, ja gut... da müssenj beide auf das gleiche System zurück greifen.

@OOP: Erfahrungsgemäß gibt es kaum einen Programmierer der OOP richtig einsetzt, die meisten führen mehr oder minder eine Vergewaltigung dieser Technik durch und nutzen Objekte als unverseller Variablen und Funktions-Kontainer ;) Kann sein, dass ich im falschen Bereich tätig bin, aber oftmals bekomme ich mehr das lachen, wenn ich den Code von angeblichen OOP zu sehen bekomme (und ich schließe meinen da nichtmal aus :twisted: )

Um noch einen draufzusetzen bei der Geschmacksfragte zwischen D3D und OpenGL ... 8) *fackel.such.für.flächenbrand* "Wer unterstützt MS bei seinem TCPA-Plan? OpenGL oder Direct3D" :twisted: :wink:

Ce ;)
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 13.03.03 00:28 
also man sollten sich für sein problem das beste herraussuchen, für das eine ist OpenGl besser für das andren DirecX beide haben vor und nachteile meines wissens....

_________________
MFG
Michael Springwald, "kann kein englisch...."
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Do 13.03.03 00:42 
Ich würde sogar einen Schritt weitergehen und behaupten, dass beide Sprachen keine Vor- oder Nachteile haben. Nehmen wir ne Hähnchen, steckt der eine es im Topf, der andere aufm Grill, der andere in die Pfanne... satt werden alle drei, gesünder wird nichts sein und die Grundsubstanz ist auch die gleiche... Geschmacksfrage eben ^__-
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Do 13.03.03 11:58 
Zitat:

"Wer unterstützt MS bei seinem TCPA-Plan? OpenGL oder Direct3D"

Ehrlich gesagt, mir ist Palladium, wie es momentan offenbar geplant ist (Koexistenz von TCPA- und Nicht-TCPA-Anwendungen, letztere dürfen nur auf Sicherheitsfunktionen nicht zugreifen) wesentlich lieber als die von Intel initiierte Version (Bei Start einer Nicht-TCPA-Anwendung stürzen alle TCPA-Anwendungen ab) - davon abgesehen ist Microsoft ausnahmsweise mal nicht die treibende Kraft hinter TCPA. Aber ich gehöre sowieso nicht zum Club der notorischen Microsoft-Hasser ;c)

Der Vergleich mit dem Hähnchen bringt's aber relativ gut auf den Punkt, sowohl für DirectX / OpenGL als auch für die Sprachen und Betriebssysteme.

Übrigens GIBT es Matrix-Stacks bei Direct3D (ID3DXMatrixStack), der sogar so ähnlich wie das System in OpenGL funktioniert - das ist also kein Grund, D3D nicht zu verwenden ;c)
Und für Hierarchien gibt es die SkinnedMesh-Unterstützung, auch wenn die vielleicht nicht der Weisheit letzter Schluss ist.

Von wegen OOP:
"Nur C++ zu benutzen heißt nicht automatisch, objektorientiert zu programmieren."
Natürlich gibt es viele armselige Programmierer, aber dann ist es schwierig, die Grenze zu definieren. Bin ich OOPler, wenn ich Polymorphismus verwende (genauer: ausnutze)? Bin ich kein OOPler, weil ich anstatt mir einen Kopierkonstruktor für eine struct zu schreiben, memcpy() verwende? Jetzt mal abgesehen davon, dass ein Kopierkonstruktor automatisch erzeugt wird, auch wenn der nicht kategorisch das beste Ergebnis liefert. Bin ich kein OOPler, wenn ich direkt auf public member zugreife, anstatt Set/Get-Funktionen dafür zu schreiben?

Ich verwende lieber sprintf als den string-Typ, weil's schneller geht und vor allem mit Resourcen-Strings einfacher zu verwenden ist. Ich schreibe nur Set/Get-Funktionen, wenn ich es unbedingt für nötig halte, wenn's geht kann man natürlich die Member dennoch nicht von außen verwenden. Ich verwende die prozedurale Windows-API, weil es keine objektorientierte Windows-API gibt. Und trotzdem behaupte ich (und ich hoffe du würdest über meinen Code nicht lachen (C; ), dass ich objektorientiert programmiere.

Aber ob das alles Jetro bei seinen Entscheidungen hilft? ;c)

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 13.03.03 15:12 
OregonGhost hat folgendes geschrieben:

davon abgesehen ist Microsoft ausnahmsweise mal nicht die treibende Kraft hinter TCPA

wer ist denn die treibende Kraft von TCPA ?

also ich würde sagen, das er sich über beide themen informieren sollte(also per google im internet nach infos suchen) und dann entscheidet er sich. Wir können ja nicht sagen, du solltes das nehmen, weil ......

Moderiert von user profile iconMarc: Quote-Tag korrigiert.

_________________
MFG
Michael Springwald, "kann kein englisch...."