Delphi-PRAXiS

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

Muetze1 10. Mai 2007 22:46

Re: Funtionsweise Grafikkarte Monitor
 
Zitat:

Zitat von steppo
obwohl deine Aussage der von Muetze1 widerspricht. Laut Muetze1 findet ständig eine Aktualisierung statt!

Nein, tut sie nicht - wo denn? Diese Signalerzeugung geschieht ständig, weil wenn diese nicht mehr statt finden würde, dann hättest du kein Bild. Der Elektronenstrahl des Monitors rennt die ganze Zeit über den Bildschirm und wenn nicht passend zeitlich die Farbsignale durch die Grafikkarte anhand der Daten in ihrem Speicher generiert werden, dann siehst du nichts ausser einem schwarzen Bild. Von daher muss das ständig geschehen. Er hat nie gesagt, dass dies einmalig geschieht (
Zitat:

Zitat von SirTwist
Über verschiedene Timer gesteuert...

).

Zitat:

Zitat von steppo
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?

Diese kann man in einem Register der Grafikkarte abfragen. Aber ich frage mich, ob du wirklich die 60 Bilder pro Sekunde brauchst? Schliesslich sind das bei einer Auflösung von 1280x1024 in 32-Bit Farbtiefe in einer Sekunde 314572800 Bytes Daten. Also glatte 300 MByte...

Zitat:

Zitat von steppo
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?

Das Bild sollte das gleiche Format und Auflösung haben wie die Hardwareauflösung für den Bildschirm, damit nichts umgewandelt werden muss beim umkopieren und somit nur ein reiner Datentransfer stattfinden muss, oder nur der Graka eine andere Speicheradresse zum Auslesen gegeben werden muss.

Grundlegend ist das Problem: Unter Windows (wie oben schon erwähnt von xaromz) ist den Applikationen der direkte Zugriff auf die Hardware verboten. Von daher brauchst du einen Treiber.

Aber bevor wir hier lange rätseln - worum geht es überhaupt? Was willst du im Endeffekt erreichen? Vielleicht gibt es auch einen anderen Weg bzw. bietet dir Windows eine Schnittstelle zur Lösung deines Problems an.

steppo 10. Mai 2007 23:15

Re: Funtionsweise Grafikkarte Monitor
 
ok. Habe ich falsch verstanden. Das "Ständig" bezieht sich auf die Signalerzeugung bzw auf den Elektronenstrahl.

Ich wollte erst einmal die Funktionsweise zwischen Grafikkarte und Monitor verstehen.

Es ist mir nun ein klein wenig klarer geworden.

Ich bedanke mich für eure Mühe und wünsche euch ein gute Nacht.

Eine Letzte Frage:

Wenn ihr von Treiber sprecht, meint ihr sicherlich den Grafikkartentreiber.

Eine Grafikkarte kann man doch auch über OpenGL oder DirectX ansteuern, oder?

Noch einmal recht herzlichen Dank!

Gruß Steppo

WS1976 11. Mai 2007 06:50

Re: Funtionsweise Grafikkarte Monitor
 
Hallo Leute,

manchmal ziehts einen schon die Hosen aus, wenn man liest was hier für ein Quatsch geschrieben wird.

Es gibt in der Grafikkarte nur ein abgelegtes Bild zur Darstellung auf dem Bildschirm. Das Bild ist je nach Farbtiefe grösser oder kleiner.
Das Bild auf dem Bildschirm entsteht durch abtasten dieses Speichers, entweder interleased 25 mal (Bildwiederholfrequenz/2) oder noninterleased 50 mal (Bildwiederholfrequenz) pro Sekunde.
Im interleased Mode wird nur jede 2. Zeile geschrieben, also ein Halbbild beim noninterleased Mode wird jedes Bild voll geschrieben.

So, das ist das eine. Eine andere Sache ist die Grafikbeschleunigung oder andere Grafikprozessorfeaters. Dort können Teile des Bildes eventuell nocheinmal abliegen. Das hat aber absolut nichts mit der Bildwiederholfrequenz und dem Ausgabespeicher der Grafikkarte zu tun!

Zitat:

Framebuffer (Wikipedia)
Der Bildspeicher bzw. Framebuffer (engl. frame – Rahmen, buffer – Puffer) ist Teil des Video-RAM von Computern und entspricht einer digitalen Kopie des Monitorbildes. Das heißt, jedem Bildschirmpixel kann genau ein bestimmter Bereich des Framebuffers zugewiesen werden, der dessen digital übersetzten Farbwert enthält. Seit den 90er-Jahren befindet sich der Framebuffer vorwiegend auf der Grafikkarte.
Grüsse

xaromz 11. Mai 2007 08:08

Re: Funtionsweise Grafikkarte Monitor
 
Hallo,
Zitat:

Zitat von WS1976
manchmal ziehts einen schon die Hosen aus, wenn man liest was hier für ein Quatsch geschrieben wird.

Stimmt.
Zitat:

Zitat von WS1976
Das Bild auf dem Bildschirm entsteht durch abtasten dieses Speichers, entweder interleased 25 mal (Bildwiederholfrequenz/2) oder noninterleased 50 mal (Bildwiederholfrequenz) pro Sekunde.
Im interleased Mode wird nur jede 2. Zeile geschrieben, also ein Halbbild beim noninterleased Mode wird jedes Bild voll geschrieben.

Wenn Du die Frequenzangaben weggelassen hättest (wir reden hier nicht vom Fernseher) und außerdem "interlaced" geschrieben hättest...

Zitat:

Zitat von WS1976
So, das ist das eine. Eine andere Sache ist die Grafikbeschleunigung oder andere Grafikprozessorfeaters. Dort können Teile des Bildes eventuell nocheinmal abliegen. Das hat aber absolut nichts mit der Bildwiederholfrequenz und dem Ausgabespeicher der Grafikkarte zu tun!

Wieso hat ein Featrue wie Bankswitching nichts mit dem Ausgabespeicher der Graphikkarte zu tun? Vor über 15 Jahren habe ich Seitenumschaltung verwendet, um ein flüssiges Bild zu erzeugen. Je nach Anzahl der Puffer hat man dabei mindestens zwei komplette Bilder im Graphikkartenspeicher. Das sind zwei Framebuffer. Es ist eben nur einer gerade "aktiv", d. h. auf dem Bildschirm zu sehen.

Übrigens: Das Zitieren der Wikipedia taugt nicht als Argument. Da steht viel Blödsinn drin.

Gruß
xaromz

Muetze1 11. Mai 2007 08:58

Re: Funtionsweise Grafikkarte Monitor
 
Zitat:

Zitat von WS1976
Es gibt in der Grafikkarte nur ein abgelegtes Bild zur Darstellung auf dem Bildschirm.

Im Normalfall. Es gibt genug Programmiertechniken um flüssige Bewegungen hinzubekommen. Bei der Bankswitching Methode wird dem Grafikcontroller per Register einfach nur mitgeteilt, dass sich das Bild (welches er zur Bilderzeugung nutzen soll) an einer anderen Adresse in seinem RAM befindet (Heissen tut es Bankswitching, da der Grafikchip sich sein RAM in Speicherbereichen einteilt. Dieses Verfahren wurde über VESA ein einheitliches Interface gegeben und dort immer als "Bank" bzw. "Bankswitching" bezeichnet). Damit hat man 2 Bilder im GrafikRAM wovon eins sichtbar (zur Darstellung genutzt wird) ist und das andere wird dann aktualisiert. Eine andere Möglichkeit setzt nicht per Register die Adresse um, sondern kopiert in der Abtastlücke einfach per BitBlt (von GrafikRAM) oder DMA (vom Hauptspeicher) ein komplettes Bild (Bzw. Teilbild ist hier möglich) in den zur Ausgabe genutzten Grafikspeicher.

Von daher kann man sagen, dass die Graka zur Bilderzeugung immer nur ein Bild nutzt, klar - geht auch nicht anders. Dass es aber mehr als ein abgelegtes Bild gibt ist ganz von der Programmiertechnik abhängig. Es gibt auch noch genug andere Verfahren die genutzt wurden.

Zitat:

Zitat von WS1976
Das Bild auf dem Bildschirm entsteht durch abtasten dieses Speichers, entweder interleased 25 mal (Bildwiederholfrequenz/2) oder noninterleased 50 mal (Bildwiederholfrequenz) pro Sekunde.
Im interleased Mode wird nur jede 2. Zeile geschrieben, also ein Halbbild beim noninterleased Mode wird jedes Bild voll geschrieben.

Ich wollte es nicht noch komplizierter machen als es schon erklärt wurde und bin vom Idealfall des non-interlaced Modus ausgegangen, alles andere hätte das nur verkompliziert.

Zitat:

Zitat von WS1976
So, das ist das eine. Eine andere Sache ist die Grafikbeschleunigung oder andere Grafikprozessorfeaters. Dort können Teile des Bildes eventuell nocheinmal abliegen. Das hat aber absolut nichts mit der Bildwiederholfrequenz und dem Ausgabespeicher der Grafikkarte zu tun!

Wo wurde denn so ein Zusammenhang behauptet bzw. geschrieben?

SirTwist 11. Mai 2007 15:50

Re: Funtionsweise Grafikkarte Monitor
 
steppo: Was genau möchtest Du eigentlich machen? Das würde uns weiterhelfen, Deine Fragen besser zu beantworten.

ach... und vergiss besser, was WS1976 geschrieben hat ;-)

WS1976 13. Mai 2007 10:15

Re: Funtionsweise Grafikkarte Monitor
 
Hallo Xaromz,

1.) gibts bei dir keine Rechschreibfehler? Keep low!
2.) die Rede war von Bildwiederholfrequenz, Bildwiederholfrequenz/2! Lies also erstmal und schreibe dann!

Wenn ihr meinen Beitrag komplett gelesen hättet dann wäre euch wohl aufgefallen, das es mir im wesentlichemn darauf ankam mit dem Quatsch aufzuräumen, dass das Bild 60 mal oder ( für Schlaumeier wie Xaromz ) so oft im Bildspeicher liegt wie die Bildwiederholfrequenz.

viele liebe Grüsse

WS1976 13. Mai 2007 10:18

Re: Funtionsweise Grafikkarte Monitor
 
Hallo Sir Twist,

weisst dus besser, dann erklärs uns.

SirTwist 13. Mai 2007 11:16

Re: Funtionsweise Grafikkarte Monitor
 
Zitat:

Zitat von WS1976
Quatsch aufzuräumen, dass das Bild 60 mal oder ( für Schlaumeier wie Xaromz ) so oft im Bildspeicher liegt wie die Bildwiederholfrequenz.

Ganz offensichtlich bist Du der Einzige, der diesen "Quatsch" irgendwo gelesen haben will. Es wäre schön, wenn Du Deinen Ton etwas zügeln könntest, z.B. unsere Erklärungsversuche als Hosenauszieher zu titulieren oder Xaromz gleich an den Pranger zu stellen (ja, er hatte genausoviele Buchstabendreher in seinem Posting wie Du sachliche Fehler, so what?).

Warten wir doch einfach mal, ob sich steppo nochmal meldet und uns verrät, was er eigentlich machen möchte...

WS1976 13. Mai 2007 13:14

Re: Funtionsweise Grafikkarte Monitor
 
Hallo Sir Twist,

Lies doch einfach nur die Beiträge am Anfang durch (auch was den Ton betrifft). Wenn ich das nicht total missverstanden habe will der Kollege der Reihe nach an die x Bilder pro Sekunde kommen und diese einlesen.
Dass die irgendwo getrennt abliegen ist und bleibt Unfug.

Noch eine Bemerkung:
Wenn sich jemand durch mich angegriffen fühlt soll er sich bei mir melden. Wir klären das dann.
Wir brauchen bestimmt keine Einmischung durch Dritte (hier sind die Admins eine Ausnahme)!

Grüsse

Muetze1 13. Mai 2007 19:49

Re: Funtionsweise Grafikkarte Monitor
 
Zitat:

Zitat von WS1976
..., dass das Bild 60 mal oder ( für Schlaumeier wie Xaromz ) so oft im Bildspeicher liegt wie die Bildwiederholfrequenz.

Das war die Vorstellung des Threaderstellers und das haben doch bisher alle Poster entsprechend anders erklärt. Ich weiss nicht wo du den anderen Postern (da du nicht den Threadersteller ansprichst) (so auch mich) eine Bestätigung in dieser Aussage gesehen hast.

Zitat:

Zitat von WS1976
Dass die irgendwo getrennt abliegen ist und bleibt Unfug.

Wie gesagt, habe ich bis auf die Ausgangsfrage nirgendwo gesehen dass dies irgendwer behauptet hat. Es wurde statt dessen immer wieder anders geklärt.

WS1976 14. Mai 2007 05:18

Re: Funtionsweise Grafikkarte Monitor
 
OK,

ihr habt Recht und ich meine Ruhe.
Bitte keine Antworten mehr auf meine Beiträge (in diesem Thread)

Grüsse

negaH 14. Mai 2007 10:07

Re: Funtionsweise Grafikkarte Monitor
 
Am bestens wird es sein die geschichtliche Entwicklung der Grafikkarten zu betrachten, dann wird vieles klarer. Heutige Grafikkarten sind Hochleitsungsmaschinen die in bestimmten Punkten mehr Power haben können als die CPU des Rechners selber. Das begründet dann auch den fakt das es eben keine einfache und universelle Erklärung geben kann wie heutige Grafikkarten das Bild real erzeugen !

Als erstes gab es die Monochromen Grafikkarten. Sie bestanden aus 2 Bildschirmspeichern (virtuell betrachtet). Dem eigentlichen Bildschirmspeicher und einen Zeichnensatzspeicher (Font). Im Bildschirmspeicher standen überlicherweise 80x25 Bytes -> pro Speicherstelle 1 Byte ASCII also der Buchstabe den man darstellen will. Also 80 Buchstaben pro Zeile und 25 Zeilen. Die Grafikkarte liest nun mit der Zeilenfrequenz diese Bytes aus. Das wird als Index benutzt um aus der Fonttabelle die Pixel des Zeichens zu aktuellen Zeile zu dekodieren. Das waren 9 Pixel -> 8 Pixel fürs Zeichen und 1 Pixel als Lücke. Diese 9 Pixel wurden dann im Pixeltakt gesetzt.

Man benötigte also 80x25+256x12 Bytes an Speicher, sehr wenig also.

Weiter ging es mit Farbgrafikkarten. Dort wurde der Bildschiemspeicher quasi verdoppelt und zu jedem ASCII Code noch 1 Byte an Farbinformation gespeichert. Diese Byte besteht aus 2 Nibbles = 4Bit und diese beschreiben die Hinter- und Vodergrundfarbe des Zeichens das dargestellt werden soll. Das ergibt also 16 Farben -> EGA.

VGA Karten stellten dann einen "Quantensprung" dar, konnte man ihnen doch
1.) echte Grafiken=Bitmaps darstellen
2.) mehr als nur 16 Farben darstellen (anfangs 256)
3.) größere Auflösungen erreichen
4.) hatte mehr Grafikspeicher zur Verfügung als für den aktuellen Modus nötig wären

Punkt 4.) führte dann dazu das man diesen Speicher virtuell in Bänke einteilen konnte und der Karte dann einfach die Addresse des Speichers mitteilte an dem das aktuelle Bild liegt, das sogennate Bankswitching. So konnt man 2 bis zu 8 Bilder im Speicher halten, sie reiherhum neu berechnen und immer nur eine dieser Bänke anzeigen. Ziel dabei ist es die Darstellung auf dem Monitor flickerfrei zu machen. Denn auch bei 60Hz Bildwiederholrate kann man die Aktualisierung des Bildschirmspeichers als Flicker beobachten. Das fällt umsomehr auf je häufiger das Speil zb. seinen Darstellung auffrischt/neu berechnet. ALso bei schnellen Games wir Arkanoid war dies schon sichtbar.
Ein weitere Vorteil dieses größeren Speichers war es das man nun Scrollen konnte. Statt also nur ein Bankstiching zu machen konnt man über den vorher erzeugten Bildspeicher/Darstellung nach oben/unten scrollen. Ebenfalls bei Arkanoid sehr schön umgesetzt.

Nachfolgende Karten verfolgten nun das Ziel immer mehr Speicher in immer höhren Grafikauflösungen mit immer mehr Farbe darzustellen. Man erkannt schnell eine Grenze in der Leistungsfähigkeit der CPU des Rechners. Diese war immer mehr damit beschäftigt ihre Grafiken zu berechnen. Folge davon ist logischerweise das die Grafikkarte einiges dieser Arbeit der CPU abnehmen sollte. Die Grafikarte wurde intelligent. Das fing damit an als Grafische Betriebsysteme den Markt eroberten, bzw. leicht vorher mit den professionellen Spielkonsolen. Man entwickelte Hardware-Sprite-Unterstützung. Das sind separate Speicherbereiche die die Animation einer Spielfigur enthalten. Die Garfikkarte kennt die Dimension und Anzahl der Frames dieser Sprites und stellt an vorprogrammierten Koordinaten auf dem Bildschirm diese Sprites selbständig dar. Die Overlay Technik war geboren. Overlays sind Speicherbe3reich die die Grafikarte selbständig über den normalen Bildschirminhalt einblendet. Zb. alle heutigen AVI/MPEG Player arbeiten mit solchen Overlays. Ein angezeigtes Bild auf dem Monitor bestand also eben nicht mehr aus nur einem zusammenhängendem Bildschirmspeicher sondern nunmehr aus vielen solcher Overlays die die Grafikkarte dynamisch selbständig anzeigte.

Die logsche Weierentwicklung war es nun die Grafische Verküpfungen zwischen einzelnen Overlays ebenfalls der GraKa zu überlassen. Bestes Beispiel ist der Schatten untern Mauscursor. Auch dies macht eine heutige Grafikkarte und nicht mehr die CPU.

Der letzte Schritt könnte man als Vektor-Grafikkarten bezeichnen. Statt also mit Bitmaps, durch die CPU erzeugt, die GraKa zu füttern, werden ganze 2 dimensionelle Szenen als Vektoren mit Beleuchtung/Bewegungsvektroren/Schatten und Oberflächenstrukturen der GraKa übergeben. Diese baut dann live, in dem sie mit einem Hochleistungsprozessor diese Szene berechnet, das Bild zusammen.
Es gibt also den Bildschirmspeicher wie ürsprünglich garnicht mehr.

Das zur Grafikkarte nun zu den Monitoren:
Früher war das alles analog. Als erstes nun ein Schwarz/Weiß Monitor, auch monochrom genannt. Der Monitor benötigte im Grunde nur 3 Signale -> H-Sync, V-Sync und "Pixel". H und V Sync sind die Signale die den Elektronenstrahl in der Röhre von oben nach unten und von links nach rechts bewegen. Pixel bestimmte ob nun der Bildpunkt hell oder dunkel war.

Mit Farbe musst sich auch hier was ändern. Es gab nun 3 Farbsignal, analog für Rot/Grün/Blau. Der Spannungspegel dieser Leitungen bestimmmte die Helligkeit der einzelnen Farbe. Das bedeutete die GraKa musst nun ein Digitales Signal und ein Analoges umwandeln. Man benötigt also drei AD-Wandler (analog zu digital) in der GraKa. Die Herrausforderung dabei ist der Pixeltakt, also die Geschwindigeit mit der dieser Wandler die Daten umwandeln müssen. Das sind minimal 15 Mhz Wandlungsrate. So, der oben angesprochene RAMDAC übernahm diese Aufgabe in der GraKa. Dies ist ein AD Wandler für 3 Kanäle (RGB) der zusätzlich noch eine Loookuptabelle enthält. Das ist eine Farbtabelle die zb. 256 Farbeinträge enthält aber diese 256 Farben in quasi 2^24 Farbtiefe umrechnen konnte. So war es möglich auf VGA Karten mit 256 gleichzeitig darstellbaren Farben denoch insgesamt 2^24 Farben darzustellen, aber eben immer nur 256 Farben davon gleichzeitg.
Naja, später wurde alles nochmal besser, merh Farbe, mehr Auflösung.
Der entscheidende Schritt passiert in diesem Sektor gerade jetzt. Der Übergang von analogen Monitoren zu digitalen. Nunmehr werden die Signale der GraKa rein digital an den Monitor geschickt. Und da die Datenmenge immer weiter anwächst werden die Monitore auch mathematisch komplexe Komprimierungsverfahren anwenden -> HDTV. Als kleiner Effekt nebenbei kann man nun diese digitalen Daten auch noch verschlüsseln so das in Zukunft der Monitor nur noch Daten anzeigen wird die der jeweilige Betrachter auch bezahlt hat.

Soweit das was ich die letzten Jahre verfolgen konnte ;) Natürlich könnte man noch viel mehr dazu schreiben, 3 fette Bücher werden es bestimmt.


Gruß Hagen

Muetze1 14. Mai 2007 18:39

Re: Funtionsweise Grafikkarte Monitor
 
Zitat:

Zitat von negaH
Als erstes gab es die Monochromen Grafikkarten. Sie bestanden aus 2 Bildschirmspeichern (virtuell betrachtet). Dem eigentlichen Bildschirmspeicher und einen Zeichnensatzspeicher (Font). Im Bildschirmspeicher standen überlicherweise 80x25 Bytes -> pro Speicherstelle 1 Byte ASCII also der Buchstabe den man darstellen will. Also 80 Buchstaben pro Zeile und 25 Zeilen. Die Grafikkarte liest nun mit der Zeilenfrequenz diese Bytes aus. Das wird als Index benutzt um aus der Fonttabelle die Pixel des Zeichens zu aktuellen Zeile zu dekodieren. Das waren 9 Pixel -> 8 Pixel fürs Zeichen und 1 Pixel als Lücke. Diese 9 Pixel wurden dann im Pixeltakt gesetzt.

Man benötigte also 80x25+256x12 Bytes an Speicher, sehr wenig also.

Wenn du damit MDA (Monochrome Display Adapter) meinst, dann muss ich dich korrigieren. Diese haben neben jedem Byte für den Zeichenkode ein zweites folgend mit Attributen (intensiv, blinked). Da ich hier eine funktionstüchtige MDA Karte sowie Monitor habe (für Debugausgabe unverzichtlich im PM bzw. HW Programmierung ohne OS).

Mein Hinweis ist natürlich hinfällig, wenn du ein System vor den MDA Karten/anderes System meinst.

/EDIT: HGC (Hercules Graphics Card) und MDA nehmen sich dabei nichts, nur das HGC noch einen Grafikmodus konnte. Bei der Aussage zum Textmodus ändert sich nichts.

steppo 21. Mai 2007 21:16

Re: Funtionsweise Grafikkarte Monitor
 
Hallo zusammen,

wie ich sehe hat mein Thema zu heftigen Diskussionen geführt. Dies war nicht meine Absicht. Ich freue mich aber über so viel Resonanz.

Ich bedanke mich auch nocheinmal recht herzlich, dass ihr euch so viel Zeit genommen habt, mir das ganze zu erklären.

Wie ich dazu kam, diese Frage ins Forum zu stellen!

Ich habe vor längerer Zeit einen Bericht gesehen, wo Tests in Kinos gemacht wurden, indem im Film Einzelbilder durch Obst (in diesem Fall Bananen) ersetzt wurden. Ich weiß, altes Thema, aber sehr interessant. Das Ergebnis des Tests war, dass 75% der Kinobesucher beim Anblick des Obstkorbes zu einer Banane griffen.

Erschreckend oder?

Nach ausgiebiger Recherche habe ich im Netz diverse Programme gefunden, die aufgrund dieser Technik den Menschen helfen wollen sich z.B. das Rauchen abzugewöhnen. Tolle Idee. Allerdings sind diese Programme, meiner Meinung nach unbrauchbar, da sie genau diese Technik (nämlich das für das Auge unsichtbare) nicht beherrschen. Entweder flimmern diese Programme oder das eingeblendete Ziel ist zu lange sichtbar oder gar unregelmäßig sichtbar.

Nun, wie dem auch sei habe ich, neugierig wie ich bin, versucht dieses einmal zu Programmieren (Canvas, durchsichtige Form, Timer, usw.). Allerdings, wie sollte es auch anders sein, bin ich sehr schnell an meine Grenzen gestoßen.

Da es anscheinend nicht über die Schiene Windows geht, mußte das ganze also noch tiefer in die Thematik Grafikprogrammierung gehen, und so bin ich mit der Frage "Wie funktioniert das ganze eigentlich zusammen?" bei euch gelandet.

Gruß Steppo

Muetze1 21. Mai 2007 23:15

Re: Funtionsweise Grafikkarte Monitor
 
Moin!

Das Problem der unbewussten Suggestion ist, dies unbemerkt zu tun. Das ein Canvas dafür zu langsam ist, hast du schon festgestellt. Wenn, dann sollte das Bild nur wenige ns bis ms gezeigt werden. Dies ist eigentlich nur mit folgenden Eckpunkten zu realisieren:

1. es findet eine Synchronisation mit der Abtastlücke (Kathodenrücklauf) statt bei CRT's
2. Die Bildwiederholfrequenz ist entsprechend hoch (desto kleiner, desto länger bleibt ein dargestelltes "Einzel"bild bestehen) bei CRTs

Bei den TFTs sind viel kürzere Zeiten machbar, da diese (digital angeschlossen) jede Speicheränderung direkt und digital auf den Bildpunkt (also bei Nutzung der nativen Auflösung, keine Interpolation) überbringen. Wenn ein analoges Signal genutzt wird (was die meisten Interfaces dann eh bitte auf 60 Hz haben wollen wegen der Signalverfolgung), dann ist das ganze wieder mehr als hinfällig...

Grundlegend sollte dort eine etwas hardwärenähere Lösung bevorzugt werden. Als Möglichkeit steht dir dort als High Level API DirectX zur Verfügung. Dort kapselt Windows afk auch die Informationen über die Abtastlücke in einer API bzw. einen möglichen Zugriff und somit eine der Möglichkeiten. Die WinAPI DC's sollten da wohl etwas zu sehr "verwaltet" bzw. "virtuell" sein um damit was vernünftiges in der Richtung basteln zu können.

Dani 21. Mai 2007 23:43

Re: Funtionsweise Grafikkarte Monitor
 
Zitat:

Zitat von steppo
Das Ergebnis des Tests war, dass 75% der Kinobesucher beim Anblick des Obstkorbes zu einer Banane griffen.
Erschreckend oder?

Hört sich eher nach unwissenschaftlichen Methoden an. Mich interessiert die Quelle, von der diese Information stammt... hast du die zufällig noch parat?

SirTwist 22. Mai 2007 22:26

Re: Funtionsweise Grafikkarte Monitor
 
Solche Berichte über Suggestionsversuche geistern schon seit vielen Jahren immer mal wieder durchs Netz... meiner Meinung nach handelt es sich um eine Urban Legend.

Nach ein bißchen Gurgeln bin ich auf folgende URL gestoßen:
https://bora.uib.no/bitstream/1956/2...ta+Untiedt.pdf

Guck mal auf Seite 96, da steht was dazu.

valjah 24. Mai 2007 08:31

Re: Funtionsweise Grafikkarte Monitor
 
Weiß denn jemand hier genaueres darüber, wie ich Informationen über die Abtastlücke abfragen kann? Evtl. mit DirectX/DelphiX? Das wäre möglcherweise genau die Antwort auf meine Frage.

Gruß, valjah


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:28 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