ColorKey-Farbe beim Blitten schwarz?!?
-
Hi!
Ich hab mir eine Sprite-Klasse geschrieben, die intern LPD3DXSPRITE verwendet, funktioniert auch super. Beim Blitten wird die ColorKey-Farbe nicht transparent, sondern schwarz, woran liegt das?
Hier ein bisschen Code aus meiner Sprite-Klasse ;):// ... mcSprite.h ... void Begin() { m_lpSprite->Begin(); } // Startet den Zeichenvorgang void End() { m_lpSprite->End(); } // Beendet den Zeichenvorgang // ... mcSprite.cpp ... void mcSprite::CreateFramedEx(LPCTSTR lpFile, int iWidth, int iHeight, int iFrameWidth, int iFrameHeight, D3DCOLOR colorKey) { // Wenn als Framebreite/-höhe 0 angegeben wurde, abbrechen if(iFrameWidth == 0 || iFrameHeight == 0) { throw TEXT("Framebreite/-höhe darf nicht \'0\' sein!"); } // Sprite erstellen if(FAILED(D3DXCreateSprite(mcGraphics::Exemplar()->GetDevice(), &m_lpSprite))) { throw TEXT("Konnte Sprite nicht erstellen!"); } // Textur aus Datei laden D3DXIMAGE_INFO info; if(FAILED(D3DXCreateTextureFromFileEx(mcGraphics::Exemplar()->GetDevice(), lpFile, iWidth, iHeight, 1, 0, mcGraphics::Exemplar()->GetFormat(), D3DPOOL_DEFAULT, D3DX_FILTER_NONE, D3DX_FILTER_NONE, colorKey, &info, 0, &m_lpTexture))) { throw TEXT("Konnte Textur nicht aus Datei laden!"); } // Berechnen, wie viele Einzelbild-Zeilen und Spalten es gibt m_iFrameWidth = iFrameWidth; m_iFrameHeight = iFrameHeight; m_iFramesX = info.Width / m_iFrameWidth; m_iFramesY = info.Height / m_iFrameHeight; } // ... mcSprite.cpp ... void mcSprite::DrawFramedEx(int x, int y, int iFrame, D3DCOLOR colorAlpha) { // Zu zeichnendes Rechteck festlegen RECT rcSource; rcSource.left = (iFrame % m_iFramesX) * m_iFrameWidth; rcSource.top = (iFrame / m_iFramesY) * m_iFrameHeight; rcSource.right = rcSource.left + m_iFrameWidth; rcSource.bottom = rcSource.top + m_iFrameHeight; // Bestimmtes Frame des Sprites zeichnen if(FAILED(m_lpSprite->Draw(m_lpTexture, &rcSource, 0, 0, 0.0f, &D3DXVECTOR2((float) x, (float) y), colorAlpha))) { throw TEXT("Konnte Sprite nicht zeichnen!"); } } // ... map.cpp ... Jetzt wird's gezeichnet ... void AO_Map::Draw() { m_Tileset.Begin(); // Alle Felder der Map durchgehen for(int x = 0;x < MAP_WIDTH;x++) { for(int y = 0;y < MAP_HEIGHT;y++) { for(int i = 0;i < m_pMap[x][y].iLayerCount;i++) { // Tile zeichnen m_Tileset.DrawFramedEx(x * 32, y * 32, m_pMap[x][y].piLayer[i], D3DCOLOR_ARGB(255, 255, 255, 255)); } } } m_Tileset.End(); } // ...
thx & cya
[ Dieser Beitrag wurde am 21.02.2003 um 16:46 Uhr von MagiC Creator editiert. ]
[ Dieser Beitrag wurde am 25.02.2003 um 15:18 Uhr von MagiC Creator editiert. ]
-
Einfach nicht beachten, hab's jetzt beim ersten Post schon mit reingeschrieben ;).
cya
[ Dieser Beitrag wurde am 25.02.2003 um 15:19 Uhr von MagiC Creator editiert. ]
-
Weiß wirklich niemand was? Ich hab jetzt meinen Code mit dem von dem Tutorial auf www.fantastic-software.de nochmal verglichen, stimmt alles so... aber es funzt trotzdem nicht :(!
thx & cya
-
Was hast du denn für colorKey angegeben? 0xFF000000?
-
Das gleiche Problem hatte ich auch mal. flenders hat recht
-
Ne, ich geb D3DCOLOR_XRGB(250, 0, 128) an. Aber schonmal danke dass ihr geantwortet habt ;).
cya
-
Was für Grafiken verwendest du ? Nimm mal die von dem Tutorial !
-
Ich verwende 256x256 große Bitmaps... die Farben stimmen auch, die ColorKey-Farbe wird ja net angezeigt, sie wird halt schwarz ;). Eigentlich ist das so'n scheußliches Pink ;).
Aber ich probier's jetzt mal mit den Tutorial-Bitmaps aus.
thx & cya
-
Mit dem Bitmaps vom Tutorial funktioniert's auch net...
cya