Polygone direkt auf der GeForce rendern



  • Wo gibt's Infos zur GeForce-Programmierung? Ich hab schon auf developer/nvidia.com nachgeschaut und ein paar Sachen bezüglich Register Combiners und Vertex Programs gefunden. Soweit ich das gesehen hab, beziehen diese Dinge sich aber nur auf Texturing. Weiß jemand, wie man direkt auf der GeForce Polygone (in OpenGL) rendert und gibt's da irgendwo Doku dazu?



  • Was meinst Du mit "direkt auf der GeForce rendern"?
    Willst Du ein Programm schreiben, das nur mit GeForce-Karten läuft?
    Warum nicht ganz normales OpenGL oder Direct3D verwenden? Dann läuft es mit allen Karten!



  • TomasRiker schrieb:

    Warum nicht ganz normales OpenGL oder Direct3D verwenden? Dann läuft es mit allen Karten!

    Nee, das rendert ja nicht direkt auf der Karte, sondern 3 bis 4 Zentimeter darunter!

    Im Ernst, die Frage ist ziemlich dumm gestellt.



  • TomasRiker schrieb:

    Was meinst Du mit "direkt auf der GeForce rendern"?
    Willst Du ein Programm schreiben, das nur mit GeForce-Karten läuft?
    Warum nicht ganz normales OpenGL oder Direct3D verwenden? Dann läuft es mit allen Karten!

    Damit meine ich hardwarebeschleunigt für GeForce-Karten. Das Programm gibt's schon in OpenGL (rendert mit dem normalen OpenGL-Renderer (wohl implementierungsabhängig)), ich muss es aber so machen, dass es NOCH SCHNELLER rendert - hardwarebeschleunigt halt. Und das auf der GeForce. Also "direkt darauf". Alles klar?!?! 😉

    Nein, im Ernst: Ich will aber die Möglichkeiten der GeForce zum Polygonrendern ausnutzen (denke mal, das sollte irgendwie so ähnlich gehen wie SSE2). Aber wie kann ich die GeForce direkt programmieren, so dass sie mir Polygone rendert? Dafür bräuchte ich ne Doku.



  • Du willst die Maschinenbefehle der Grafikkarte um selber das Teil zu Programmieren?

    Also wenn nVidia den Maschinencode veröffentlicht hat findest du es nur auf deren Homepage.

    PS: Alleine die Dokumentation des Pentium umfasst mehrere tausend Seiten.



  • Ehhrm, wieviele Mannstunden wird schon an OpenGL (oder DX) und den entsprechenden Treibern programmiert? Und du denkst, du gehst daher und schreibst das eben mal noch schneller? Die Frage ist scheinbar nicht nur dumm gestellt.

    Bye, TGGC



  • TGGC schrieb:

    Ehhrm, wieviele Mannstunden wird schon an OpenGL (oder DX) und den entsprechenden Treibern programmiert? Und du denkst, du gehst daher und schreibst das eben mal noch schneller? Die Frage ist scheinbar nicht nur dumm gestellt.
    Bye, TGGC

    Naja, wenn's schon super-optimiert ist, umso besser! Dann hat sich die Frage erledigt.

    Ciao, pleaSure.



  • TGGC schrieb:

    Ehhrm, wieviele Mannstunden wird schon an OpenGL (oder DX) und den entsprechenden Treibern programmiert? Und du denkst, du gehst daher und schreibst das eben mal noch schneller? Die Frage ist scheinbar nicht nur dumm gestellt.

    Bye, TGGC

    Obwohl... mit 'nem eigenen Boot-Loader könnte man bestimmt noch 1 - 2 Frames reissen... 😉 😃



  • Was du meinst sind die ganzen herstellerspezifischen Extensions, die es aber nur unter OpenGL gibt.
    Dazu gehören, wie du auch schon gesagt hast, register combiner, texture shader, etc.

    Was das Rendering von Geometrie angeht gibt es eigentlich nur eine richtige NV-Extension, nämlich VAR (Vertex Array Range). Es gibt noch PDR (Pixel Data Range) zum Zurücklesen von Daten aus dem FB.
    VAR wird allerdings langsam durch VBO ersetzt, ist auf NV-Karten allerdings immer noch am schnellsten. Also wenn es wirklich schnell sein muss, dann mit VAR Speicher im GraKa-RAM allozieren, Vertexdaten hochladen (eventuelle Indices auch gleich mit) und fröhlich losrendern. Schneller geht es wirklich nicht mehr. Allerdings etwas Arbeit wegen der Synchronisierung.

    cya
    liquid



  • hallo pleasure,

    du meinst bestimmt Vertex shader u.ä..
    schau dir mal
    http://developer.nvidia.com/page/cg_main.html
    und
    http://www.cgshaders.org/
    an.
    Die idee dabei ist, das die GPU schneller Vektor Operationen machen kann als die CPU.
    Auf der GraKa wurde aber schon (seit ewigkeiten) gerendert.



  • Sgt. Nukem schrieb:

    Obwohl... mit 'nem eigenen Boot-Loader könnte man bestimmt noch 1 - 2 Frames reissen... 😉 😃

    Du meinst doch nicht ernsthaft, das man so DX schlägst?

    Bye, TGGC



  • TGGC schrieb:

    Sgt. Nukem schrieb:

    Obwohl... mit 'nem eigenen Boot-Loader könnte man bestimmt noch 1 - 2 Frames reissen... 😉 😃

    Du meinst doch nicht ernsthaft, das man so DX schlägst?

    Nee, DAS sicher nicht...!! 😃

    DirectX is un(s)top(p)able...!! 🤡 👍 👍 👍



  • Ich denke schon, besonders was Direct3D angeht. Überlegt man einmal, dass da ganze 3 Übersetzungsschichten am Werk sind (D3D7, D3D8, D3D9 Interfaces, D3D Thunk-Layer, UDA Layer) dann dürfte die direkte Programmierung der GPU doch erheblich schneller sein. Natürlich nur wenn mans richtig macht.

    cya
    liquid



  • Na dann mach mal.



  • Na dann mach mal.



  • Und man kann doch 2 Beiträge kurz hinternander posten.



  • Gleich zwei mal? Ich denke einmal reicht doch wirklich, wir wollens doch nicht übertreiben, ne?! 😃

    cya
    liquid



  • Aber keiner kann mit der D3DX-Lib so schnell Matrizen zusammenmultiplizieren wie DirectX!! Selbst OpenGL nicht!! 🤡 :p



  • Sgt. Nukem schrieb:

    Aber keiner kann mit der D3DX-Lib so schnell Matrizen zusammenmultiplizieren wie DirectX!! Selbst OpenGL nicht!! 🤡 :p

    Wieso nicht? Mit Assemlber optimierten MMX, SSE, SSE2 und/oder 3DNow! code geht das bestimmt genau so gut 🙂

    Und wenn das doch genau so schnell ist oder schneller (kann sein muss net!) dann hat man ggf. ne kleinere Exe und viel draus gelernt 🙂



  • Die D3DX-Lib ist schnell. Ich könnte mir eigentlich nur die Optimierung durch direktes eingeben in der Matrix vorstellen.

    Also statt z.B. eine Funktion aufzurufen so zu machen.

    m_matView._41 = 10.0f; 
    m_matView._42 = 12.5f; 
    m_matView._43 = 1.7f;
    m_lpDevice->SetTransform(D3DTRANSFORMSTATE_WORLD,&m_matView);
    

Anmelden zum Antworten