Mein testprogramm ruckelt



  • Natürlich brauch ich nicht so viele Dreiecke, ist ja auch nur ein test. Aber darum gehts mir hier nicht.



  • Na jut, gut.
    Und wie sieht's jetzt aus?
    6 Millionen sind jedenfalls sehr viel.



  • Also ich hab nochmal nachgerechnet. Es sind eigentlich 12 Millionen Dreiecke, wovon die hälfte aber nicht sichtbar sind. Wenn ich die Anzahl der Dreiecke verringere läuft es flüssiger.
    Was mich interessiert ist ob da an die grenzen der Hardware gekommen bin, oder ob ich irgendwas falsch programmiert habe.



  • Ach, doch nur 12 Millionen anstatt 6 Millionen?

    Menschenskinder.
    Du erzählst nicht einmal, was für hardware du hast.
    Ob sichtbar oder nicht, du berechnest sie trotzdem. Außerdem sehen wir nicht, wie du deine Triangles benutzt / zeichnest oder sonstiges.

    denk mal drüber nach.



  • makkurona schrieb:

    Ach, doch nur 12 Millionen anstatt 6 Millionen?

    Menschenskinder.
    Du erzählst nicht einmal, was für hardware du hast.
    Ob sichtbar oder nicht, du berechnest sie trotzdem. Außerdem sehen wir nicht, wie du deine Triangles benutzt / zeichnest oder sonstiges.

    denk mal drüber nach.

    Er will damit sagen: "Sag uns deine Hardwarespezifikationen und zeig deinen verdammten Code." :p



  • Ich hatte dadrüber schon nachgedacht bevor ich die Frage gestellt habe.
    Irgendwie muss ich entscheiden welche Informationen ich euch mitteile und welche nicht. Ich bin überzeugt, dass meine Frage auch ohne genaue Kenntnisse meiner Hardware beantwortbar ist.
    Ich glaube nicht, dass hier irgendwer eine genaue Tabelle im Kopf hat wie viele Dreiecke mit welcher Hardware möglich sind. Ich kann mir da eher vorstellen, dass jemand eine ungefähre Vorstellung hat was möglich ist. Wenn es wesentlich mehr ist als in meinem Programm, dann kann man das sagen. Wenn es sich etwa in der Größenordnung von 12 Millionen Pixel pro 1/20 Sekunden bewegt kann man das auch sagen.

    Aber wenn es dir hilft, dann will ich dir diese Informationen natürlich nicht verweigern:
    intel core2 q6600, geforce 8800gtx 768mb, 4GB Ram

    Meinen Code will ich euch jetzt nicht antun, aber ungefähr so mach ich es:
    Ich habe 6 VertexBuffer in denen jeweils 1001*1001 Punkte gespeichert sind
    Dann habe ich noch 6*1000 Indexbuffer die jeweils mit hilfe eines 2*1001 großen Teilbereiches eines der Vertexbuffer ein 2000 Dreicke umfassendes "TriangleStrip" zeichnen.
    Kann sein, dass ich so jeden Vertex doppelt berechne, so gut kenne ich mich damit noch nicht aus.



  • Ich bin auch der Meinung das sich das ganze Unabhängig von deienr Hardware beantworten lässt, deswegen gabs von mir ja auch die simple Antwort oben, und bei den Vielen Bufefrn die du hast schiebst dua uch ganz schön was auf dem RAM rum. Wie makkurona ja bereits egsagt hat berechnest du alels was da ist, ob dus sehen kannst oder nicht, deine Hardware ist schlicht überlastet, bei 12Mio Polygonen kein Wunder, ich weis nichtmal ob man bei UT2003 soviele Polygone auf dem ganzen Bildschirm sehen kann, aber auf jedenfall soltest dus mal runterregeln für testzecke sind 1000 Polys für eine ansehnliche Kugel sicher genug und für ein Spiel würde ich ohnehin sehr viel weniger nehmen, denn je runder du ein Objekt haben willst desdo mehr Polygone brauchst du denn Runde Objekte ansich gibt es nicht.


  • Mod

    @Grohool die tabelle in meinem kopf sagt mir dass deine graphikkarten das doppelt leisten kann (sagt nvidia)

    @Xebov du kannst zwar eine meinung haben, aber irgendwie ist es seltsam diese zu aeussern ohne die umstaende zu wissen. jemand sagt 'ich brauche ne halbe stunde mit dem wagen nachhause, geht's schneller?' und du sagst 'dein motor ist voll ausgelastet", obwohl du nicht weisst, ob jemand autobahn oder stadt faehrt, ob er nen trabbi oder ferrari hat usw.
    die hardware ist schon sehr wichtig.



  • rapso schrieb:

    @Grohool die tabelle in meinem kopf sagt mir dass deine graphikkarten das doppelt leisten kann (sagt nvidia)

    @Xebov du kannst zwar eine meinung haben, aber irgendwie ist es seltsam diese zu aeussern ohne die umstaende zu wissen. jemand sagt 'ich brauche ne halbe stunde mit dem wagen nachhause, geht's schneller?' und du sagst 'dein motor ist voll ausgelastet", obwohl du nicht weisst, ob jemand autobahn oder stadt faehrt, ob er nen trabbi oder ferrari hat usw.
    die hardware ist schon sehr wichtig.

    Ja das stimmt schon aber alleine die Tatsache das jemand mit einer Kugel aus 6Mio (dann später auf 12Mio Polygone korrigiert) ankommt und fragt das es ruckelt und dann schreibt wenn er die Polygon zahl senkt läuft es flüssig läst schon gute Schlüsse zu das erstmal die Polygon zahl für das einzellne Objekt viel zu viel ist, ich gehe halt erstmal von dem was ich so kenne vom Offensichtlichen aus, und an dem Ansatz kann man sich ja dann weiterfragen wenn das zuviel ist ob da nicht dann irgendeine Berechnung ziemlich in die Knie geht, und da lasse ich die hardware außen vor, denn wenn bei mir was ruckelt probiere ich grundsätzlich ersteinmal rum was sich bei welchen Änderungen ändert und arbeite mich dann durch den Code, einige Dinge bei mir haben sich da shcon als Grobe Rechenfehler entpuppt und plötzlich ging alles, und da ichs elbst im Programmierbereich auch neu bin enke ich das gerad ebei so einfachen Sachen durchaus die Devise "Probieren geht über stuideren" eine gute Möglichkeit sein kann mal hinetr den Kullissen sich die Details anzusehen.



  • Zu viele Polygone. Schau mal hier: http://www.henkessoft.de/Spieleprogrammierung/Bilder/Strategie-Vorschau.JPG
    1,4 Mio. und nur noch 22 FPS. Bei einem Rechner mit 8800 sind das etwa 60-70 FPS. Also passt schon, was Du da erzählst. Abrüsten! 😃



  • Xebov schrieb:

    rapso schrieb:

    @Grohool die tabelle in meinem kopf sagt mir dass deine graphikkarten das doppelt leisten kann (sagt nvidia)

    @Xebov du kannst zwar eine meinung haben, aber irgendwie ist es seltsam diese zu aeussern ohne die umstaende zu wissen. jemand sagt 'ich brauche ne halbe stunde mit dem wagen nachhause, geht's schneller?' und du sagst 'dein motor ist voll ausgelastet", obwohl du nicht weisst, ob jemand autobahn oder stadt faehrt, ob er nen trabbi oder ferrari hat usw.
    die hardware ist schon sehr wichtig.

    Ja das stimmt schon aber alleine die Tatsache das jemand mit einer Kugel aus 6Mio (dann später auf 12Mio Polygone korrigiert) ankommt und fragt das es ruckelt und dann schreibt wenn er die Polygon zahl senkt läuft es flüssig läst schon gute Schlüsse zu das erstmal die Polygon zahl für das einzellne Objekt viel zu viel ist, ich gehe halt erstmal von dem was ich so kenne vom Offensichtlichen aus, und an dem Ansatz kann man sich ja dann weiterfragen wenn das zuviel ist ob da nicht dann irgendeine Berechnung ziemlich in die Knie geht, und da lasse ich die hardware außen vor, denn wenn bei mir was ruckelt probiere ich grundsätzlich ersteinmal rum was sich bei welchen Änderungen ändert und arbeite mich dann durch den Code, einige Dinge bei mir haben sich da shcon als Grobe Rechenfehler entpuppt und plötzlich ging alles, und da ichs elbst im Programmierbereich auch neu bin enke ich das gerad ebei so einfachen Sachen durchaus die Devise "Probieren geht über stuideren" eine gute Möglichkeit sein kann mal hinetr den Kullissen sich die Details anzusehen.

    Alles nette Schlüsse, aber warum wild rumspekulieren was es sein könnte, wenn man nachsehen kann woran es liegt?
    Bis zum letzten Posting auf der vorherigen Seite hat er ja noch nicht einmal gesagt wie er beim Rendern vorgeht und selbst jetzt sind noch sehr viele maßgebende Faktoren unbekannt.

    Das wichtigste ist jedoch fürs Erste einmal die Hardware, dann weiß man schonmal was der Hersteller für eine Durchsatzrate angibt. Und dass raspo sagt, dass sie doppelt so viel (also 12mio oder 24mio je nachdem von was er ausgeht) leisten kann zeigt ja eindeutig, dass es am Code liegt. Den uns der Threadersteller immer noch vorenthält.
    Auch die Tatsache, dass er nicht einmal weiß ob er nun 6mio oder 12mio Dreiecke rendert legt auch nahe, dass es bitter nötig ist den Code zu sehen um tatsächlich eine sinnvolle Aussage treffen zu können.



  • Naja. Wirklich relevant ist das ganze ja auch nicht.
    Weil mal eben ein paar Milionen Polys zu rendern ist eigl. keine Sache. In einem Spiel hast du da andere Probleme. Z.B Texturen setzen, Objekte bewegen/verändern, Animationen usw. Das ganze lohnt sich viel mehr zu optimieren, als möglichst viele Polys auf einmal zu rendern.


  • Mod

    [quote="S.T.A.L.K.E.R."]

    Das wichtigste ist jedoch fürs Erste einmal die Hardware, dann weiß man schonmal was der Hersteller für eine Durchsatzrate angibt. Und dass raspo sagt, dass sie doppelt so viel (also 12mio oder 24mio je nachdem von was er ausgeht) leisten kann

    um genau zu sein ist das limit bei 575MTri/s.

    zeigt ja eindeutig, dass es am Code liegt. Den uns der Threadersteller immer noch vorenthält.

    ja, solange wir garnicht wissen was genau passiert, ist Erhard Henkes' satirische einlage eigentlich die einzige herangehensweise 🙂

    Auch die Tatsache, dass er nicht einmal weiß ob er nun 6mio oder 12mio Dreiecke rendert legt auch nahe, dass es bitter nötig ist den Code zu sehen um tatsächlich eine sinnvolle Aussage treffen zu können.

    und ob man diese sieht oder nur transformiert oder .... diese faktoren koennen leicht das limit auf einen bruchteil herunter bringen.

    aber das ganze wird eigentlich kaum was bringen. das maximum erfaehrt man vom hersteller und 'praktisch' ist es nicht, welchen einsatz haette ein 12mio-poly-kugel-renderer?
    😕



  • rapso schrieb:

    aber das ganze wird eigentlich kaum was bringen. das maximum erfaehrt man vom hersteller und 'praktisch' ist es nicht, welchen einsatz haette ein 12mio-poly-kugel-renderer?
    😕

    Man schreibt doch öfter mal was "just for fun", das keinen großen Nutzen hat.
    Finde die Idee prinzipiell gar nicht so schlecht, wenn man mal sehen möchte was die eigene Grafikkarte so wegsteckt.
    Wobei natürlich auch nVidia ein Tool anbietet, das den aktuellen Durchsatz anzeigt, aber manchmal muss man einfach selber was schreiben 😉


Anmelden zum Antworten