3D Gui - mein ansatz richtig?

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Lunatix

Betreff: 3D Gui - mein ansatz richtig?

BeitragMi, Sep 06, 2006 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
hio.

Ich woltle mal eine 3D Gui machen und bin auch schon fleissig dabei....
nur bin ic mir nich sicher, ob ich alles richtig mach.

-> Procedure :

Gui Initialisieren, Camera erstelle, Style laden (brushes, z.b. Fenster Title Rechts, links, mitte(mitte wird lang gezogen, rest bleibt so)

CreateWindow("bla",0,0,640,480)
-> um alles scalable zu machen, und damit nix gestreckt wird, werden pro reihe (Titel leiste,menu leiste,fenster top,fenster mitte, fenster ende) 6polys erstellt bzw 12 vertices, die globalen surfaces mit entsprecheneder brush zu gefügt werden (also gibt es für ALLE fenster 5x6=30Surfaces).

UpDate -> wenn ein fenster verschoben wird, oder sonst etwas passiert, was neuberechnung der gfx veranlasst :

jedes fenster einzeln auf den backbuffer rendern, mit copyrect an entsprechende stelle auf Gui image buffer kopiren.

Als letztes wird dieses GuiImage gezeichnet.

aber ich glaub, das kann man anders machen... bloss wie ?
(FPS : leerlauf : 260fps, rendern : 150-160fps)
Full::
user posted image

Wire::
user posted image
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Schranz0r

BeitragMi, Sep 06, 2006 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Schaut gut aus, aber was ist der sinn einer 3D GUI, jetzt speziel die Windows?
Kannst mich mal aufklären, was da dein gedanke ist?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!HAUPTSACH et kost VIEL!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Lunatix

BeitragMi, Sep 06, 2006 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
z.b. Ingame guis brauchen unbedingt 3D (jedenfalls bei 3D Games) finde ich, weil sonst is das lahm...

Und ich bin numal sehr gut in 3D (jaja ich geb jetz mal an xD) und deswegen mag ich auch noch Gui in 3D proggen....

so nebenbei : 3D is schneller als 2D ^^

sie mag ja einigermassen gut aussehen, aber is wohl warhscheinlich noch zu lahm....

x-pressive weiss wie dasgeht.... xDxDxD
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

D2006

Administrator

BeitragMi, Sep 06, 2006 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, kenne mich da jetzt nich so gut aus, ...

... aber ich würde genau 2 Polygone pro Fenster nehmen. Rahmen, Titelleiste und alles kommt auf ne Textur.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Jan_

Ehemaliger Admin

BeitragDo, Sep 07, 2006 7:48
Antworten mit Zitat
Benutzer-Profile anzeigen
joa, so wie du es machst, ist 3D sicherlich nicht schneller als 2D
between angels and insects

aMul

Sieger des Minimalist Compo 01/13

BeitragDo, Sep 07, 2006 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wärs denn mit SingleSurface? Ich hab bei meinem kleinen Spiel ca. 300 Polys, welche jeden Frame neuerstellt werden, und immer noch ca 500FPS(natürlich würds ohne den ganzen anderen Schnickschnack den das Spiel hat noch schneller laufen)...
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

Dreamora

BeitragDo, Sep 07, 2006 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würds noch net ma jeden Frame neuerstellen. Sondern nur wenns nötig ist. Damit müsstest du schon recht speed rausholen.
Was man bei 3D einfach nicht vergessen darf, ist das man nicht auf die Idee kommt auf TextureBuffer zu zeichnen (ausser mit writepixel (fast))
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Lunatix

BeitragDo, Sep 07, 2006 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ööööhm.... ich glaub einige hams ned ganz kapiert ::

1. es ist Single surface, für jeden fenster teil eins - heisst : Titelleiste ALLER fenster eine surface, bzw 3, links rechts mitte und der rest auch so.

Und alles auf eine texture zeichnen : wie soll das bitte gehen? fenster : 640*480 , texture geht aber nur 512*512.... wie soll das gehen?

Ach und Dreamora : ich sagte doch, nur wenns unbedingt nötig is, wird alles neu auf ein image gezeichnet und dieses image wird jeden frame eingezeichnet.
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

aMul

Sieger des Minimalist Compo 01/13

BeitragDo, Sep 07, 2006 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
30 Surfaces <> SingleSurface. Entweder richtig oder gar nicht...
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

Dreamora

BeitragDo, Sep 07, 2006 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Erm ja, das system ist dann doch recht wertlos.
Zum einen wegen der Menge Surfaces, zum anderen weil du exorbitant viel Texturspeicher verheitzst (640x480 existiert nicht, das ist 1024x512 und das sind 2MB VRAM. besser wärs jedoch 1024x1024, sonst wirste Mails bekommen von Leuten die nur leere Fenster sehen weil du die "Texturen sollten quadratisch sein" grundregel missachtet hast)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Lunatix

BeitragDo, Sep 07, 2006 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
mh... aber wie soll sowas denn sonst funktionieren?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Dreamora

BeitragDo, Sep 07, 2006 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja, siehste langsam, warum FUI und so nicht umsonst sind?
Ansätze wie BUI und so sie verwenden, funktionieren in 3D nicht bis nur sehr schlecht.

Prinzipiell ist es so, das man die gesamte Skin etc einer UI in 1 Bild packt (da sind dann also alle Button ränder, fenster ränder, close icon etc drin) und diese Elemente dann per UV Koordinaten entsprechend anzeigt.
Das passt alles auf 1 Surface, braucht eine Textur von 256x256 - 512x512 Grösse und läuft doch recht schnell.
Normalerweise macht man dann noch eine zweite solche surface für das BitmapFontSet. Denn erst auf den Backbuffer mit Drawtext schreiben und dann rüberkopieren in eine Textur ist keine akzeptable Lösung für grössere Dinge.
Da überlegt man sich lieber, wie man Quads mit Buchstaben (UV anpassen auf der bitmapfont) gescheit anordnet, so das sie auf den Fenstern sichtbar sind.

=> 2 Surfaces, 2x 512x512 Texturen (sprich 2MB VRAM), alles easy.
Man muss sich nur die Mühe machen 3D zu lernen statt sich auf der "faulen 2D -> 3D unbrauchbarlösung" auszuruhen Smile
Das ganze lässt sich mit ziemlicher sicherheit auch hiernach noch stark optimieren. Aber das ist mal eine prinzipielle Überlegung wie man mit nur 2 Surfaces und dementsprechend 2 Texturen auf sehr sehr viel Leistung und UI kommt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Lunatix

BeitragDo, Sep 07, 2006 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
3D kann ich ja (sehr gut meine ich Wink )

Das mit der einen texture hab ich nicht bedacht, vielen dank :]
jetz ist es wirklich nur noch ein surface *froide*
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

StepTiger

BeitragDo, Sep 07, 2006 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ehm!

Noch ne Frage:

wieso geht nur 512x512?

Wie wäre es denn mit 2048x2048?

passende vertex u und v koordinaten setzen und?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Lunatix

BeitragDo, Sep 07, 2006 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
-.-

die modernsten GraKas unterstützen grad mal 1024 ... ok auch 2048 aber wozu?

auf 512*512 passt jawohl alles rauf :O
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

D2006

Administrator

BeitragDo, Sep 07, 2006 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
2048 x 2048 = 4194304 Pixel
4194304 x 4 = 16777216 Bytes *
16777216 / 1024 = 16384 KB
16384 / 1024 = 16 MB

und das nur für ein Fenster. Surprised
Würde quasi nach 8 Fenster mein VRAM voll sein. Ja und ein Spiel sollte auch noch drin Platz haben.

Anmerkung: * ich gehe von 4 Bytes pro Pixel aus: Alpha RGB

Wenn irgendwas an der Rechnung nicht stimmt, kurze Meldung bitte.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Lunatix

BeitragDo, Sep 07, 2006 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, bei SingleSurface (wies inner neusten vrsion nun is) isses nur eine texture 512*512pixel

512*512 = 262144pixel
262144 * 4 = 1048576bytes
1048576bytes / 1024 = 1024KB
1024KB = 1MB

Für ALLE fenster edrsteht sich.
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

D2006

Administrator

BeitragDo, Sep 07, 2006 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast eine Textur für alle Fenster?
Darf ich fragen, mit welche Methode du die Fenster dann mit Inhalt füllst?
Also jetzt zum Beispiel ne Textarea oder ein Label.

Frage, weil mich das selbst interessiert und ich nicht so recht weiß, wie man das in 3D angeht.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Lunatix

BeitragDo, Sep 07, 2006 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht man doch oben

Füllen : wird alles mit dem einen surface gemacht, z.b.: ein button, die texture ist auf der grossen Gui tex. drauf.

man braucht also Anfang (6*20pixel z.b.) Mitte (1*20pixel) und ende (6*20pixel)

Dann macht man 2polys für anfang und start mit entsprechenden texture coords. und die mitte wird einfach gestreckt. Fertig. jedenfalls werde ich es so machen oder mache es beim fenster ja auch schon.

Textarea : dafür habe ich noch aus meiner Sprite Lib eine funktion, die einen text als polygone mit texture ausgibt (auch single surface)
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Dreamora

BeitragDo, Sep 07, 2006 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
StepTiger hat Folgendes geschrieben:
ehm!

Noch ne Frage:

wieso geht nur 512x512?

Wie wäre es denn mit 2048x2048?

passende vertex u und v koordinaten setzen und?


Wer sagte denn das nicht mehr gehen?
Mehr macht nur 0 Sinn, da niemand mit 2000x1500er auflösung spielt. sprich normalerweise sind die Elemente nie so gross das es nen Sinn machen würde so ne grosse Textur zu haben. Und da wären dann die 16MB einer 2048x2048 Textur schon üble speicherverschwendung
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group