Esportazione Materiale Trasparente In Directx
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 4 di 4

Discussione: Esportazione Materiale Trasparente In Directx

Cambio titolo
  1. #1
    ZioYuri78
    Ospite

    Esportazione Materiale Trasparente In Directx

    Il mio problema riguarda l'esportazione di un materiale trasparente tramite .X in 3D studio Max.
    Finchè esporto modelli e texture (uso l'exporter Panda DirectX) non ci sono problemi, l'ostacolo lo trovo appunto quando devo esportare un materiale trasparente..infatti quando carico la mesh e la renderizzo con il motore che ho scritto con le directx essa rimane "piena".

  2. #2
    ZioYuri78
    Ospite
    Posto un pò di codice, magari qualcuno capisce se l'errore è lì:
    Inizializazzione delle DirectX:
    Codice:
    bool dxMgr::init(HWND hwnd, int width, int height, bool fullscreen)
    {
        HRESULT hr;
        direct3d = Direct3DCreate9( D3D_SDK_VERSION );
        if(direct3d == NULL)
        {
            return false;
        }
    
        bool windowed = true;
        if (fullscreen){
            windowed = false;
        }
    
        
        D3DPRESENT_PARAMETERS d3dpp; 
        ZeroMemory( &d3dpp, sizeof(d3dpp) );
        d3dpp.Windowed = windowed; 
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; 
        d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; 
        d3dpp.BackBufferCount  = 1;    
        d3dpp.BackBufferHeight = height; 
        d3dpp.BackBufferWidth  = width; 
        d3dpp.hDeviceWindow    = hwnd; 
        d3dpp.AutoDepthStencilFormat = D3DFMT_D16; 
        d3dpp.EnableAutoDepthStencil = TRUE;
        d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
        d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
    
    
        
        hr = direct3d->CreateDevice( D3DADAPTER_DEFAULT, 
                                D3DDEVTYPE_HAL, 
                                hwnd,
                                D3DCREATE_HARDWARE_VERTEXPROCESSING, 
                                &d3dpp, 
                                &direct3dDevice 
                                );
        if( FAILED(hr)){
            return false;
        }
        direct3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);        
        direct3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
        direct3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
        direct3dDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);    
    
        direct3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
        direct3dDevice->SetRenderState(D3DRS_ZENABLE, TRUE);
        direct3dDevice->SetRenderState(D3DRS_NORMALIZENORMALS, TRUE); 
    
        return true;
    }
    Caricamento della mesh:
    Codice:
    bool Model::loadModel(LPDIRECT3DDEVICE9 device, std::string filename){
        HRESULT hr;
    
        scale = D3DXVECTOR3(1.0f, 1.0f , 1.0f); 
        position = D3DXVECTOR3(0.0f, 0.0f , 0.0f); 
        rotation = D3DXVECTOR3(0.0f, 0.0f , 0.0f); 
        
        
        hr = D3DXLoadMeshFromXA(filename.c_str(), 
                          D3DXMESH_SYSTEMMEM, 
                          device, 
                          NULL,
                          &materialBuffer, 
                          NULL,
                          &materialCount, 
                          &mesh);
    
        if FAILED(hr){
            return false;
        }
    
        
        D3DXMATERIAL* modelMaterials = (D3DXMATERIAL*)materialBuffer->GetBufferPointer();
        
        
        materials = new D3DMATERIAL9[materialCount];
        textures  = new LPDIRECT3DTEXTURE9[materialCount];
        
        
        for(DWORD i = 0; i < materialCount; i++)
        {
            
            
            materials[i] = modelMaterials[i].MatD3D;
    
            
            hr = D3DXCreateTextureFromFileA( device, modelMaterials[i].pTextureFilename, &textures[i] );
            
            
            if FAILED(hr){
                textures[i] = NULL;
            }
        }
    
        
        if (materialBuffer){
            materialBuffer->Release();
        }
    
        return true;
    }
    Oppure il problema e quando creo la mesh con 3ds e la esporto, e in quel caso qualcuno sa consigliarmi qualche tutorial adeguato?

  3. #3
    ZioYuri78
    Ospite
    Non n&#232; vengo fuori.
    Ultima modifica di ZioYuri78; 17-04-2009 alle 22:26:25

  4. #4
    ZioYuri78
    Ospite
    Chiudete pure, ho rinunciato.

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •