» »

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.
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:
 textura

textura



Izris neodprtega polja z left=0 right=29:
 Izris prvega polja

Izris prvega polja



Izris odprtega polja left=30 right=59:
 Napačen izris

Napačen izris



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).

sevko ::

Hvala. Sem spremenil sliko v 512x32 pa dela.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[DirectX] Problem s teksturami

Oddelek: Programiranje
6695 (593) Senitel
»

Grafika

Oddelek: Programiranje
201695 (1047) aaaaa93
»

Grafični Motorji (strani: 1 2 )

Oddelek: Igre
554427 (3127) Senitel
»

DirectX, neki ne gre

Oddelek: Programiranje
61148 (1046) Senitel

Več podobnih tem