Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Direct3D problem: svaki drugi stupac piksela ne zeli mi prikazati

  • 5 odgovora
  • 3.824 pregleda

Najnovija ↓

Direct3D problem: svaki drugi stupac piksela ne zeli mi prikazati 31.08.2006. u 17:49 · pre 245 meseci #1
Ne znam u cemu je fora, nikad nisam imao takav problem. Dobivam kao nekakvu interlaced sliku, ali ne po recima nego po stupcima.

Koristim DirectX 9.0c february 2006, ovako izgleda funkcija koja postavlja direct3d

Code:

// inicijalizacija direct3d-a //////////////////////////////////////////////////
HRESULT Scene::InitializeD3D (HWND hwnd)
{
    // kreiraj direct3d objekt
    if (NULL == (m_pD3DObject = Direct3DCreate9(D3D_SDK_VERSION)))
        return E_FAIL;

    // podesavanje direct3d parametara
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory(&d3dpp, sizeof (d3dpp));                                // ocisti strukturu
    d3dpp.Windowed         = TRUE;                                    // aplikacija u windowed modu
    d3dpp.SwapEffect       = D3DSWAPEFFECT_COPY;                    // nacin izmjene buffera
    d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;                        // format back buffera
    d3dpp.BackBufferCount  = 1;                                        // broj back buffera
    d3dpp.BackBufferWidth  = CLIENT_WIDTH;                            // sirina back buffera
    d3dpp.BackBufferHeight = CLIENT_HEIGHT;                            // visina back buffera

    d3dpp.EnableAutoDepthStencil = TRUE;                            // za koristenje ZBuffera
    d3dpp.AutoDepthStencilFormat = D3DFMT_D16;                        // Format boje
    
    // stvori direct3d device
    if (FAILED(m_pD3DObject->CreateDevice(
        D3DADAPTER_DEFAULT,
        D3DDEVTYPE_HAL,
        hwnd,
        D3DCREATE_SOFTWARE_VERTEXPROCESSING,
        &d3dpp,
        &m_pD3DDevice)))
    {
        return E_FAIL;
    }

    // render stanja
    m_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
    m_pD3DDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
    m_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
    //m_pD3DDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);
    m_pD3DDevice->SetRenderState(D3DRS_ZENABLE, TRUE);

    return S_OK;
}


Hvala unaprijed.
Re: Direct3D problem: svaki drugi stupac piksela ne zeli mi prikazati 02.10.2006. u 14:03 · pre 244 meseca #3
Hmm, problem je bio u depth bufferu. Tocnije u ovoj liniji koda.

Code:

// ocisti back buffer
    m_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1000.0f, 0);


Straznja ravnina perspektive mi je na 1000.0f pa sam mislio da na tolko trebam postaviti back buffer, a onda sam skuzil da je to kao normalizirano na 0.0f do 1.0f, i kad postavim na 1.0f radi normalno.

Citat:
Filip Strugar: Pa nisi bas dao mnogo detalja o problemu, iz ovoga se ne moze ama bas nista zakljuciti.

Brute force solution: uzmi neki directx sample koji radi, pa prebacuj svoj kod u njega dok se ne pojavi bug ;)


Tu imas pravo, ali nisam imao pojma sto bi tocno moglo bit, nekako sam se nadao da ce se pojavit netko kome se takva pizdarija dogodila pa ce znat. Inace, vec sam koristio neciji kod i nadogradjivao, ali ocito sam se i zajebao na mjestu gdje sam mislio da nema problema.
Re: Direct3D problem: svaki drugi stupac piksela ne zeli mi prikazati 02.10.2006. u 20:37 · pre 244 meseca #5
Citat:
dragansm: Vrlo interesanta terminologija :)
pizdarija je verovatno sinonim za bug
a ovo zajebao mora da znaci typo
...kuzis stari poentu....? :)


Za ovo prvo si u pravu. Sto je typo, to ne znam (jel pogreska u pisanju), pa ti ne mogu rec da li si tu u pravu.
Ako ima nekih nejanoca u mom opisu, pokusat cu to 'slikovitije' opisati.
Ako je problem u rijecniku, ispricavam se, nije mi bila namjera nista uvredljivo napisati, to je samo nacin na koji se neki puta izrazavam, i ubuduce cu pripaziti na odabir svojih rijeci.
Re: Direct3D problem: svaki drugi stupac piksela ne zeli mi prikazati 02.10.2006. u 21:03 · pre 244 meseca #6
Nema mesta (citaj: razloga) isprikama....
nego kad vec brises z buffer stavi ga na jedan, bice sasvim dovoljno :)
Dakle:
Code:

m_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme