|
JLI Spieleprogrammierung
|
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: 09.09.2003, 11:50 Titel: |
|
|
hmm....
ich habs mal versucht... und es scheint zu funkionieren (drücken wirs mal vorsichtig aus )
Den Code habe ich so angepasst:
Code: |
void CSprite::SetAlpha(BYTE Alpha)
{
D3DLOCKED_RECT LockRect;
m_AnimationVec[m_CurrentImage]->LockRect(0,&LockRect,0,0);
DWORD* p = (DWORD*)LockRect.pBits;
LockRect.Pitch /= 4;
for(int i=0;i<m_Height;i++)
{
for(int j=0;j<m_Width;j++)
{
DWORD CurColor = *p;
if (CurColor != 0x00ffffff)
{
CurColor &= 0x00FFFFFF;
CurColor += ((int)Alpha) << 24;
*p = CurColor;
}
p++;
}
p += LockRect.Pitch - m_Width;
}
m_AnimationVec[m_CurrentImage]->UnlockRect(0);
} |
Mal sehen wie lange das funktioniert
MfG
Philipp Böing |
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 26.10.2003, 21:31 Titel: |
|
|
als ich mein Projekt mit der Alpha Blend Animation mal auf meinem altem Computer ausgeführt habe (ich hab 2, einen guten, einen schlechten zum Testen) bemerkte ich den sehr großen Geschwindigkeitsverlust...
Klar, denn wenn man eine animation macht in der das Sprite Stufenweise Ein/Ausgeblendet wird, werden ja immer wieder die Pixel durchgegangen, also habe ich eine einfachere Möglichkeit gesucht... Und!!! Ich habe eine gefunden, sogar mal ohne Forum
denn wenn das Sprite gemalt wird ja diese Funktion aufgerufen
Code: |
m_lpSprite->Draw(m_AnimationVec[m_CurrentImage],
0,
&m_vScale,
&m_vRotationCenter,
m_TempRot,
&m_vPosition,
D3DCOLOR_XRGB(0xff,0xff,0xff));
|
Und da viel es mir wie Schuppen aus den Haaren
Hab also einfach eine neue Member-Variable in die Sprite Klasse aufgenommen:
int m_Alpha
und diese wird mit SetAlpha() jetzt einfach gesetzt
und die Draw Funktion wurde so modifiziert
Code: |
m_lpSprite->Draw(m_AnimationVec[m_CurrentImage],
0,
&m_vScale,
&m_vRotationCenter,
m_TempRot,
&m_vPosition,
D3DCOLOR_ARGB(m_Alpha,0xff,0xff,0xff));
|
Ich wollte Fragen ob dieser Weg Nachteile hat, und ob er besser oder schlechter als die andere SetAlpha Funktion ist. Auf jeden Fall erziehlt man einen großen Geschwindigkeitsvorteil.
Man könnte damit ja auch andere Farbmanipulationen machen, wäre doch mal ganz lustig |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 26.10.2003, 21:53 Titel: |
|
|
Ups, ja, sehr gute Idee, einfahcer, besser und schneller wird es wohl kaum gehen, sollte man sich unbedingt merken. 3 Bienchen für dich
C. |
|
Nach oben |
|
|
MATTT Junior JLI'ler
Anmeldedatum: 18.06.2003 Beiträge: 59
Medaillen: Keine
|
Verfasst am: 10.11.2003, 17:13 Titel: |
|
|
eine frage:
ich kenn mich sehr gut dx9 aus
aber kann man nicht auch
den letzten parameter der Draw()-Methode des Sprites benutzen
um die farben zu manilpulieren
schätze mal das geht auch mit alpha oder täusche ich mich da |
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 10.11.2003, 17:16 Titel: |
|
|
MATTT hat Folgendes geschrieben: | eine frage:
ich kenn mich sehr gut dx9 aus
aber kann man nicht auch
den letzten parameter der Draw()-Methode des Sprites benutzen
um die farben zu manilpulieren
schätze mal das geht auch mit alpha oder täusche ich mich da |
guck mal 2 Posts nach oben
nee stimmt, hast recht... aber da sind wir alle nicht drauf gekommen |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 10.11.2003, 17:17 Titel: |
|
|
Hast du was verpasst? Rate mal was philipp_boeing in seinem letzten post geschreiben hat?
Zitat: |
Klar, denn wenn man eine animation macht in der das Sprite Stufenweise Ein/Ausgeblendet wird, werden ja immer wieder die Pixel durchgegangen, also habe ich eine einfachere Möglichkeit gesucht... Und!!! Ich habe eine gefunden, sogar mal ohne Forum
denn wenn das Sprite gemalt wird ja diese Funktion aufgerufen
Code:
m_lpSprite->Draw(m_AnimationVec[m_CurrentImage],
0,
&m_vScale,
&m_vRotationCenter,
m_TempRot,
&m_vPosition,
D3DCOLOR_XRGB(0xff,0xff
|
_________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
philipp_boeing JLI'ler
Alter: 34 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 10.11.2003, 17:21 Titel: |
|
|
@BLoD wir haben wohl fast gleichzeitig auf "Abschicken" geklickt |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|