Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 07.09.2003, 13:47 Titel: Bild in C++ manipulieren? |
|
|
Hi,
wie kann ich ein Sprite immer mehr in den Hintergrund übergehen lassen, also immer mehr Alpha hinzufügen? Das wäre ein guter einblendungs/ausblende Effekt.
MfG
Philipp Böing |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 07.09.2003, 13:50 Titel: |
|
|
Da musst du eben, wie schon in mehreren Threads hier im Forum besprochen, die Pixel einzeln mischen(falls du DirectDraw verwendest). Bei D3D kann ich dir leider nicht helfen. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 07.09.2003, 13:58 Titel: |
|
|
leider benutze ich D3D |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 07.09.2003, 14:08 Titel: |
|
|
Da du vorhin von Sprites geredet hast, nehme ich mal an, dass es um eine ALphaBlendung im 2D Bereich geht.
@The Lord of Programming:
Warum sollte das in D3D, wenn ich das richtig verstehe mit DX9 nicht gehen?
AlphaBlending kann man immer einsetzen, wenn man direkten Zugriff auf Oberflächen erlangen kann. Und das geht in DX7/DX8 sowie auch in DX9.
@philipp_boeing:
Am besten du schaust dir den ALphaBlending Thread an. Du musst dort nur den Pixelzugriff von DX7/DX8 auf DX9 umstellen und das sind nur gerinfügige Änderungen. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 07.09.2003, 14:11 Titel: |
|
|
Er benutzt doch D3D? Dann kann man das doch einfach über Renderstates machen, oder irre ich mich da? _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 07.09.2003, 14:20 Titel: |
|
|
Wo ist denn der AlphaBlending Thread? |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 07.09.2003, 14:35 Titel: |
|
|
Den brauchst du nicht. Du mußt dafür sorgen, dass die Alphawerte in der Textur gespeichert sind. Danach muss du noch den Renderstate (D3DRS_ALPHABLENDENABLE, zwei Blendstates - danach such mal im Forum) aktivieren und alles sollte gehen.
Christian |
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 07.09.2003, 14:39 Titel: |
|
|
irgendwie verstehe ich das nicht...
Wäre jemand so freundlich mir mal einen code zu geben in dem steht wie man ein sprite (png) sichtbar und unsichtbar machen kann? Mit DX9.
Danke im Vorraus
MfG
Philipp Böing |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 07.09.2003, 15:22 Titel: |
|
|
Okay, hatte ich falsch verstanden. Das Anzeigen des Sprites klappt also schon. Dann muss du noch dafür sorgen, das Sprite Stufenweise aus/einzublenden. Dazu kannst du z.B. die Alphawerte der Pixel ändern. D.h. Surface der Textur locken, durch die Pixel laufen und den Alphawert erhöhen.
Christian |
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 07.09.2003, 15:29 Titel: |
|
|
wie gehe ich denn durch die pixel und erhöhe die alphawerte? hat denn niemand ein Codebeispiel??? |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 07.09.2003, 20:22 Titel: |
|
|
TheMillenium hat Folgendes geschrieben: | @The Lord of Programming:
Warum sollte das in D3D, wenn ich das richtig verstehe mit DX9 nicht gehen?
AlphaBlending kann man immer einsetzen, wenn man direkten Zugriff auf Oberflächen erlangen kann. Und das geht in DX7/DX8 sowie auch in DX9. |
Ich hab nicht gesagt, dass es nicht geht. Ich hab nur gesagt, dass ich ihm nicht helfen kann(, weil ich mich noch nicht mit DXGrafics9 beschäftigt habe). _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 07.09.2003, 20:47 Titel: |
|
|
Du muss dir das Surface der Textur holen, sperren (LockRect) und dann kannst du auf die Pixel zugreifen. |
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 07.09.2003, 20:59 Titel: |
|
|
und wie hole ich mir das surface des sprites? |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 07.09.2003, 21:14 Titel: |
|
|
Ich habe mal nachgeschaut (das solltest du mit der DX-Doku aber auch schaffen ). Es gibt eine Methode LockRect() direkt als Methode der Textur. Also ungefähr so:
Code: |
HRESULT LockRect( UINT Level,
D3DLOCKED_RECT *pLockedRect,
CONST RECT *pRect,
DWORD Flags
);
D3DLOCKED_RECT LockRect;
m_lpTexture->LockRect(0,&LockRect,0,D3DLOCK_DISCARD)
// jetzt ist in LockRect.pBits ein Zeiger auf die Pixel - Pitch muss du auch beachten
... // Alphawerte verändern
m_lpTexture->UnlockRect(0);
|
|
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 07.09.2003, 22:15 Titel: |
|
|
allen bemühungen zum trotze komme ich nicht weiter. vielleicht sollte ich die frage etwas anders formulieren: wie müsste eine funktion aussehen z.b. void SetAlpha(int Alpha) um so einem Sprite komplett diesen alpha wert zu geben (ich benutze die sprite klasse des beispielprogrammes astoroids buch 2) Ich hoffe, dass die frage so verständlicher ist. |
|
Nach oben |
|
|
|