Plattformunabhängige Grafikroutinen mit C++



  • Hallo!

    Kennt jemand eine Möglichkeit mit C++ Grafik darzustellen (bzw. den Bildschirmspeicher zu manipulieren) ohne DirectX, OpenGL oder SDL?
    Aus irgendwelchen Gründen (wahrscheinlich fehlende OpenGL-Treiber für meine Grafikkarte) läuft OpenGL bzw. SDL sehr langsam auf meiner Maschine (1400 Mhz). Und da ich nur simple 2D Grafik darstellen will sind Framerates von 50 FPS mit SDL auf einem solchen Computer einfach unzureichend.

    Eine API mit der man plattformunabhängig Fenster erstellen kann usw. wäre nicht mal unbedingt nötig. Notfalls mache ich das per Preprozessor-Unterscheidung individuell für die einzelnen Plattformen.
    Aber ist es irgendwie möglich einen Zeiger direkt auf den Grafikspeicher zu bekommen? 😕



  • MAG schrieb:

    Aber ist es irgendwie möglich einen Zeiger direkt auf den Grafikspeicher zu bekommen? 😕

    Ich kenne keine Möglichkeit, aber wenn du weder mit OpenGL noch mit DirectX auf eine vernünftige Geschwindigkeit kommst, bist DU schuld!
    Bei SDL bestimmt auch, aber da bin ich mir nicht sicher.
    Nutzt du denn auch schön die Hardware-Blits?
    Ist die Wiederholrate syncronisiert?
    Und brechen die 50 Frames ein, wenn du mehr zeichnest?

    Warum willst du denn DirectX nicht benutzen?
    Das ist doch genau das, was du willst.
    Ist dir denn die Plattformunabhängigkeit so wichtig?



  • Ich bin nicht schuld, sondern der Hersteller meiner Grafikkarte.
    Ich benutze Linux, daher kann ich nicht auf DirectX zurückgreifen.
    Und meine Grafikkarte keine OpenGL-Treiber für Linux hat kann ich OpenGL und SDL vergessen. So oder so, plattformunabhängigkeit ist mir wichtig weil ich selbst Linux und Windows benutze (aber hauptsächlich Linux).

    Inzwischen habe ich auch schon eine Lösung gefunden, zumindest was einfache 2D Spiele angeht: Allegro
    Habe schon oft davon gehört aber es nie verwendet.
    Was dann 3D-Spiele angeht werde ich wohl oder übel weiterhin nur für Windows entwickeln können, bis ich mir einen besseren PC (eigentlich Laptop) gekauft habe.



  • MAG schrieb:

    Und meine Grafikkarte keine OpenGL-Treiber für Linux hat kann ich OpenGL und SDL vergessen. So oder so, plattformunabhängigkeit ist mir wichtig weil ich selbst Linux und Windows benutze (aber hauptsächlich Linux).

    Und die restlichen Plattformen? Am besten du benutzt einfach nur noch ein ordentliches OS. 😎

    "Direkter Zugriff" würde bedeuten das du dir selbst den Treiber schreiben musst. Denk mal drüber nach...

    Bye, TGGC (Der Held lebt!)



  • Vielleicht käme ja das Framebufferdevice deiner Idee am nächsten.
    Aber versprich dir nicht allzuviel davon, es ist ein reiner unbeschleunigter Pixelzugriff.

    Oder google mal nach SVGALib.



  • Was ist das bitte für eine GraKa?



  • ( War das jetzt ironisch gemeint oder ist dir die Abkürzung für Grafikkarte wirklich nicht bekannt? )

    [quote=TGGC]
    Und die restlichen Plattformen? Am besten du benutzt einfach nur noch ein ordentliches OS. 😎

    "Direkter Zugriff" würde bedeuten das du dir selbst den Treiber schreiben musst. Denk mal drüber nach... [/quote]

    Natürlich gäbe es da noch andere Platformen wie Mac, verschiedene UNIX Varianten (wobei, basiert das neue Mac-OS nicht auf BSD...?), ...
    Aber Windows ist bekannter Maßen DIE Plattform wenn es um Spiele geht, wobei Linux immer stärker im Kommen ist. Und da ich wie gesagt selbst Linux benutzte möchte ich meine Spiele auch auf diesem OS spielbar sehen.
    Was das ordentliche OS angeht, Linux ist das vernünftigste. 😛

    Ich habe nicht daran gedacht mir einen eigenen Treiber zu schreiben, mit direkten Zugriff meinte ich eher eine Bibliothek/Funktion oder sonst was, welches mir Zugriff darauf gibt.

    Dieses von Sgt. Nukem erwähnte Framebuffer Device ist wirklich am ehesten das was ich wollte. Aber nun gut, letztendlich bin ich zu dem Entschluss gekommen, dass SDL+OpenGL global gesehen die beste Möglichkeit für hardwarebeschleunigte 3D-Spiele für Windows, Linux, Mac usw. zu entwickeln. Zwar unterstützt meine Grafikkarte kein OpenGL, aber es handelt sich hierbei ja auch nur um einen billigen Laptop. Drum muss ich wohl oder übel selbst handeln und meine Hardware austauschen.



  • TGGCs Statements über Sachen die er nicht kennt, (wie zB vernünftige Betriebssysteme) kannst Du einfach ignorieren.

    SDL/OpenGL/foobar ist wohl auch eine bessere Lösung als SVGAlib und Co., das ist einfach viel zu low-level und alt. 👎

    Und Framebuffer-Device wolltest Du bestimmt nicht. 👎

    Außerdem: Wenn die Framerates unter Realbedingungen absacken, kannst Du Dir immer noch Gedanken um die Optimierung machen; alles andere wäre Premature Optimization.



  • MAG schrieb:

    ( War das jetzt ironisch gemeint oder ist dir die Abkürzung für Grafikkarte wirklich nicht bekannt? )

    Nimm's nicht persönlich, aber: Bist Du doof?!? 😕
    Ich war der erste (und bislang einzige), der diese "Abkürzung" in diesem Thread benutzt hat, also werd' ich wohl wissen, was sie heißt... 🙄 🤡 😉



  • Hm, auch wenn keine 3D-HW vorhanden ist, spricht was gegen OpenGL? Kann ja mit Mesa gerendert werden, ist das dann wirklich so lahm?



  • durito schrieb:

    Hm, auch wenn keine 3D-HW vorhanden ist, spricht was gegen OpenGL? Kann ja mit Mesa gerendert werden, ist das dann wirklich so lahm?

    Ja.



  • MESA ist schon lahm, aber ohne HW Unterstützung wirst du auch mit Handgeschriebenem Software 3D Renderer nix besseres hinkriegen. Dafür läufts dann auf allen Platformen mit 3D HW schnell.
    Und AFAIK kriegst du mit SDL eh Zugriff auf den Grafikspeicher. bzw ein Surface das dort liegt. Und wann du willst kannst du ja mit SSE uä hineinrendern. Und Allegro ist auch nicht anders, nur das noch einige Routinen mehr dabei sind.



  • [quote="SeppSchrot"]

    MAG schrieb:

    Bei SDL bestimmt auch, aber da bin ich mir nicht sicher.

    dass die SDL in sachen grafik arschlahm ist, ist nun wirklich kein geheimnis.



  • MAG schrieb:

    Ich habe nicht daran gedacht mir einen eigenen Treiber zu schreiben, mit direkten Zugriff meinte ich eher eine Bibliothek/Funktion oder sonst was, welches mir Zugriff darauf gibt.

    Am Anfang hörte sich das aber wie die übliche Fantasie an: ich bin hart und brauch kein OGL und DX, ich mache das _direkt_.

    Bye, TGGC (NP Intelligenz)



  • Erm, nein. Das hatte nichts mit "hart sein" zu tun. Ich habe einfach nur eine Alternative gesucht.

    Hm, auch wenn keine 3D-HW vorhanden ist, spricht was gegen OpenGL? Kann ja mit Mesa gerendert werden, ist das dann wirklich so lahm?

    Ja.

    Da kann ich auch nur zustimmen. 🙂

    dass die SDL in sachen grafik arschlahm ist, ist nun wirklich kein geheimnis.

    Ja davon habe ich schon gehört. Bei mir ist es allerdings noch extremer wegen der fehlenden Hardwarebeschleunigung. Und SDL benutze ich nur für Fenster, Events, Eingabe usw. Die Grafikausgabe wird über OpenGL, also eigentlich auch hardwarebeschleunigt durchgeführt. Wie gesagt meine Grafikkarte ist schuld. 😡



  • maximAL schrieb:

    dass die SDL in sachen grafik arschlahm ist, ist nun wirklich kein geheimnis.

    Jo aber wenn ich die Grafik ueber SDL/OGL mach und das ganze dann von Mesa gerendert wird, ist das wirklich so viel lahmer als irgend ne andere Lib?

    @MAG: Was hast Du fuer eine Grafikkarte, dass Du der die Schuld in die Schuhe schieben kannst?



  • durito schrieb:

    Was hast Du fuer eine Grafikkarte, dass Du der die Schuld in die Schuhe schieben kannst?

    Ich nehme an er hat eine ohne Treiber, der HW Beschleunigung beitet.
    OpenGL ist auf meiner GeForce 4 ohne den proprietären Treiber von NVIDIA auch lahm.



  • maximAL schrieb:

    dass die SDL in sachen grafik arschlahm ist, ist nun wirklich kein geheimnis.

    Kann man so nicht sagen; SDL wrapped unter Windows zB in erster Linie DirectX, während es unter GNU/Linux - mit Hardwarebeschleunigung wohlgemerkt - durchaus brauchbar ist.



  • Er hat eine Intel IGF integrated 32 MB shared XYZ... 🕶 👍



  • nman schrieb:

    maximAL schrieb:

    dass die SDL in sachen grafik arschlahm ist, ist nun wirklich kein geheimnis.

    Kann man so nicht sagen; SDL wrapped unter Windows zB in erster Linie DirectX, während es unter GNU/Linux - mit Hardwarebeschleunigung wohlgemerkt - durchaus brauchbar ist.

    trotzdem nicht verständlich, warum ein DX wrapper so langsam ist. und warum man nicht auch unter win OGL für die grafik nutzt, ist mir auch ein rätsel...


Anmelden zum Antworten