AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Direct3D/OGL - Sprites
Thema durchsuchen
Ansicht
Themen-Optionen

Direct3D/OGL - Sprites

Ein Thema von dizzy · begonnen am 10. Sep 2005 · letzter Beitrag vom 12. Sep 2005
Antwort Antwort
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

Direct3D/OGL - Sprites

  Alt 10. Sep 2005, 22:56
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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Direct3D/OGL - Sprites

  Alt 11. Sep 2005, 01:21
Vielleicht hilft dir in OpenGL die Extension: GL_ARB_Point_sprite
Weiss es allerdings nicht, habe mich mit Partikelsystemen bisher nur Theoretisch beschäftigt!
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Direct3D/OGL - Sprites

  Alt 11. Sep 2005, 03:23
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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#4

Re: Direct3D/OGL - Sprites

  Alt 11. Sep 2005, 09:21
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: 2D mit OpenGL
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 Sulaco glWindows zu finden. Dort wird gezeigt wie man dieses Technik verwenden kann um sich eine 2D-GUI zu basteln.
Hoffe, die Antwort geht zumindest in die Richtung, die Du erwartet hast?
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Direct3D/OGL - Sprites

  Alt 11. Sep 2005, 19:34
Zitat von dizzy:
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
Das mit dem Alphawert sollte kein Problem sein( Wenn ich dich richtig verstanden habe )!
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Direct3D/OGL - Sprites

  Alt 12. Sep 2005, 01:26
Zitat von Phobeus:
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
Das Lustige ist ja, dass es mir eigentlich egal ist ob nun "echte" Sprites, oder Polygone mit Textur . Das Schwammige kommt wohl durch meine wenige Erfahrung mit 3D-APIs...

ABER:
Zitat von Phobeus:
Bei DGL gibts zu diesem Thema ein ausführliches Tutorial: 2D mit OpenGL
Das Teil hat mich erleuchtet! Ich habe nun echt verstanden was ich da tue, und dieses Tut behandelt sogar exakt was ich vor hatte! (Der Teil mit der Semi-Beleuchtung recht weit unten wars.)


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 )

Besten Gruss,
Fabian


\\Edit: Das ist übrigends draus geworden.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz