Was ist SingleSurface?

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

 

.Yukito.

Betreff: Was ist SingleSurface?

BeitragDi, Apr 13, 2004 9:41
Antworten mit Zitat
Benutzer-Profile anzeigen
viele fragen in letzter zeit, was ist denn eigentlich singlesurface? damit das jetzt mal hier steht schreibe ich es nun mal rein.

SingleSurface (engl.) = EinzigeOberfläche (dt.)

das heißt, alles (meistens sind es sprites) wird auf eine surface projeziiert. wenn man sprites nimmt, hat man bei 1000 sprites 1000 surfaces mit jeweils 6 vertices. bei singlesurface hat man bei 1000 sprites 1 surface mit 1000 quads mit wahlweise 6 oder 4 vertices. eine surface lässt sich viel schneller berechnen als mehrere. so geht, wie particle candy im vergleich zu andren sprite particle engines die framerate nicht bei etwa 1000 particlen schon in den keller, sondern hält ein bisschen mehr aus.

der umgang mit single surfaces ist natürlich ein wenig schwieriger, denn es gibt keine befehle wie deletevertex oder deletetriangle. entweder entscheidet man sich dafür, die surface komplett zu löschen und dann alles neu zu zeichnen, oder die alten vertices (triangles) zu recyclen (bei ner particle engine also neu emittieren lassen). beim recyclen besteht das problem, das wenn man einmal bei 4000 war, man da nicht wieder weg kommt. daher ist das neuzeichnen zu empfehlen, zumal der befehl vertexcoords auch net der schnellste ist.

zu beachten ist hier, das surfaces ein limit an vertices haben. dieser liegt irgendwo bei 32.000. danach gibt blitz einen fehler bei renderworld aus und das programm hört auf zu laufen. für solche fälle sollte man eine funktion haben, die aufpasst, das sowas nicht passiert. auch könnte man hier darüber nachdenken, ob man nicht dann eine weitere surface erstellt (was aber im widerspruch zu SINGLE surface stehen würde, aber der zweck heiligt hier die mittel...)

[EDIT] auf inarie's richtigen beitrag... Smile
natürlich kann sich auf einem mesh nur eine wirkliche textur befinden. d.h. wenn man möchte das beispielsweise partikel anders aussehen, müsste man alle partikel texturen in einer einzigen datei speichern. mit texture coords kann man dann schön nur bestimmte ausschnitte anzeigen lassen...

[EDIT2] auf edit bezogen
was eine andere möglichkeit wäre, ist, für jeden emitter ne surface zu erstellen die dann einzeln texturiert werden kann. dies ist nützlich bei sehr detailreichen partikeln, da irgendwann auch eine textur die grenzen erreicht hat... hier wäre dann bei particle trails dann wieder der effekt, das auf dauer dann doch mehr surfaces entstehen und es dann nicht wirklich mehr single surface ist... so verliert man einiges an performance und (meiner meinung nach) sollte man dann auch nicht mit "das ist single surface" rumprahlen...

so, hoffe das ist nun klar geworden... Smile
  • Zuletzt bearbeitet von .Yukito. am So, Jun 13, 2004 19:35, insgesamt 3-mal bearbeitet

Mr.Keks

BeitragDi, Apr 13, 2004 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hinzuzufügen wäre, dass ein Surface auch immer nur ein Material (Brush) haben kann. Also müssten alle Partikel dasselbe benutzen. Will man verschiedene Texturen für die Partikel, muss man entweder mehrere Surfaces erstellen oder mittels den UV-Koordinaten der Partikel eine Animtexture faken!

Weitere Anmerkung: Singlesurface führt gerne mal zu Z-Buffer-Problemen!
MrKeks.net

ChrisAttack

BeitragMo, Jun 21, 2004 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
geht doch!!! Very Happy
http://www.blitzbasic.com/code...p?code=437
B3D
MSVC++
DX9SDK
 

Weazle25

Betreff: Re: Was ist SingleSurface?

BeitragMo, Jun 21, 2004 23:53
Antworten mit Zitat
Benutzer-Profile anzeigen
@ .Yukito.

Also mir hat Dein "Tutorial" nicht geholfen denn da fehlen noch zu viele Sachen.

1. Wie erstellt man Singlesurfaces?
2. Wann sollte man auf Singlesurfaces verzichten bzw. diese herkömmlichen Methoden (z.B. Sprites) vorziehen?
3. Welche Besonderheiten gibt es?
4. Welche Nachteile gibt es?

Und es gibt sicher noch mehr Fragen die hier nicht beantwortet wurden.
Am Besten wäre es gewesen wenn Du Singlesurfaces an einem allgemeinen Beispiel erklärt hättest.
Dann könnte man sicher mehr mit Deinem Tutorial anfangen.


Gruss
Weazle

PS: Mein Posting ist aber nicht böse gemeint.
 

Dreamora

BeitragDi, Jun 22, 2004 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
1. mesh = createmesh
surf = createsurface( mesh )

fertig


2. wenn du ein 2D spiel machen willst oder etwas wo das culling zum einsatz kommt, dann sind sprites bzw. mehrere surfaces besser, da nur ganze surfaces gecullt werden können.

3. Du kannst keine Entity Befehle nutzen um irgendwas auszurichten. Du musst direkt mit den Vertices und Triangles arbeiten

4. mehr als 32k poly sind nicht möglich
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

orpheus_2003

Betreff: Frage

BeitragFr, Sep 25, 2009 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ist es klar.

Was mir noch nicht klar ist:
Kann ich ein momentanes Game welches auf Drawimage usw. aufbaut auch in SingleSurface machen um den Speed zu beschleunigen?
Oder benutzt man SingleSurface nur für Partikeleffekte und dergleichen?

Was ich mitbekommen habe müssen ja die Sprites immer die gleichen sein auf der Surface?

Oder zeichne ich Sprites, leg als Texture z.B. ein Tilegrafik drauf?

Das wäre für mich noch eine Information die ich bräuchte.
GazerStar - the beginning
http://gazerstar.lexigame.de/
Wizard (Worktitel)
http://wizard.lexigame.de

Xaymar

ehemals "Cgamer"

BeitragFr, Sep 25, 2009 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Draw3D macht exakt das was du beschrieben hast, in 3D mit singlesurface
(nur das es keine sprites sind Wink )
Edit:
Natürlich musst du für jede Tilegrafik ein eigenes Surface haben, oder alle tiles auf derselben Texture haben
Warbseite

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group