Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Grafische Schnittstellen / Canvas (https://www.delphipraxis.net/122111-grafische-schnittstellen-canvas.html)

Jeff93 9. Okt 2008 16:57


Grafische Schnittstellen / Canvas
 
Hallo,

ich habe eine Frage zur Grafikprogrammierung,

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?
Canvas tut ja nichts anderes als die Befehle z. Bsp ein Rechteck oder der gleichen in Pixel zu übersetzen und auf dem Desktop auszugeben, oder?
Ist OpenGl das Gleiche als Canvas nur im grossen?

Würde gerne verstehen wie das funktioniert!

Freue mich auf eure Antworten! Mfg, Jeff93

littleDave 9. Okt 2008 17:51

Re: Grafische Schnittstellen / Canvas
 
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:

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:

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()", ....

Jeff93 9. Okt 2008 20:39

Re: Grafische Schnittstellen / Canvas
 
Danke für deine Erklärung :thumb:

Das heisst das sowohl bei Canvas und bei OpenGl Befehle an die Grafikkarte gesendet werden, nur eben bei OpenGl dreidimensional?
Unter welchem Stichwort finde ich etwas wie man den Grafikkarten Befehle zusendet(Ganz generell, muss nicht in Delphi sein, mich interessiert nur das Prinzip)

Dunkel 9. Okt 2008 20:49

Re: Grafische Schnittstellen / Canvas
 
Zitat:

Zitat von Jeff93
Das heisst das sowohl bei Canvas und bei OpenGl Befehle an die Grafikkarte gesendet werden, nur eben bei OpenGl dreidimensional?

Nein! Mit Canvas schickst Du "Befehle" an Windows, mit OpenGL & DirectX an den Treiber, indirekt an die Grafikkarte.

Zitat:

Zitat von Jeff93
Unter welchem Stichwort finde ich etwas wie man den Grafikkarten Befehle zusendet(Ganz generell, muss nicht in Delphi sein, mich interessiert nur das Prinzip)

Lass das bleiben!
Erstens kommuniziert Dein Programm eh nur mit Windows / einem Treiber. Zweitens sind die 3D-Schnittstellen OpenGL und DirectX standardisiert und sollten benutzt werden. Wofür Du Dich entscheidest ist zuerstmal egal. OpenGL ist nahezu plattformunabhängig, DirectX ist auf jedem modernen Windows Rechner vorhanden. Entscheide Dich für eins.

Jeff93 10. Okt 2008 16:23

Re: Grafische Schnittstellen / Canvas
 
Danke für deinen Post!
Zitat:

Zitat von Dunkel
Lass das bleiben!
Erstens kommuniziert Dein Programm eh nur mit Windows / einem Treiber. Zweitens sind die 3D-Schnittstellen OpenGL und DirectX standardisiert und sollten benutzt werden. Wofür Du Dich entscheidest ist zuerstmal egal. OpenGL ist nahezu plattformunabhängig, DirectX ist auf jedem modernen Windows Rechner vorhanden. Entscheide Dich für eins.

Hatte sowieso eigentlich nichts damit vor, wollte nur verstehen wie Canvas, OpenGl und Spiele ihre Grafiken ausgeben.

Danke für eure Antworten, mfg Jeff93


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz