Forum » Programiranje » Pomoč pri DirectX Sprite
Pomoč pri DirectX Sprite
sevko ::
Mene pa zanima če se je kdo od vs že ukvarjal z izrisvanjem v DiretcX v WinAPI.
Ta koda predstavlja mojo funkcijo za izris polja. Polja predstavlja ena textura in kateri del izrišemo definiramo z RECT. Primer v kodi je RECT podan tako, da izriše samo prvo polje. Problem se je pojavil, ko hočem izrisati drugo polje(left=30 right=59) mi ga ne izriše pravilno. Izris vsebuje majhen del prvega polja.
Textura:
Izris neodprtega polja z left=0 right=29:
Izris odprtega polja left=30 right=59:
Za texturo uporabljam format tga 390x30. Za vsako polje je uporabljen del texture 30x30, se pravi po logiki bi se morale vrednosti premikati po 30:
1: 0 29
2: 30 59
Kaj bi lahko bilo narobe? Je napaka v sliki, ki sem jo ustvaril s photoshopom? Ali naj poskusim sliko ustvariti s kakšnim drugim progamom?
void Board::Render(){ RECT drawRect; drawRect.left=0; drawRect.right=29; drawRect.top=0; drawRect.bottom=29; HRESULT hr=gD3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0); if (FAILED(hr)) return; hr=gD3dDevice->BeginScene(); if (SUCCEEDED(hr)){ gSprite->Begin(D3DXSPRITE_ALPHABLEND); for (int i=0;i<Visina[NastavljenaTezavnost];i++) for (int j=0;j<Sirina[NastavljenaTezavnost];j++){ gSprite->Draw(gTexture,&drawRect,NULL,&Squares[i][j].Pos,0xFFFFFFFF); } gSprite->End(); gD3dDevice->EndScene(); gD3dDevice->Present(NULL,NULL,NULL,NULL); } }
Ta koda predstavlja mojo funkcijo za izris polja. Polja predstavlja ena textura in kateri del izrišemo definiramo z RECT. Primer v kodi je RECT podan tako, da izriše samo prvo polje. Problem se je pojavil, ko hočem izrisati drugo polje(left=30 right=59) mi ga ne izriše pravilno. Izris vsebuje majhen del prvega polja.
Textura:
Izris neodprtega polja z left=0 right=29:
Izris odprtega polja left=30 right=59:
Za texturo uporabljam format tga 390x30. Za vsako polje je uporabljen del texture 30x30, se pravi po logiki bi se morale vrednosti premikati po 30:
1: 0 29
2: 30 59
Kaj bi lahko bilo narobe? Je napaka v sliki, ki sem jo ustvaril s photoshopom? Ali naj poskusim sliko ustvariti s kakšnim drugim progamom?
Senitel ::
Nisem čist 100%, da je to problem ampak vseen:
Teksturo verjetno naložiš z D3DXCreateTextureFromFile, right? Ta avtomatsko raztegne teksturo na nekaj kar je oblike x^2 (v tvojem primeru 512x32) in potem se teksli ne mapirajo tako kot predvidevaš. Uporabi D3DXCreateTextureFromFileEx in za širino ter višino daj vrednosti D3DX_DEFAULT_NONPOW2. Ali pa če uporabiš sliko, ki je že v originalu velika 512x32 (in ima okrog prazen prostor).
Teksturo verjetno naložiš z D3DXCreateTextureFromFile, right? Ta avtomatsko raztegne teksturo na nekaj kar je oblike x^2 (v tvojem primeru 512x32) in potem se teksli ne mapirajo tako kot predvidevaš. Uporabi D3DXCreateTextureFromFileEx in za širino ter višino daj vrednosti D3DX_DEFAULT_NONPOW2. Ali pa če uporabiš sliko, ki je že v originalu velika 512x32 (in ima okrog prazen prostor).
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [DirectX] Problem s teksturamiOddelek: Programiranje | 695 (593) | Senitel |
» | GrafikaOddelek: Programiranje | 1695 (1047) | aaaaa93 |
» | Grafični Motorji (strani: 1 2 )Oddelek: Igre | 4427 (3127) | Senitel |
» | DirectX, neki ne greOddelek: Programiranje | 1148 (1046) | Senitel |