SingleSurface
Übersicht

![]() |
FuchsiBetreff: SingleSurface |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
Nachdem man mir geraten hat SingleSurface Techniken anzuwenden hab ich mich voller Elan auf die Suchfunktion gestürzt,... und leider nichts gefunden. Ich will euch gar nicht um Code bitten, nur vielleicht einen Denkanstoß oder eine Erklärung. MfG Fuchsi |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
blubber... alle nehmen singlesurface immer so schnell in den mund. ich kann dir jetzt erstmal kaum weiterhelfen, da singlesurface ansich nur bedeutet, dass man statt mehrere entities und somit surfaces mit derselben textur zu benutzen, halt die objekte zu einem entity verschmilzt und nur ein surface benutzt, was besonders bei hohen objektzahlen einen enormen geschwindigkeitsschub bringt.
... hierfür benutzt man meistens surfacebefehle, wie du sie auf blitzbase.de in der befehlsreferenz findest. wenn du speziellere hilfe benötigst, musst du wohl auch spezieller angeben, was du machen möchtest ![]() |
||
MrKeks.net |
![]() |
Fuchsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab angefangen mich dafür zu interessieren, als ich zum Test 200 Cubes
erstellt hab, und die Framerate total eingebrochen ist. Mit Surface-Befehlen kann ich umgehen. (zB.: aus Vertexpunktien und Triangles ein Mesh erstellen, falls du das meinst.) |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
tjo, aber was willst du mit den cubes machen? das ist doch die frage ![]() |
||
MrKeks.net |
![]() |
Fuchsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich versuche, alle Cubes in einem Surface unterzubringen. | ||
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das ist klar ![]() ![]() ![]() Aber was soll mit den Cubes geschehen? Soll sich jeder einzelne drehen? DAS meint Mr.Keks. |
||
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter! |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab mich auch ein bischen damit beschäftigt, ich versuche es dir mal zu erklären:
Du erstellst am anfang ein mesh mit einem surface. Wenn du jetzt single surface objecte dazuerstellen willst ließst du alle vertices deines meshes aus und tust sie mit addvertex und add triangle auf dein surface. wenn du ein einzelnes löschen willst musst du mit clearsurface alle vertices deines großen surfaces löschen und alle noch existierenden neu draufschreiben. alternativ aknnst du auch immer eine bestimmte zahl "auf Vorrat" haben und die anderen wenn sie nicht ebraucht wrden mit VertexAlpha unsichtbar machen. |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Fuchsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Thx Godjee, hast mir sehr geholfen. | ||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 1200 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 |
||
MrKeks.net |
![]() |
PowerProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist ja wirklich cool. Das hilft auch mir ![]() Und besonders cool ist es, wenn man aus der 1200 eine 10.000 macht und dann die Leertaste drückt... |
||
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter! |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
es gibt ja leider ein maximum an vertices und triangles pro surface... | ||
MrKeks.net |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
was ein maximum? weisst du zufällig auch wo das liegt?
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das liegt bei 16384 Vertexpunkte Oder 16384 Triangles | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
64*1024 Vertices
Und je nach Grafikkarte 32*1024 Polygone oder 64*1024 Polygone |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
mh, gut zu wissen, da die entwicklung meiner SingleSurface Engine abgeschlossen ist und ich mich bald ans PartikelSystem machen wollte... also nicht zusehr übertreiben ![]() MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Partikelsysteme werden damit keine Probleme haben. Bei 20000 Partikeln geht eh so langsam der Saft ganz übel aus, weil du bei partikelsystemen die ganzen 40000 polygone jedes Frame neu an die Grafikkarte senden musst (bzw. die Vertices davon da sich ja nur deren Position ändern) und da kommen dann andere Faktoren rein die viel einschränkender sind als "maximalzahlen" ^^ Mag usern von 6800 nicht auffallen, aber der durchschnittliche user hat 200er karten und deren Bandbreite ist dann doch um einiges niedriger weswegen die bedeutend schneller abröcheln bei Partikelsystemen etc. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
- Zuletzt bearbeitet von Dreamora am So, Okt 15, 2006 17:48, insgesamt einmal bearbeitet
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, da könntest du recht haben, naja, nach dem ich For a better World beendet hab werd ich mich mal an nem Partikelsystem versuchen und dann einfach sehen, was bei rauskommt ![]() |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Black Spider |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei mir kommt schon "memory acces violation" wenn ich nur 1900 cubes erstelle...
gibt es ne möglichkeit zu checken, ob es noch gehen würde? |
||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Leider nicht.
Das einzige was du machen kannst, ist sinnvoll mit Polygonen umzugehen und Surfaces sinnvoll aufzuteilen. (denn alles auf einer ist auch nicht immer sinnvoll, da zb Alpha dann wegfällt und auch immer die gesamte Surface als "gerendert" markiert ist wenn nur ein teil davon im sichtbaren bereich ist. (bzw. bei mehreren surfaces auf dem gleichen mesh wirds noch schlimmer, da eigentlich das mesh bestimmt ob es gerendert wird oder nicht, nicht die surface) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn die Surface über den Bildschirm hinaus geht, wird jene dann trozdem ganz gerendert? Ich dachte immer die überflüssigen Polys werden "weggeklippt" | ||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group