[openGL] Warum ist gluDisk schneller als GL_POINTS ?



  • Hi,

    warum ist das so? Die glu-Funktionen können dochauch nur den die gl-Befehle nutzen. Ich hab mal ein Programm geschrieben und verglichen, wobei ich alle Punkte des Kreises mit Bresenham berechne und dann über GL_POINTS diese zeichne. Nur wird das mit zunehmeder Bildschirmgrösse immer langsamer zu gluDisk().

    Grüsse,
    don_basto



  • don_basto schrieb:

    warum ist das so? Die glu-Funktionen können dochauch nur den die gl-Befehle nutzen. Ich hab mal ein Programm geschrieben und verglichen, wobei ich alle Punkte des Kreises mit Bresenham berechne und dann über GL_POINTS diese zeichne.

    Sherlock: "gluDisk benutzt nicht GL_POINTS."

    Bye, TGGC \-/



  • Soweit ich weiss sind Punkt und Wireframe Darstellungen bei den meisten Grakas von der Hardware-Beschleunigung ausgeschlossen. Das merkt man recht schnell, wenn man bei Milkshape ein Model mit tausenden Polys als bspw. Flat-Shaded und dann einmal als Nur-Wireframe anzeigen lässt.
    Die GeForce4 Quadro Serie unterstützt solche Operationen AFAIK hardware-seitig.
    gluDisk wird vermutlich ebenfalls irgendwie, irgendwo beschleunigt sein und wie gesagt: Woher willst du wissen, das gluDisk mit GL_POINTS arbeitet ? 😕


  • Mod

    seit der riva128 sind point/sprite/line darstellungen hardware beschleunigt. es kann sein dass die ein wenig langsammer sind, sind aber hardware, das ganze hat aber nicht direct mit deinem problem zu tun.
    Dass gluDisk aller höchst wahrscheinlich nicht points benutzt könnte man damit erklären, dass lines reichen, du mußt ja nicht jeden punkt ausrechnen, kannst 100 im kreis ausrechnen und dazwischen mit linien interpolieren (lassen von der hardware). Diese punkt können Feste punkt im einheitskreis sein die man mittels matrix dann auf die richtige screen position und skalierung bringt.

    rapso->greets();



  • Cpp_Junky schrieb:

    Soweit ich weiss sind Punkt und Wireframe Darstellungen bei den meisten Grakas von der Hardware-Beschleunigung ausgeschlossen. Das merkt man recht schnell, wenn man bei Milkshape ein Model mit tausenden Polys als bspw. Flat-Shaded und dann einmal als Nur-Wireframe anzeigen lässt.
    Die GeForce4 Quadro Serie unterstützt solche Operationen AFAIK hardware-seitig.
    gluDisk wird vermutlich ebenfalls irgendwie, irgendwo beschleunigt sein und wie gesagt: Woher willst du wissen, das gluDisk mit GL_POINTS arbeitet ? 😕

    Die Wireframedarstellung ist IMHO deswegen immer langsamer als eine Flat-Shaded Darstellung,
    weil Objekte in der Wireframedarstellung nicht von anderen Objekten
    verdeckt werden, wie es z.b. bei gefüllten Flächen (Flat Shaded) immer der Fall ist.
    Das gleiche gilt natürlich auch für die Punktdarstellung.

    Die Frage ist jetzt nur noch, wie sich das Verhält
    wenn man ein gleichmäßiges Gitter von Punkten in der Draufsicht darstellen würde.
    Hier wäre die Anzahl der Vektoren, ob Punktförmig dargestellt
    oder eingebettet in einer Fläche (flat Shaded) nämlich gleich.
    Hier kommt es dann wohl auf die Behandlungsart an
    -> Grafikchips sind für das rendern von Dreiecken usw optimiert.



  • sdf schrieb:

    Hier wäre die Anzahl der Vektoren, [...] nämlich gleich.

    😕



  • Sgt. Nukem schrieb:

    sdf schrieb:

    Hier wäre die Anzahl der Vektoren, [...] nämlich gleich.

    😕

    Naja, um Punkte im 3d Raum zu bestimmen brauchst du dazu Vektoren (z.b. Ortsvektoren), das meinte ich damit.

    Und wenn die Vektoren sich nicht gegenseitig verdecken, dann werden sowohl
    in der Flat-Shaded als auch in der Wireframedarstellung genau gleich viele dargestellt.

    Ich hoffe damit ist es klarer.



  • Wie können sich Vektoren denn überdecken??
    Doch nur indem sie genau übereinander liegen oder zumindest (anti-)parallel hintereinander liegen...



  • Sgt. Nukem schrieb:

    Wie können sich Vektoren denn überdecken??
    Doch nur indem sie genau übereinander liegen oder zumindest (anti-)parallel hintereinander liegen...

    Wie ich schon sagte, in der Wireframe oder Punktdarstellung überdecken sie sich kaum.
    Aber in der Flat-Shaded Darstellung überdecken sich ihre Objekte die durch die
    Vektoren definiert werden, deswegen fallen dann ein paar Vektoren durch die Sieb,
    die dann nicht dargestellt werden müssen.

    Beispiel:

    Stell dir 2 quadratförmige Sprites im 3d Raum vor die nebeneinander stehen
    so daß du direkt darauf siehst.
    Das eine Sprite ist dabei größer als das andere.

    D.h. auf deinem Bildschirm hast du ingesamt 8 Koordinaten oder Punkte oder
    Vektoren wie auch immer du das jetzt nennen willst (ich weiß zumindest wie's gemeint ist, ich hoffe du auch) ganz egal in welcher Darstellungart das
    Bild gerendert wird.

    Wenn du nun aber, das kleine Sprite direkt unter das große schiebst,
    dann werden nur in der Punkt und Wireframe immer noch 8 Koordinaten bzw, Punkte etc. dargestellt.
    Aber in der Flat-Shaded Darstellung werden die Punkte/Vektoren des kleinen Sprites vom großen Überdeckt, d.h. du siehst nur noch 4 Koordinaten/vektoren/Punkte, die anderen sind überdeckt und das heißt das
    diese Szene schneller dargestellt werden kann, da nur noch 4 Vektoren zu berechnen sind.

    Kapiert?



  • rapso schrieb:

    Dass gluDisk aller höchst wahrscheinlich nicht points benutzt könnte man damit erklären, dass lines reichen, du mußt ja nicht jeden punkt ausrechnen, kannst 100 im kreis ausrechnen und dazwischen mit linien interpolieren (lassen von der hardware). Diese punkt können Feste punkt im einheitskreis sein die man mittels matrix dann auf die richtige screen position und skalierung bringt.

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glufnc01_6ox7.asp
    Das ist wohl genau so, da man die Unterteilung mittels slices einstellt. Hätte ich selbst drauf kommen können 🙄 . Aber danke 🙂 .



  • sdf schrieb:

    Sgt. Nukem schrieb:

    Wie können sich Vektoren denn überdecken??
    Doch nur indem sie genau übereinander liegen oder zumindest (anti-)parallel hintereinander liegen...

    Wie ich schon sagte, in der Wireframe oder Punktdarstellung überdecken sie sich kaum.
    Aber [...]

    Ich versteh' schon was Du meinst... Ich wollt' bloß ein wenig korinthenkacken... Was _DU_ meinst sind jedenfalls nicht Vektoren... und schon gar nicht Ortsvektoren... 👍 🕶



  • Sgt. Nukem schrieb:

    sdf schrieb:

    Sgt. Nukem schrieb:

    Wie können sich Vektoren denn überdecken??
    Doch nur indem sie genau übereinander liegen oder zumindest (anti-)parallel hintereinander liegen...

    Wie ich schon sagte, in der Wireframe oder Punktdarstellung überdecken sie sich kaum.
    Aber [...]

    Ich versteh' schon was Du meinst... Ich wollt' bloß ein wenig korinthenkacken... Was _DU_ meinst sind jedenfalls nicht Vektoren... und schon gar nicht Ortsvektoren... 👍 🕶

    Ne, ich denke, du hast das schon ernst gemeint mit der Frage, weil du es vorher wirklich nicht verstanden hast was ich meinte.

    Denn wenn es anders wäre, dann hättest du mir schon im vorherigen Posting gesagt
    wie es wirklich ist und was das außer Ortsvektoren wirklich ist.
    Aber das hast du ja jetzt auch nicht genannt, das genügt mir also als Beweis
    das meine Vermutung im ersten Absatz stimmt.
    Denn derjenige, der etwas weiß, der hält sein Wissen nicht zurück. 🕶 😉



  • Meinst Du?? 😃 :p


Anmelden zum Antworten