Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > ID3DXSprite


Автор: Roont 31.8.2009, 15:21
вопщем делаю вроде все по науке, он картинки нет..(( 


Код

HRESULT MyDirectX::Init( HWND hWnd )
{
    ZeroMemory(&m_Didect3DParametr, sizeof (m_Didect3DParametr) );
    ZeroMemory(&m_DisplayMode, sizeof m_DisplayMode);

    if ( NULL == (m_pDirect3D = Direct3DCreate9(D3D_SDK_VERSION) ) )
        return E_FAIL;

    
    if ( FAILED(m_pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &m_DisplayMode) ) )
        return E_FAIL;


    m_Didect3DParametr.Windowed = TRUE;
    m_Didect3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD;
    m_Didect3DParametr.BackBufferFormat = D3DFMT_X8R8G8B8;
    m_Didect3DParametr.AutoDepthStencilFormat = D3DFMT_D16;
    m_Didect3DParametr.EnableAutoDepthStencil = TRUE;

    if ( FAILED( m_pDirect3D->CreateDevice(
        D3DADAPTER_DEFAULT
        ,    D3DDEVTYPE_HAL
        ,    hWnd
        ,    D3DCREATE_SOFTWARE_VERTEXPROCESSING
        ,    &m_Didect3DParametr
        ,    &m_pDirect3DDevice
        ))
    )
    return E_FAIL;

    return S_OK;
}

void MyDirectX::RenderItem( wchar_t* tex, RECT rect, D3DXVECTOR3 pos )
{
    RItem* ri = new RItem;
    
    ri->tex = new wchar_t [ wcslen(tex) + 1];
    wcscpy_s(ri->tex, wcslen(tex) + 1, tex);
    ri->rect = rect;
    ri->pos = pos;

    m_RenderItems.Push( ri );
}

void MyDirectX::Rendering()
{
    m_pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 105,200, 125 ), 1.0, 0 );
    m_pDirect3DDevice->BeginScene();
    {
        Iterat( m_RenderItems )
        {
            if ( m_RenderItems[i]->tex )
            {

                LPDIRECT3DTEXTURE9 pTexture;    
                HRESULT err = D3DXCreateTextureFromFile(
                    m_pDirect3DDevice, 
                    m_RenderItems[i]->tex, 
                    &pTexture );

                LPD3DXSPRITE pSprite = 0;
                D3DXCreateSprite(m_pDirect3DDevice, &pSprite);
            
                if ( !FAILED( pSprite->Begin( D3DXSPRITE_ALPHABLEND| D3DXSPRITE_SORT_DEPTH_BACKTOFRONT ) ) )
                {    
                    pSprite->Draw( pTexture, NULL, NULL, &m_RenderItems[i]->pos, 0xFFFFFFFF );
                    pSprite->End();
                }

                pSprite->Release();
                pTexture->Release();
            }
        }
    }    
    m_pDirect3DDevice->EndScene();
    m_pDirect3DDevice->Present(0,0,0,0);
}



m_RenderItems - динамический стек с путями до тгашки, ректами( RECT ) и позишнами.( D3DXVECTOR3 ) Пополняется по клику..
в результате имеем зеленое пустое окно.. молча(никто не падает и не вопит что ему чего то не додали..))..   

Может нужно что то в Init() при создании девайса что то написать?
скажите, плз, где я дурак?...%)

Автор: BorisVorontsov 4.9.2009, 15:36
Позиция адекватная? Какие параметры альфа-смешивания задал?

Автор: Roont 15.9.2009, 09:29
теперь перед CreatetextureFromFileEx() делаю 
Код

            UINT pWidth, pHeight, pNumMipLevels;
            D3DFORMAT pFormat;
            
            HRESULT errr = D3DXCheckTextureRequirements(
                m_pDirect3DDevice, 
                &pWidth, 
                &pHeight, 
                &pNumMipLevels, 
                0, 
                &pFormat, 
                D3DPOOL_DEFAULT);



один фиг в: 
Код

            LPD3DXSPRITE pSprite;
            D3DXCreateSprite(m_pDirect3DDevice, &pSprite);
            if ( !FAILED( pSprite->Begin( 
                D3DXSPRITE_OBJECTSPACE | 
                D3DXSPRITE_BILLBOARD | 
                D3DXSPRITE_SORT_TEXTURE | 
                D3DXSPRITE_DO_NOT_ADDREF_TEXTURE
                ) ))
                        {...}

->Begin падает с "Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
"

что не так?  smile  smile  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)