![]() |
Direct3D/OGL - Sprites
Nabend geschätzte Community!
Der dizzy ist mal wieder planlos. Er möchte seinen Horizont ein klein wenig erweitern, und sich (mal wieder...) mit einer 3D-API beschäftigen. Dieses Mal möchte er nicht einmal 3D im eigentlichen Sinne betreiben :) Also was ich vor habe: Mit einer beliebigen API eine Menge von Sprites (ca. 500 Stück) auf den Bildschirm bringen. Als Ausgangmaterial habe ich ein Bitmap (64x64 Pixel) welches - jetzt kommt der Knackpunkt - meinen künftigen Alphakanal beschreibt. Die Sprites an sich sollen einfarbig sein, und zwar ändert sich diese kontinuierlich. Die Sprites sollen also nun dynamisch mit einer Farbe versehen werden, und mit dem Bitmap als Alphamaske auf den Schirm gebracht. Die Sprites müssen nur in X/Y-Richtung beweglich sein, rotieren müssen sie nicht. Nun sollen sie aber auch nicht einfach nur teiltransparent gezeichnet werden, nein, ich hätte es gerne additiv! Dass es an sich möglich sein muss sieht man in vielen Spielen/Demos in denen z.B. Feuer mit Partikeln gemacht wird - diese sind meist Additiv gemacht. Ich habe mich nun mehrere Stunden mit purem DirectX und auch DelphiX beschäftigt, habe aber das grundsätzliche Problem dass ich mit dieser Form der Programmierung quasi keine Erfahrung habe (und sie auch ...umständlich finde). Ich habe es mit beiden Wegen nicht einmal geschafft ein Sprite dass mein Bitmap (testweise mal nicht als Alpha, sondern als eigentliches Bild) darstellt zu erzeugen :?. (Wohlgemerkt: Ich habs mit einem D3DXSprite und einer Direct3DTexture9 versucht (von denen ich nichtmal weiss wie sie korrekt zu parametrieren sind (MSDN schön und gut, aber wirklich hilfreich leider nicht), und wie ich da mein Alpha rein bekomme, geschweige denn additiv zu zeichnen...)) Mehr muss in das Bild auch nicht rein, kein Hintergrund, keine 3D-Objekte, keine Lichter, nix. Nur die Sprites :) Ob ich dazu nun DirectX (pur oder mit Kapselung) oder OpenGL verwende ist mir in erster Linie völlig egal. Es soll nur schneller als ohne sein. Ich suche nun nach einem Tutorial oder einer Hilfestellung mit deren Hilfe ich endlich mal verstehe wie ich o.g. bewerkstelligen kann. Ich bin auch nicht auf die o.g. Technik mit D3DXSprites festgenagelt, ich lass auch gerne Polygone durch die "Luft" wirbeln, nur sollten sie es eben schnell, einfach, transparent, texturdynamisch und mögl. additiv tun ^^ Ist mir noch zu helfen? Großen Dank schonmal! Fabian |
Re: Direct3D/OGL - Sprites
Vielleicht hilft dir in OpenGL die Extension: GL_ARB_Point_sprite
Weiss es allerdings nicht, habe mich mit Partikelsystemen bisher nur Theoretisch beschäftigt! |
Re: Direct3D/OGL - Sprites
Und ich mich mit OGL bisher wenig genug, dass ich mit dieser Info an sich so allein bisher nix anfangen kann ;)
Ich denke das Problem wird später auch nicht das reine Vorhandensein von Sprites sein, sondern die Behandlung des Alphas und das additive. Aber schon mal gut zu wissen dass es da auch etwas bei OGL gibt. Eine Frage am Rande: Ist es eigentlich möglich mit DX/OGL auf einen Canvas zu rendern, so dass ich mit normalen Zeichenfunktionen nachher noch war dazupacken kann? (Wenn nicht auch nicht schlimm, das Ausgangsproblem hat Priorität.) Gruss, Fabian |
Re: Direct3D/OGL - Sprites
Also so ganz exakt verstehe ich nicht, was Du exakt meinst, wobei ich Personen, die von sich in der dritten Person sprechen, meist besser verstehe als die Ichler ;) Das kommt daher das einige der von Dir verwendeten Begriffe schwammig sind. Ein Sprite muss ja nicht zwangsläufig 2D sein, allerdings denke ich, dass Du genau davon sprichst? Oder willst Du nur Partikel? Ich weiß es nicht 100%ig ;)
Solltest Du allerdings 2D-Sprites meinen, so ist dies an sich ein nicht ganz schweres unterfangen. Du wechselst in den orthogonalen Modus um dem Raum die 3D-Perspektive zu nehmen. Die Z-Achse spielt dann theoretisch nur noch die Rolle für das Z-Sorting, welches Objekt, wann gezeichnet werden soll. Die Objekte selbst bestehen dann aus Quads. Bei DGL gibts zu diesem Thema ein ausführliches Tutorial: ![]() Ein zweites Beispiel, dass zwar nichts mit dem Tutorial zu tun hat, allerdings auch schön demonstriert, wie man 2D und OpenGL miteinander kombinieren kann ist unter ![]() Hoffe, die Antwort geht zumindest in die Richtung, die Du erwartet hast? |
Re: Direct3D/OGL - Sprites
Zitat:
|
Re: Direct3D/OGL - Sprites
Zitat:
ABER: Zitat:
Ganz dicken Dank, das Problem ist gelöst, ja das Programm sogar schon geschrieben :). So sei es nun OpenGL und nicht DirectX. (Btw: Der Accumulationbuffer rockt :mrgreen:) Besten Gruss, Fabian \\Edit: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz