Surface sortieren (renderreihenfolge ändern)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Silbersurfer

Betreff: Surface sortieren (renderreihenfolge ändern)

BeitragMo, Dez 31, 2012 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute

erstmal wünsche allen einen guten Rutsch ins neue Jahr...

nun zur meiner Frage

Ich möchte gerne eine art Sotierung der erstelten surface´s machen
das heist wenn ich z.b

Surface 1
Surface 2

erstellt habe wird surface 2 for surface 1 gezeichnet
wie kann ich jetzt die ausgabe auf dem Bildschirm ändern...

surface 2
surface 1

es hat jetzt ja nichts mit den Addvertex zu tun
habe keine möglichkeit gefunden surface zu löschen...

in diesen zusammenhang fand ich nur clearworld

kann mir hier einer weiterhelfen ?
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

bjh

BeitragMo, Dez 31, 2012 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab zwar davon keine ahnung, aber vielleicht kann man einfach die pointer auswechseln:

p1
p2

x=p1
p1=p2
p2=x

so in der art Wink
 

Silbersurfer

BeitragMo, Dez 31, 2012 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
so geht das leider nicht...

aber danke für die Antwort
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Xeres

Moderator

BeitragMo, Dez 31, 2012 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Entityorder Kann man die Zeichenreihenfolge bestimmen, mit ClearSurface ein Surface löschen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragMo, Dez 31, 2012 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest für jedes surface auch ein eigenes mesh verwenden.
dann kann man die schön sortieren.
 

Silbersurfer

BeitragMo, Dez 31, 2012 15:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres
Ich dachte das clearsurface den inhalt der surface löscht aber nicht die surface selber (Vertices ,Triangles)

Wie kann ich mit Entityorder auf eine einzelne surface in Mesh zugreifen?


bjh
das wäre ein gewaltiger geschwindigkeitsverlust......
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
  • Zuletzt bearbeitet von Silbersurfer am Mo, Dez 31, 2012 15:23, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragMo, Dez 31, 2012 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ClearSurface löscht den Inhalt, um das Surface selbst zu löschen fällt mir nur FreeEntity ein.
Du kannst nicht auf einzelne Surfaces mit EntityOrder zugreifen, du musst die Surfaces in einzelne Meshes stecken.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

tft

BeitragMo, Dez 31, 2012 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

leider ist dein vorhaben recht schwierig zu verwirklichen. Wie du schon richtig gesagt hast entscheidet
die reihenfolge der Erstellung eines surface in welcher reihenfolge diese beim rendern bearbeitet wird.
durch den ZBuffer ist es normalerweise nicht wichtig. Aber bei transparenten flächen wo das ZBuffer nur
mangelhaft arbeitet muss man von hand nachbessern.

Fieleicht erzählst du mal was du vor hast. Fileicht findet sich eine andere möglichkeit. EntityOrder regelt
die Zeichen reihenfolge von Entitys. Da sind alle Surfaces betroffen die Entity hat-

gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
 

Silbersurfer

BeitragMo, Dez 31, 2012 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
tft
Ja genau das meinte ich, Ich bastel sowohl an meiner singlesurface engine als auch an der 3D zu 2D engine

Xeres
und genau das ist mein Problem
in der Singlesurface geht es mit clearsurface, aber wie kann man das mit mehren surfaces lösen?
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Xeres

Moderator

BeitragMo, Dez 31, 2012 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich verstehe nicht, was du meinst. Du willst dich Zeichenreihenfolge mehrerer Surfaces ändern? Dann musst du jedes Surface in einen eigenen Mesh stecken.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Silbersurfer

BeitragMo, Dez 31, 2012 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres
frisst das nicht speed, dann kann ich auch Sprite nehmen wäre doch dann das selbe oder?
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Xeres

Moderator

BeitragMo, Dez 31, 2012 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Allein schon mehr als ein Surface zu benutzen macht das ganze weniger performant... Aber 1000 Quads per Surface ist immer noch 1000 mal besser als Blitz' 1 Sprite = 1 Surface Variante.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Silbersurfer

BeitragMo, Dez 31, 2012 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ok Xeres ich probiere das jetzt mal mit 1 mesh und einer surface aus danke für die Tipps
teste mal wieviel speed das zieht...

Ich hätte gern ne andere lösung aber mal sehen

gruss Silbersurfer
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

tft

BeitragMo, Dez 31, 2012 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

du wirst nicht umhinkommen das Object jeden Frame neu zu erstellen und die Surface in der Reihenfolge
zu erstellen die du brauchst. Das heist fiel rechnen, da du ja für jedes surface ein Pivot brauchst um die tiefen Position zu bestimmen. Aber soweit ich mich erinere sind Fiele Surface in einem Entity genauso langsam wie fiele Entity. Ich glaube 5000 sind bei 30 fps das maximum. Ausserdem gibts da noch die Vertex begrenzung
und das Triangle limmit. Das Child System ist glaube ich ganz gut .... damit läst sich eine Menge machen. Ich halte es für wenig sinnvoll diese zu bewerkstelligen solange es nicht wirklich nötig ist. Was mich aber fiel mehr interesiert wozu du das brauchst.
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!
 

Silbersurfer

BeitragMo, Dez 31, 2012 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
tft
Ja das stimmt soweit was du schreibst, ich habe es jetzt wie Xeres mir geraten hat gemacht, also für jede
neu erstellte surface ein eignes Mesh gemacht ergab bei mir keine Speedverlust..... super freu,spring Laughing

Zitat:
Was mich aber fiel mehr interesiert wozu du das brauchst.

Ich ersetzte damit die 2D befehle DrawImage,oval,line und rect u.s.w
also ähnlich wie draw3D....

Gruss Silbersurfer
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

PhillipK

BeitragMo, Dez 31, 2012 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Dennoch solltest du mit surfaces aufpassen.
Das sind die absoluten speedkiller Smile

Jede Surface MUSS einfach leistung fressen, allein wegen ihren eigenschaften. Das zu erklären, würde jetzt zu lange dauern, aber es sei dir geraten: Packe soviel es geht in eine surface, blende surfaces die du grade eh nicht sehen kannst aus und durchdenke von anfang an eine optimierung.
Grundsätzlich gilt, das jeder rechner ab ein paar hundert surfaces zusammenknickt Smile

Aber es kommt auch aufs ganze an: Planst du etwas großes, so sollte mehr rechenleistung für die Optimierung draufgehen, wie fürs rendern *grins* aber solange es stabil bleibt, ists in ordnung.

wie gesagt.. sollte es doch mal zu speedproblemen kommen: Erstmal nachschauen, wieviele surfaces existieren und ob da nicht was zu optimieren geht Smile

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Dez 31, 2012 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du wirklich nur dünne Linen über die 3D-Schnittstelle der Grafikkarte ausgeben möchtest, gibt es noch einen kleinen Trick...

Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

Local Timer=CreateTimer(58)
Local Camera=CreateCamera()
Local Mesh=CreateMesh()
Local Face=CreateSurface(Mesh)
Local Cube=CreateCube()
Local Light=CreateLight()
EntityFX Mesh,19

Local Gitter,Q
Local V0,V1,V2,V3

CameraClsColor Camera,96,96,96
PositionEntity Camera,-4,4,0
PositionEntity Cube,0,0,10
RotateEntity Light,20,-20,0

Const Size=40


For Q=-Size To Size
   V0=AddVertex(Face,Q,0,-Size)
   V1=AddVertex(Face,Q,0,+Size)
   V2=AddVertex(Face,-Size,0,Q)
   V3=AddVertex(Face,+Size,0,Q)
   VertexColor Face,V0,0,0,0
   VertexColor Face,V1,0,0,0
   VertexColor Face,V2,0,0,0
   VertexColor Face,V3,0,0,0
   AddTriangle Face,V0,V1,V0
   AddTriangle Face,V2,V3,V2
Next


MoveMouse 400,300


While Not KeyHit(1)
   
   RotateEntity Camera,MouseY()*0.2-20,-MouseX()*0.2,0
   
   CameraClsMode(Camera,1,1)
   WireFrame(0)
   RenderWorld()
   
   CameraClsMode(Camera,0,0)
   WireFrame(1)
   RenderWorld()
   
   WaitTimer(Timer)
   Flip 0
Wend
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Silbersurfer

BeitragMo, Dez 31, 2012 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
PhillipK

jo das mache ich auch soweit

z.b.

sterne=is_load_image("sterne.png",3)

danach einfach
for x=1 to 1000
is_draw_image sterne,rnd(800),rnd(600)
next
ist dann alles eine surface

hectic

jo das ist ja auch ne feine sache funzt gut bei mir und sieht auch echt geil aus danke für den tipp
ach ich habe jetzt auch alles in Bank´s gepackt
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

Silbersurfer

Betreff: Sotieren funtz nun sehr gut über EntityOrder

BeitragSo, Apr 21, 2013 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Dank Xeres Rat, kann Ich über EntityOrder schön die Renderreinfolge für die Surface´s einstellen
das Sotieren in der Surface ist nicht nötig da es sich wie 2D verhält (letzte überdeck alle vorherigen)

Animation laufen auch super und zuverlässig

In großen und ganzen ähnelt es sehr der Draw3D von hectic soll aber auf keinen fall eine Konkurrenz sein, Ich sehe das ehrer als Lern effekt an.
Dank hectic habe viel über Bank´s gelernt Very Happy an dieser stelle danke hectic

hier die derzeitige befehlsübersicht.....
Arrow Function is_rect (image,x#,y#,w#,h#,fill=True,angle#=0,drehpunktx=0,drehpunkty=0,size#=2)
Arrow Function is_line (image,x#,y#,x1#,y1#,size#=2)
Arrow Function is_Oval (image,X#, Y#, W#, H#, Fill=True,angle#=0, StepSize=10,Inline#=2)
Arrow Function Is_load_image (datei$,modus=3)
Arrow Function Is_Create_image (w,h,modus=3,blend=2)
Arrow Function Is_Draw_Image (image,x#,y#,iframe=0)
Arrow Function Is_Image_grab (image,x#,y#,w#,h#,neu=1)
Arrow Function is_image_grab_anim (image,anzahl,tx#,ty#,tw#,th#,sw#,sh#)
Arrow Function is_image_hotspot (image,hotspotx,hotspoty)
Arrow Function is_image_rotate (image,angle#)
Arrow Function is_image_scale (image,scale#)
Arrow Function is_image_fx (image,fx)
Arrow Function is_image_swapu (image,iframe=0)
Arrow Function is_image_swapv (image,iframe=0)
Arrow Function is_Image_color (r,g,b,alpha#=1)
Arrow Function Is_Image_Alpha (alpha#)
Arrow Function Is_Vertex_Color (Image,vertex,r=0,g=0,b=0)
Arrow Function is_image_order (image,mode)
Arrow Function is_image_blend (image,mode=1)
Arrow Function is_image_hide (image)
Arrow Function is_image_show (image)
Arrow Function Is_Rotate_Textur (image,angle#)
Arrow Function Is_Move_Textur (image,is_x#,is_y#)

[img] http://home.arcor.de/silbersur...engine.jpg [/img]

Und zu guter letzt ein download als test ob diese Engine auch bei euch richtig funtz http://home.arcor.de/silbersur...engine.zip
Würde mich auf Antworten sehr freuen !

Gruß Silbersurfer
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group