Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Funtionsweise Grafikkarte Monitor (https://www.delphipraxis.net/91849-funtionsweise-grafikkarte-monitor.html)

steppo 10. Mai 2007 21:13


Funtionsweise Grafikkarte Monitor
 
Hallo Leute,

kann mir jemand erklären, wie die Bilder in einer Grafikkarte vorgehalten werden, bevor sie an den Monitor gesendet werden.

Meine Vorstellung ist diese.
Bei einer Bildschirmwiederholfrequenz von 60 Hz wird der Monitor 60 mal pro sekunde aktualisiert. Das Bild kann sich aber in dieser Zeit aendern. Also müssten die anzuzeigenden Bilder irgendwo gespeichert werden, bevor sie von der Grafikkarte zur Darstellung an den Monitor gesendet werden.

Also praktisch wie ein Film.
60 Bilder die nacheinander angezeigt werden.

Ist diese Vorstellung richtig.

Gruß Steppo

mkinzler 10. Mai 2007 21:16

Re: Funtionsweise Netzwerkkarte Monitor
 
Grunsätzlich ja, im Bildspeicher auch Framebuffer genannt

scrat1979 10. Mai 2007 21:18

Re: Funtionsweise Netzwerkkarte Monitor
 
Hallo!

Was hat denn diese Frage bitte mit einer Netzwerkkarte zu tun (s. Thread-Titel) ?!?!?! :gruebel:

Eventuell wäre es nicht schlecht wenn Du noch sagen möchtest was das für Konsequenzen für Dich haben sollte? Was hast Du vor?

Liebe Grüsse,

SCRaT

[edit]
Ok, Titel wurde korrigiert. Hätte mich ja auch gewundert :lol:
[/edit]

steppo 10. Mai 2007 21:25

Re: Funtionsweise Grafikkarte Monitor
 
Entschuldige bitte, ich meinte natürlich Grafikkarte. Werde es sofort ändern!

Mein Ziel wäre es dann den Framebuffer auszulesen, das heißt mir jedes Bild einzeln anzusehen, wenn dies möglich ist!

Und damit komme ich zu meiner nächsten Frage. Ich gehe davon aus, dass ich auf die Grafikkarte direkt zugreifen muß, um den Framebuffer auszulesen. Das heißt, es gibt keine Möglichkeit von Delphi aus dieses Vorhaben zu realisieren.

Ist diese Annahme richtig?

Wie frage ich den Framebuffer ab?

Gruß Steppo

xaromz 10. Mai 2007 21:36

Re: Funtionsweise Grafikkarte Monitor
 
Hallo,
Zitat:

Zitat von steppo
Und damit komme ich zu meiner nächsten Frage. Ich gehe davon aus, dass ich auf die Grafikkarte direkt zugreifen muß, um den Framebuffer auszulesen. Das heißt, es gibt keine Möglichkeit von Delphi aus dieses Vorhaben zu realisieren.

Ist diese Annahme richtig?

Ja.

Zitat:

Zitat von steppo
Wie frage ich den Framebuffer ab?

Da Du dafür einen direkten Zugriff auf die Hardware benötigst, geht das (unter Windows) nur mit einem Treiber.

Gruß
xaromz

Muetze1 10. Mai 2007 21:40

Re: Funtionsweise Grafikkarte Monitor
 
Zitat:

Zitat von steppo
Mein Ziel wäre es dann den Framebuffer auszulesen, das heißt mir jedes Bild einzeln anzusehen, wenn dies möglich ist!

Es gibt nur ein Bild. Die Änderungen werden entsprechend in diesem Bild vorgenommen. Davon unabhängig arbeit ein D/A Wandler (RAMDAC) mit einer Frequenz (abhängig von Auflösung, Bildwiederholfrequenz, etc) daran ständig die analogen (bzw. digitalen) Signale aus den im Framebuffer abgelegten RGB Informationen zu erstellen. Dabei geht er immer wieder den FrameBuffer durch und baut ein Bild, Pixel für Pixel, Zeile für Zeile, Bild für Bild. Somit werden irgendwelche Änderungen entsprechend sofort übernommen. Da man nicht für 1/60'stel Sekunden oben ein altes Bild siehst und unten ein neues Bild (wenn dein Auge so schnell ist und du das so schnell verarbeiten könntest), verwenden viele Grafikausgaben eine Synchronisation mit der Grafikkarte, weil ein Update des Bildspeichers kann beim Zeilenstrahlrücklauf geschehen (wenn der Kathodenstrahl deiner Bildschirmröhre vom unten rechten Pixel zum oberen linken zurück läuft) und man sieht es nicht.

Aber soviel erstmal kurz angerissen quer durch Theorie und Praxis zum Verständnis...

steppo 10. Mai 2007 21:49

Re: Funtionsweise Grafikkarte Monitor
 
Das heißt, dass die Ausgabe des Bildes eigentlich bis zur entgültigen Aktualisierung eine Mischung aus dem alten, dem neuen und den dazwischenliegenden Aktualisierungen ist, die aber durch die Trägheit des Auges nicht wahrgenommen werden.

Habe ich dich richtig verstanden?

Muetze1 10. Mai 2007 21:59

Re: Funtionsweise Grafikkarte Monitor
 
Sozusagen, ja. So als wenn du immer wieder eine Seite liest, wo aber zwischendurch andere rumradieren und rumschreiben. Alles auf ein und demselben Blatt Papier. Und liest immer von oben nach unten das Blatt durch. Dabei siehst du aber immer nur den einen Buchstaben den du gerade liest. Alles andere ist dunkel. Wenn du das nun 60 mal pro Sekunde schaffst, ergibt sich bei dir im Kopf (falls alle mal ein paar Sekunden Pause machen, da der PC auch nicht jede 1/60'tel Sekunde alles komplett ändert) der Text, bzw. die Buchstaben die am längsten stehen bleiben am ehsten hängen.

Bei Röhrenmonitoren ist es so, dass der Elektronenstrahl vorne Leuchtpunkte anregt zu leuchten die dann aber auch wieder dunkler werden. Von daher wandert der Strahl immer wieder über das Bild - von daher kommt auch das flimmern (Änderung Hell <-> Dunkel). Das Auge bekommt 60Hz noch recht gut mit, von daher ist ein ergonomisches Arbeiten vor allem erst ab min. 75 Hz möglich, weil dort dann das Auge diesen ständigen Neuaufbau (Flimmern) nicht mehr aktiv mitbekommt und es dadurch als stehendes Bild vorkommt. Bei 100Hz ist es dann schon richtig angenehm, weil dort die Punkte noch nicht wirklich merkbar dunkler werden, bevor sie wieder von diesem Elektronenstrahl "angeregt" werden zu leuchten. Bei TFT/LCD ist das was anderes, weil dort leuchten die Punkte ständig und werden nicht dunkler. Von daher ist es ein "stehendes" Bild was am angenehmsten für die Augen ist.

SirTwist 10. Mai 2007 22:02

Re: Funtionsweise Grafikkarte Monitor
 
Deine Grafikkarte hat einen Bildspeicher. In diesem Speicher liegen je Bildpunkt drei Bytes, die die Helligkeit der drei Grundfarben Rot, Grpün und Blau angeben. Über verschiedene Timer gesteuert liest die Grafikkarte diesen Bildspeicher aus und wandelt die drei Bytewerte in Spannungen um, die dann als RGB-Signal an den Monitor ausgegeben werden.
(Disclaimer: Vereinfacht ausgedrückt. Gilt z.B. nur für VGA-Anschlüsse, bei DVI-D-Anschlüssen läuft das anders, aber eigentlich ähnlich. Es gibt auch PCs ohne eigenen Grafikkartenspeicher, da wird vom Hauptspeicher was abgezwackt. Es können auch mehr oder weniger Bytes pro Bildpunkt genutzt werden, aber nuja...)

Wenn ein Programm jetzt einfach so in den Bildspeicher reinzeichnet, kann es passieren, dass du für eine 60tel Sekunde nur eine halbe Zeichnung siehst, z.B. die untere Hälfte, weil das Zeichnen genau in dem Zeitpunkt stattgefunden hat, als die Grafikkarte die 200. Bildschirmzeile ausgegeben hat.

Deshalb zeichnet man oft im Hintergrund in einen anderen (unsichtbaren) Speicherbereich und schaltet in der sogenannten Abtastlücke die Speicherbereiche um. Das ist genau der Zeitpunkt, wenn die Grafikkarte mit einem Bild fertig ist und sich darauf vorbereitet, das Bild wieder neu auszugegeben. Dabei gibt es zwei Möglichkeiten (ich weiß aber nicht, ob heutzutage beide noch genutzt werden): Erstens kann man der Grafikkarte sagen, sie soll jetzt einen anderen Speicherbereich für das ganze Bild benutzen, oder man kopiert blitzschnell die (im Hintergrund liegende) Zeichnung in den eigentlichen Bildspeicher.

Ich hoffe, das hilft ein wenig fürs Verständnis...

steppo 10. Mai 2007 22:17

Re: Funtionsweise Grafikkarte Monitor
 
Danke SirTwist,

obwohl deine Aussage der von Muetze1 widerspricht. Laut Muetze1 findet ständig eine Aktualisierung statt!
(Das habe ich doch richtig verstanden, oder?)

Kann man diese Abtastlücke ermitteln und sich dann dieses (vollständige) Bild anzeigen lassen, bzw. die Änderungen, so gering sie auch sein mögen visualisieren, also als Bild speichern?

Auch das kopierte Bild einfügen hört sich recht interessant an! Welches Format muß dieses Bild haben und wie wird es in den Buffer kopiert?

Gruß Steppo


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Seite 1 von 3  1 23      

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