Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » Nur das zeichnen, was man sieht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
20.12.2005, 19:27 Uhr
Oliver
S2-Pixelgeneral


In einem 2D-Spiel nimmt die meiste Zeit ja das Mappen der Textur(en) in Anspruch und nicht das Ausrechnen von irgendwlechen Koordinaten, weil es ja nichts groß zu rechnen gibt. Trotzdem gehen die FPS ganz schön runter auf ca. 300 fps wenn sozusagen der ganze Bildschirm in 1280x1024 ausgefüllt ist. Ja, das ist sicher nicht wenig, das Problem ist nur, dass auf die nackte Landschaft noch viele Objekte draufkommen (Gebäude, Bäume, etc.) und ggf auch noch Fenster (also Menüs), falls welche offen sind. Dann kanns ganz schnell in den Keller gehen. Bloß wird da vieles überdeckt, man sieht vor lauter Bäumen und Gebäuden z.B. nicht mehr viel Landschaft und mehrere Fenster überdecken das gesamte Spielfeld, was dann alles gar nicht gezeichnet werden muss. Gibts in OpenGL irgend ne Möglichkeit das zu erkennen oder dass es das selbst erkennt? Wenn ich z.B. ne OpenGL-App im Window-Mode betreibe und nen anderes Fenster drüberschiebe, erkennt er das ja auch, weil die fps schlagartig hochgehen.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.12.2005, 19:52 Uhr
xXx
Devil


culling...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.12.2005, 22:09 Uhr
Drager



also es gibt , back-face-culling , dass kann opengl selber, wenn man die dreiecke alle in der richtigen reihenfolge zeichnet.. das entlastet aber nur die rasterisierung, nicht die vertex einheit... (wird dir jetzt wenig bringen, wenn du kaum 3D-objekte benutzt.)

was ich empfehlen kann und viel bringt : frustum-culling (siehe google) dies muss man aber manuell per cpu machen.. kann opengl also nicht von selbst... im 2D kann man das aber noch einfacher handhaben (schau doch einfach ob ein objekt ausserhalb des bildschirm liegt) indem du den x und y wert mit den bildschirm breite /höhe vergleichst und gegen 0/0...


das mit den überdecken (occlusion culling), da gibts auch einige algorithmen.. z.b. hierachicle z-test (können glaub ich die neuen ati karten.. von selbst..)

für deinen fall , fällt mir jetzt wenig ein, was man da einfach und sinnvoll einsetzen kann...

also frustum culling, wär was.. aber eigendlich brauchst du occlusion culling, da bei dir ja das problem das überzeichnen ist... such doch einfach mal vielleicht gibts da was, was für dein problem passt (denke mal da gibts bestimmt einige optimierungen für 2D)

Dieser Post wurde am 20.12.2005 um 22:13 Uhr von Drager editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.12.2005, 14:04 Uhr
Oliver
S2-Pixelgeneral


Hmm, aber eigentlich gehts mir ja nicht darum, was im Sichtbarkeitsbereich liegt oder nicht, weil was sich sozusagen außerhalb des Bildschirms befindet, zeichne ich schon nicht. Das Problem ist halt einfach, dass es viele Objekte gibt, die sich ganz oder teilweise überdecken. Wenn ich nen Z-Buffer verwende, zeichnet der dann nicht, was weiter hinten liegt?

http://de.wikipedia.org/wiki/Sichtbarkeitsproblem
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.12.2005, 14:44 Uhr
BoBtheREapER
kein job für nen BoB


wieso nen z buffer? zeichnest du das ganze 3d oder 2d?
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.12.2005, 16:19 Uhr
Oliver
S2-Pixelgeneral



Zitat:

In einem 2D-Spiel....


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.12.2005, 16:34 Uhr
mmc20
puss in boots


hi, ich hab jetzt nicht die ahnung von ogl, ich würd das mit ner liste von rects lösen, also ne liste erstellen von rects(objecten) welche auf dem screen sind, und dann bei jedem teil was du zeichnest checken ob es unter einem rect in der liste liegt (bzw. von diesem völlig überdeckt wird).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.12.2005, 16:35 Uhr
Oliver
S2-Pixelgeneral



Zitat von mmc20:
hi, ich hab jetzt nicht die ahnung von ogl, ich würd das mit ner liste von rects lösen, also ne liste erstellen von rects(objecten) welche auf dem screen sind, und dann bei jedem teil was du zeichnest checken ob es unter einem rect in der liste liegt (bzw. von diesem völlig überdeckt wird).


Das Problem ist, dass 1. die Landschaft aus Dreiecken besteht und 2. die meisten Bilder transparente Stellen haben.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.12.2005, 21:38 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


z-test macht ogl doch schon von selbst, zeichnet nur das vorderste element bzw das was sichtbar wäre. haste das texturenculling auf "front" gestellt? dann sollte es evtl schneller sein, nur kannste dann die textur nicht einfach "von hinten" betrachten (also gespiegelt) da sonst der higru schwarz bzw durchsichtig ist.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.12.2005, 13:51 Uhr
Oliver
S2-Pixelgeneral



Zitat von FloSoft:
z-test macht ogl doch schon von selbst, zeichnet nur das vorderste element bzw das was sichtbar wäre.


Ja, wenn ich den Z-Buffer aktiviere, zeichnet er die, die exakt übereinander liegen nicht, aber wenn sie sich z.B. zur zum Teil überdecken, passiert irgendwie nichts.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: