Einzelnen Beitrag anzeigen

Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#2

Re: Grafische Schnittstellen / Canvas

  Alt 9. Okt 2008, 17:51
Naja, so ganz einfach lässt sich das nicht vergleichen. Canvas kann z.B. nur zweidimensional zeichen, OpenGL dreidimensional. Das ist schon mal ein riesiger Unterschied wudurch die Komplexität enorm steigt.

Also im allgemeinen ist es bei Spielen (die die Hardwarebeschleunigung der Grafikkarte benutzen) so, dass du auch - wie bei deinem Rechteck - Koordinaten an die Grafikkarte sendest. Die Grafikkarte verarbeitet dann die einzelnen Punkte, indem sie die Farbwerte setzt, Texturen draufklebt, Tiefenwerte berechnet usw.

Zitat von Jeff93:
wenn ich zum Beispiele ein Quadrat auf meiner Form ausgeben will, benutze ich Canvas. Nun frage mich, wie es Spiele dies meistern? Als konkret, wenn in einem Spiel ein Charakter abgebildet wird der sich bewegt, ist dies die gleiche "Vorgehensweise" wie wenn ich Bilder mit Canvas zeichne?
Das kann man nicht so einfach beantworten. Komplexe Objekte bestehen aus vielen Dreiecken mit unterschiedlichen Texturen bzw. Texturabschnitten. Alle Dreiecke zusammen ergeben dann das Objekt. Es gibt aber natürlich auch andere Möglichkeiten - z.B. ein einfaches Bild. Jedoch hat ein Bild keine Tiefenwerte (jedenfalls das Haus-und-Hof-Jpeg, Png, Bitmap ... nicht). Somit hast du dann kein dreidimensionales Objekt sondern einfach nur ein Bild - wie bei Canvas auch.

Zitat von Jeff93:
Ist OpenGl das Gleiche als Canvas nur im grossen?
Ein klares Jein.

* Ja weil man damit "Bilder" auf dem Bildschirm ausgeben kann und man manche Sachen in OpenGL fast genauso machst wie mit Canvas [bzw. kaum Umdenkarbeit nötig ist] (es gibt bestimmt noch ein paar mehr, jedoch fällt mir gerade kein Grund mehr ein)

* nein: ganz viele Gründe: die Möglichkeiten sind mit OpenGL extrem viel größer als mit der GDI, OpenGL ist viel komplexer, OpenGL ist hardwarebeschleunigt -> extrem schnell, in OpenGL machst du viel mit Matrizen rum, das wirst du in der GDI nirgends finden, in OpenGL gibt es keine "Komfortmethoden" wie z.B. "Ellipse()", ....
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat