2D Engine Tutorial
-
Hey Leute,
ich beschäftige mich schon seit einiger Zeit mit Qt, bin damit auch absolut zufrieden.Mich interessiert aber schon sehr, was da hinter den Kollisen so getrieben wird.
Ich selbst würde gerne mal den Weg kennen lernen, der nötig ist, um im einfachsten Falle mal einen Pixel auf den Bildschirm in einer bestimmten Farbe an einer bestimmten position auszugeben.Klar das da einiges dazu gehört, aber kennt ihr tutorials zu diesem gebiet, die dann auch in C++ implementiert sind ?
Würde mir das gern mal angucken.
danke für die Tips
Gruß
-
Suchst du eine 2d GraphicEngine -> QGraphicsScene & co
Suchst du eine möglichkeit selber etwas zu zeichnen -> QPainter
-
Hi, ne das war nicht wirklich meine Absicht auf diese Weise zu zeichnen.
Die beiden sind mir wohl bekannt.Mir geht es eher darum selbst mal in erfahrung zu bringen, wie man Pixel auf dem Bildschirm ausgibt.
Also völlig unabhängig von Qt oder anderen Frameworks.
Ich wollte versuchen mir selbst die Schnittstelle zum Frame Buffer -> Monitor auszuarbeiten um mal zu sehen, wie sowas grunsätzlich realisiert wird.Weiß nicht wie man das jetzt anders erklären soll ^^
Hoffe du verstehst mich.
-
Es kommt drauf an auf welcher Ebene du das wissen willst. Solange du ein Betriebssystem hast, musst du auf dessen Methoden zurückgreifen. Linux bietet dir z.B. /dev/fbX in das du einfach wie in eine Datei schreibst. Unter Windows ist glaube ich die GDI die niedrigste Schnittstelle. Zumindest kenne ich nichts niedrigeres.
Auf der Hardwareebene gibt es VESA als relativ beschränkter Standard (keine Hardwarebeschleunigung etc.). Ansonsten haben die Grafikkarten alle verschiedene Schnittstellen. Grundlegend dürfte aber immer sein das der Framebuffer einfach ein bereich im Speicher ist, in dem man entsprechend die Farbwerte reinschreibt wie in einem Array.
-
ZSchneidi schrieb:
Hi, ne das war nicht wirklich meine Absicht auf diese Weise zu zeichnen.
Die beiden sind mir wohl bekannt.Mir geht es eher darum selbst mal in erfahrung zu bringen, wie man Pixel auf dem Bildschirm ausgibt.
Also völlig unabhängig von Qt oder anderen Frameworks.
Ich wollte versuchen mir selbst die Schnittstelle zum Frame Buffer -> Monitor auszuarbeiten um mal zu sehen, wie sowas grunsätzlich realisiert wird.Weiß nicht wie man das jetzt anders erklären soll ^^
Hoffe du verstehst mich.
Tobi hat das schon sehr schön erklärt. Ich habe so etwas auch schon gemacht und mir einfach ein Speicherbereich genommen und dort meine selbstgeschriebenen 2D- 3D-Funktionen drauf losgelassen. Wenn du dann fertig mit rendern bist kannst du den Speicher z.B. an ein QImage übergeben und es dann anzeigen. Kannst anstelle von Qt natürlich auch Libs wie SDL der SMFL nehmen. Dort kannst du mit sicherheit auch deinen eigene Frambuffer anzeigen lassen. Direkt die GraKa anzusprechen wird vom OS eventuelle heutzutage verhindert und wenn dann funktioniert das halt nur für deine Karte oder vergleichbare Modelle.
Gruß Blue-Tec
-
Hey Tobi, danke das war schonmal ein guter hinweis, da ich nicht wusste, dass für derartiges Schnittstellen vom OS bereitgestellt werden.
Dir auch blue-tec, hätte gedacht, dass man die Grafikkarte evtl. direkt ansprechen muss.
Wenn der Framebuffer als einfacher Speicherbereich verfügbar ist, sollte das nicht
ganz so schwer sein, die ich gedacht hätte.Ich werd mir die Schnittstellen dafür mal angucken.
So wie das verstehe sind die ersten Adressen dann jetzt GDI+ und Cairo für Linux.