AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Grafische Schnittstellen / Canvas
Thema durchsuchen
Ansicht
Themen-Optionen

Grafische Schnittstellen / Canvas

Ein Thema von Jeff93 · begonnen am 9. Okt 2008 · letzter Beitrag vom 10. Okt 2008
Antwort Antwort
Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#1

Grafische Schnittstellen / Canvas

  Alt 9. Okt 2008, 16:57
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
  Mit Zitat antworten Zitat
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
Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Grafische Schnittstellen / Canvas

  Alt 9. Okt 2008, 20:39
Danke für deine Erklärung

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)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Grafische Schnittstellen / Canvas

  Alt 9. Okt 2008, 20:49
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 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.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Jeff93

Registriert seit: 25. Mär 2008
Ort: Luxemburg
58 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Grafische Schnittstellen / Canvas

  Alt 10. Okt 2008, 16:23
Danke für deinen Post!
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 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