Spiel = langsam³
Übersicht

AMDBetreff: Spiel = langsam³ |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
ich glaub von solchen threads gibts schon mehrere wo von "FPS-Einbrüchen" die Rede ist, hab aber i-wie keinen weiter gefunden außer eben in der FAQ-Sektion aber ich glaub net das des was gegen mein problem ist :/. 1.Problem: Was mich ja richtig geschockt hat war als ich heute merkte das wenn ich vor nem Baum steh sind die FPS ca.90 aber wenn ich dann nach vorne drück sinken die FPS gewaltig auf ca.66 FPS. Ist das normal? des hab ich so mit der steuerung gemacht: Code: [AUSKLAPPEN] If KeyDown(200) MoveEntity camera,0,0,2
2.Problem: Wenn ich mich meinem Gegner nähere fängt ja mein gegner an die KI durch zu führen und plötzlich bekomm ich FPS-Einbrüche auf ca.45FPS-35FPS. Worauf sollte ich da vll besonders achten? Danke jetzt schon mal für jede hilfe MfG |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
*in AMD's Signatur schau*
Dein Rechner schafft nur 90 FPS bei einem Baum? oO Ich hatte mal das Problem, dass bei vielen Polygonen das Picking sehr viel Leistung gekostet hat, je nachdem, an welcher Position die Kamera platziert war. Zeig doch mal etwas von deinem Code oder sag die Anzahl der Polygone in den Meshes. Vielleicht hilft das weiter. |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ähm insgesamt sinns 5000 Bäume^^ und ein Baum hat 1256 Polygone und ich hab aber auch schon "Trisrendered" in meinem Code damit nur das gerendert wird was die camera sieht.
und ich hab des jetzt auch bei nem baum in der nähe des gegners getestet also hat der gegner auch die KI gestartet nebenbei MfG |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn deine bäume nicht single surface sind kannst du das vergessen.
Das wären 5000 Surfaces, das kann und wird nicht gehen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: ähm insgesamt sinns 5000 Bäume^^ und ein Baum hat 1256 Polygone und ich hab aber auch schon "Trisrendered" in meinem Code damit nur das gerendert wird was die camera sieht.
Trisrendered gibt doch nur die Anzahl der gerenderten Triangels zurück, oder irre ich da ?!? Wie willst du damit Bäume ausblenden? Benutz lieber HideEntity für alle Bäume die zu weit weg sind ![]() Und 5000 Bäume. Und jeder sicherlich noch jeder auf einem Surface. Das ist kein Wunder mein Freund^^ |
||
Twitter
Download Jewel Snake! Windows|Android |
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Singel Surface?
Ist das wenn mehrere Bäume in einem Modell sind und wenn ich zum Beispiel 2 Bäume in einem Modell habe das ich nur noch 2500 Bäume laden muss? @Tankbuster ich ging nach dem sample von Trisrendered aus da is ja die camera und dann wird da n wert angezeigt und zwei dreiecke und ein dreieck sieht die camera und mal wieder nicht und dem entsprechend wird der wert auch wieder kleiner oder größer.... MfG |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nutz bitte die Bordsuche.
Single Surface zu erklären übersteigt Anfänger Niveau bei weitem fürchte ich. Aber nur zur Referenz: Bei etwa 1000 Surfaces ist Sense mit sinnvoll, das heisst, dass du dir da etwas sinnvolleres überlegen musst wie Mesh Clustering und dergleichen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: @Tankbuster
ich ging nach dem sample von Trisrendered aus da is ja die camera und dann wird da n wert angezeigt und zwei dreiecke und ein dreieck sieht die camera und mal wieder nicht und dem entsprechend wird der wert auch wieder kleiner oder größer.... Genau! Der Wert wird kleiner, weil das eine Dreieck wahrscheinlich versteckt wird. Dadurch wird logischerweise nur das eine Dreieck gerendert, und nicht mehr beide ![]() Zitat: Single Surface zu erklären übersteigt Anfänger Niveau bei weitem fürchte ich.
Hab ich mir ehrlich gesagt auch noch nie angeschaut. Deshalb kann ich das nicht so recht beurteilen. Aber ich dachte früher auch Bloom und Blur ist total schwer. Nachdem ich mich einen Tag nur damit beschäftigt hab konnte ich das problemlos. Es kommt eigentlich nur drauf an, ob man alles versteht, was in Tuts u.ä. beschrieben ist. |
||
Twitter
Download Jewel Snake! Windows|Android |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dafür gibts nur keine tutorials
Aber es gibt umzählige beispiele. Das elementare Grundlagenbeispiel wo Single Surface ein Muss ist sind Partikel Systeme. Simpel gesagt: Du kombinierst die Objekte zonenabhängig, so dass zb in einem 100x100 gebiet nimmer 50 bäume einzeln stehen sondern ein mesh (addmesh lässt da grüssen ![]() Die alternative dazu ist dann das was das kürzlich im englischen Forum gezeigte Foliage System macht: Clustering aber mit dynamischen Surfaces die angepasst werden je nach detail level etc. Wenn du übrigens dichten wald willst ist das sinnvoller, denn dichter Wald erzwingt explizit LoD bei den Bäumen damit die, die weiter weg werden, auf möglichst wenige Polygone reduziert werden können ohne mies auszusehen. Der Grund für das Single Surface oder low level surface handling ist übrigens der, dass jedes Surface einen Texture Switch erzwingt, was auf der Grafikkarte die etwas vom langsamsten ist (die langsamsten sind shader gebundene switches wie RT und shader opcode). Deswegen nutzt man single surface oder wenige surfaces um das zu optimieren. In anderem zusammenhang spricht man dabei auch von Batching. Hoffe das hilft dir. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Simpel gesagt: Du kombinierst die Objekte zonenabhängig, so dass zb in einem 100x100 gebiet nimmer 50 bäume einzeln stehen sondern ein mesh (addmesh lässt da grüssen Smile )
bei mir kommt da net mal n richtiger ansatz zu stande ![]() Code: [AUSKLAPPEN] Die alternative dazu ist dann das was das kürzlich im englischen Forum gezeigte Foliage System macht: Clustering aber mit dynamischen Surfaces die angepasst werden je nach detail level etc.
kann man des net auch ersetzen dadruch das die entfernten Bäume einfach gehided werden? ach ja und um dieses sample zu finden wo muss ich da im Englisch Forum suchen? Im Code-Archiv? Code: [AUSKLAPPEN] Single Surface zu erklären übersteigt Anfänger Niveau bei weitem fürchte ich.
gibts vll net doch i-wo n sample wo ganz viele cubes z.b. erstellt werden aber die FPS trotzdem hoch sind? oder kann mir einer sowas schnell schreiben oder is des doch soo viel aufwand? Oder kann mir jemand vll genauer erleutern wie so etwas aufgebaut ist mit den dazugehörigen Befehlen? bin dankbar für jede hilfe! MfG |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Sample im englischen forum ist im ShowCase board und ist ein kommerzielles System.
Prinzipiell: wenn du schon meshes hast, mit AddMesh zusammen fügen. Ansonsten mit den CreateMesh, CreateSurface, AddVertex, AddTriangle Befehlen. ansonsten: schau dir die partikelsysteme oder gras / foliage systeme an die Single Surface sind (gibt davon einige mit source) und überleg dir wie du das mit den bäumen machen kannst. Ein fertiges Gratissystem oder auch nur beispiele dafür gibt es nicht. Da das LoD Handling auf möglichst effizientem Niveau keine simple Sache ist. Hiding geht prinzipiell aber bringt nur bedingt was denn mehr als 40-50 kannst du dennoch nicht sichtbar haben auf einmal unter normalen bedingungen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
also ich hab noch weng geforscht und gefunden ![]() ![]() ich hab es hier gefunden: https://www.blitzforum.de/foru...hp?t=20181 Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SetBuffer BackBuffer() cam=CreateCamera() cube1 = CreatePivot() ; parent für all die multisurfacecubes cube2 = CreateMesh() ; mesh für das einzelne cube-surface surf = CreateSurface(cube2) ; surface für all die cubes ; ganz viele zufällig positionierte und gedrehte cubes erstellen For i = 0 To 2000 x = Rand(-20,20) y = Rand(-20,20) z = Rand(-20,20) c = CreateCube(cube1) PositionEntity c,x,y,z EntityColor c,255,200,200 RotateEntity c,Rand(360),Rand(360),Rand(360) ;cube in das singlesurfacemesh reinkopieren AddToSurface(c, surf,cube2) Next While Not KeyDown(1) If KeyDown(57) ; wenn leertaste gedrückt wird, wird das singlesurfacemesh gerendert, sonst werden viele surfaces gerendert HideEntity cube1 ShowEntity cube2 Else ShowEntity cube1 HideEntity cube2 EndIf TurnEntity cam,0,.1,0 ms = MilliSecs() RenderWorld Text 0,0,"RenderTime: "+(MilliSecs()-ms) Flip Wend Function AddToSurface(mesh, surf,singlesurfaceentity) Local vert[2] For s = 1 To CountSurfaces(mesh) surface = GetSurface(mesh,s) For i = 0 To CountTriangles(surface)-1 For i2 = 0 To 2 oldvert = TriangleVertex(surface,i,i2) TFormPoint VertexX(surface,oldvert),VertexY(surface,oldvert),VertexZ(surface,oldvert), mesh,singlesurfaceentity vert[i2] = AddVertex(surf,TFormedX(),TFormedY(),TFormedZ(),VertexU(surface,oldvert),VertexV(surface,oldvert)) Next AddTriangle(surf, vert[0], vert[1], vert[2]) Next Next End Function ich glaube mit dem sample lässt sich einiges anfangen hoff ich. Aber meine erste frage gleich: warum bringt mir der Compiler ne fehlermeldung ab 1900 Cubes? MfG |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was für ne Fehlermeldung kommt denn ?? 0.o Bei mir gehts problemlos. Sicherlich ein Hardware-Prob | ||
Twitter
Download Jewel Snake! Windows|Android |
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ab 2000 Cubes "Memory Acces Violation" bei Renderworld
ach ja aber erst wenn man leertaste drückt! |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: wenn leertaste gedrückt wird, wird das singlesurfacemesh gerendert, sonst werden viele surfaces gerendert
Das sollte alles klären. Vielleicht wurde die maximale Zahl der Verticles auf dem Surface überschritten ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm anscheinend kann man i-wie zwischen etwas wählen.
For i2 = 0 To 2 AddTriangle(surf, vert[0], vert[1], vert[2]) wenn ich z.b. die 2 zu einer 1 mach dann kann ich mehrere mesh nehmen aber net wirklich viel mehr... ich werds auf jeden fall weiter untersuchen .... MfG |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
64535 ist die Maximale Anzahl Polygone und Vertices in einem Mesh.
Auf älteren Karten (GF4 MX zb) ist die Polygonzahl sogar nur 32767 maximal. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sorry wenn ich nerve aber was willst du mir damit sagen?
das es an der Grafik-karte liegt oder das es schon in BB so eingebaut ist das ein mesh so viele polygone haben darf? MfG Edit: ups ich hätte vll mal zu ende lesen solln bei dem link den ich oben gepostet habe. da wurde ja deutlich gemacht das man nicht höher machen kann ![]() |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
AMD |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
da ja hier davon die Rede war das es ein maximum an triangles pro sufaces gibt hab ich mir gedacht mach ich halt einfach noch nen surface^^ geht des überhaupt? und ja ich weiß jetzt langsam mal des des net leicht is ![]() also hab ich einfach mal versucht noch nen surface für die cubes zu erstellen. des hab ich so probiert: Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SetBuffer BackBuffer() Global fpsrate, loops, fpstime cam=CreateCamera() PositionEntity cam,1,5,1 cube1 = CreatePivot() ; parent für all die multisurfacecubes cube2 = CreateCube() ; mesh für das einzelne cube-surface surf = CreateSurface(cube2) ; surface für all die cubes surf1 = CreateSurface(cube2);--- Hier hab ich den 2ten Surface erstellt ; ganz viele zufällig positionierte und gedrehte cubes erstellen For i = 0 To 1219 x = Rand(-20,200) y = 0 z = Rand(-20,200) c = CreateCube(cube1) PositionEntity c,x,y,z ScaleEntity c,1,1,1 EntityColor c,255,200,200 ;cube in das singlesurfacemesh reinkopieren AddToSurface(c, surf,surf1,cube2);---- Hier hab ich den 2ten Surface mit reinkopiert Next boden = CreateMesh() EntityColor boden,20,70,255 PositionEntity boden,-20,-2,-20 ScaleEntity boden,200,1,200 AddMesh c,boden While Not KeyDown(1) RotateEntity c,0,1,0 RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0 MoveMouse 512,384 If KeyDown(200) MoveEntity cam,0,0,0.1 If KeyDown(208) MoveEntity cam,0,0,-0.1 If KeyDown(57) ; wenn leertaste gedrückt wird, wird das singlesurfacemesh gerendert, sonst werden viele surfaces gerendert ShowEntity cube2 HideEntity cube1 Else ShowEntity cube1 HideEntity cube2 EndIf ms = MilliSecs() RenderWorld Text 0,0,"RenderTime: "+(MilliSecs()-ms) Text 0,10,"FPS: "+fps() Text 0,20,"Mesh-CountSurfaces: "+CountSurfaces(c) Flip 0 Wend Function AddToSurface(mesh, surf,surf1,singlesurfaceentity);---- hier hab ich den auch mit rein Local vert[2] For s = 1 To CountSurfaces(mesh) surface = GetSurface(Mesh,s) For i = 0 To CountTriangles(surface)-1 For i2 = 0 To 2 oldvert = TriangleVertex(surface,i,i2) TFormPoint VertexX(surface,oldvert),VertexY(surface,oldvert),VertexZ(surface,oldvert), Mesh,singlesurfaceentity vert[i2] = AddVertex(surf,TFormedX(),TFormedY(),TFormedZ(),VertexU(surface,oldvert),VertexV(surface,oldvert));--- da hier ja was von "Surf" steht hab ich vert[i2] = AddVertex(surf,TFormedX(),TFormedY(),TFormedZ(),VertexU(surface,oldvert),VertexV(surface,oldvert));---- hier des kopiert und Surf1 draus gemacht Next AddTriangle(surf, vert[0], vert[1], vert[2]) Next Next End Function Function fps() loops = loops+1 If MilliSecs() - fpstime > 1000 Then fpsrate = loops loops = 0 fpstime = MilliSecs() End If Return fpsrate End Function aber dann kommt ne fehlermeldung wenn man die leertaste drückt obwohl ja noch gar net soo viele cubes erstellt worden sind. "Memory Acces violation" |
||
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC: AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB..... Bildschrim mit 22 Zoll und 5msk Übertragungszeit...... Mein BaumMap Tutorial: http://www.blitzforum.de/forum...hp?t=26341 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Noch ne surface interessiert niemanden.
Wie ich geschrieben habe ist die Beschränkung PRO MESH nicht pro Surface. Da Meshes a Block an die Grafikkarte gehen, nicht Surfaces, zählt die Gesamtzahl des Polygone und Triangle des Meshes. Surfaces sind nur dazu da um einem Block von Geometriedaten mehrere Texturen/Materialien zuweisen zu können. Alles in allem solltest sowieso nicht soviele Polygone in ein Objekt reinhauen. Der Grund ist simpel: Ist nur der kleinste teil des Mesh Boundingvolumes im Viewfrustrum wird das gesamte Mesh gerendert! Egal ob im Sichtbereich oder nicht. Kannst dir vorstellen wie dumm die Idee dann ist, wenn man es fröhlich bis zum Maximum zupflastert. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group