OpenGl und Wireframemodus



  • Hallo

    Bin gerade dabei ein kleines Opengl-spiel zu machen und habe das Problem, dass es im wireframemodus immer unspielbar wird.

    Hier der Code (wird nur bei Tastendruck ausgeführt)

    if(wireMode)
    {
    	glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
    	glDisable(GL_TEXTURE_2D);
    }
    else
    {
    	glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
    	glEnable(GL_TEXTURE_2D);
    }
    

    Woran könnte das liegen? Muss noch was deaktiviert werden?

    Vielen Dank im voraus!


  • Mod

    Sschat schrieb:

    Bin gerade dabei ein kleines Opengl-spiel zu machen und habe das Problem, dass es im wireframemodus immer unspielbar wird.

    Woran könnte das liegen?

    liegt vermutlich daran dass man die objekte kaum noch erkennt.

    Muss noch was deaktiviert werden?

    ich wuerde den wireframe modus deaktivieren, dann sieht man wieder alles und kann spielen.



  • Hier stand Blödsinn...



  • danke für die antwort aber an der übersicht liegt es leider nicht

    also das spiel rennt auf meinem laptop bei 131250 Polygonen mit 53 fps
    sobald ich nun den wireframemode einschalte sacken sie auf 34 fps

    oder bei 310 000 triangles von 32 fps auf 11 fps

    liegt es am wireframemodus an sich dass es viel langsamer geht oder vergesse ich etwas wichtiges?

    da dieses spiel ein Uniprojekt ist muss der wireframemodus enthalten sein

    also wenn jemand bzg diesen problems eine lösung weiß wäre mir sehr geholfen ... danke


  • Mod

    Ja, es liegt am wireframemode an sich, da jede kante wie ein dreieck behandelt wird. Es kann etwar bringen einen indexbuffer anzulegen in dem jede kante nur einmal vorhanden ist



  • Genauer gesagt muss der Treiber jeden Index anfassen um die Daten so aufzubereiten, dass die GPU diese als Lines verarbeiten kann.
    Bei relativ vielen Polygone kostet das eben auch relativ viel Zeit.



  • Wireframe ist grundsätzlich langsammer als gefüllte Polygone, weil die Grafikkarten nicht darauf optimiert sind. (Oder die Treiber).

    Ich glaube sogar, dass das intern auf "nur Linien" abgebildet wird.
    Also aus jedem Dreieck 3 zu zeichnende Linien werden.

    Das ist normal so.
    Ich kann mir auch nicht vorstellen, dass man was dagegen tun kann.
    (Es benutzt ja auch eigentlich kaum Jemand)



  • Ich glaube sogar, dass [...] aus jedem Dreieck 3 zu zeichnende Linien werden.

    Richtig, im Polygon-Mode GL_LINE werden aus 3 Indizes (A,B,C) eines Dreiecks 6 Indizes (A,B) (B,C) (C,A) fuer 3 Linien. Shared Edges werden dabei doppelt gezeichnet.
    Darum extrahiert man besser eindeutige Kanten und zeichnet diese als Linien (siehe Rapsos Post).

    Wireframe ist grundsätzlich langsammer als gefüllte Polygone

    Linien verringern den Pixeldurchsatz erheblich.

    weil die Grafikkarten nicht darauf optimiert sind. (Oder die Treiber).

    Welche Belege hast Du dafuer?

    Es benutzt ja auch eigentlich kaum Jemand

    CAD?



  • Hallo

    Danke für die Antworten!

    Ich werd mich einfach damit abfinden, dass es halt langsamer ist. Denke mal am Abgaberechner wirds schon halbwegs laufen.


  • Mod

    die optimierung die ich vorschlug ist nicht ok?



  • Danke die ist sicher gut aber sie haben uns jetzt mitgeteilt dass der Wireframemodus nur zum zeigen der Komplexität der Szene genützt wird (Scheinbar hatten andere Gruppen das selbe Problem). Daher ist das nicht so schlimm wenns etwas langsamer läuft.
    Wir werden erstmal die anderen fehlenden Punkte machen und wenn noch Zeit bleibt wird optimiert.


Anmelden zum Antworten