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


Anmelden zum Antworten