Hello, after some time trying again to make something with directX 9, and what I chose is 2D game. For now making only basics of engine, which will help to me make a game. And writing here because need help about drawing objects. Now use LPD3DXSPRITE for painting. But get some "flickering" of moving object. Maybe anybody could say why I get it? Or maybe suggest better way to draw 2D.
Painting function:
void Sprite::Render( Texture2D texture, TinyEngine::Rectangle rectangle )
{
D3DXVECTOR3 vCenter( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 vPosition( rectangle.X(), rectangle.Y(), 0.0f );
RECT rect;
rect.left =0;
rect.right = 48;
rect.top=0;
rect.bottom=48;
_sprite->Draw( texture.Texture(),
&rect,
&vCenter,
&vPosition,
D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,0.80f) );
}
Texture loading function:
_fileName = fileName;
_width = width;
_height = height;
Vertex g_quadVertices[] =
{
{-1.0f, 1.0f, 0.0f, 0.0f,0.0f },
{ 1.0f, 1.0f, 0.0f, 1.0f,0.0f },
{-1.0f,-1.0f, 0.0f, 0.0f,1.0f },
{ 1.0f,-1.0f, 0.0f, 1.0f,1.0f }
};
D3DXIMAGE_INFO d3dxImageInfo;
D3DXCreateTextureFromFileEx(
g_dxManager.GetDevice(),
fileName, //"Data//Images//first.png",
width,
height,
1,
D3DPOOL_DEFAULT,
D3DFMT_UNKNOWN,
D3DPOOL_DEFAULT,
D3DX_DEFAULT,
D3DX_DEFAULT,
D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f),
&d3dxImageInfo,
NULL,
&_texture);
g_dxManager.GetDevice()->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
g_dxManager.GetDevice()->CreateVertexBuffer( 4*sizeof(Vertex), D3DUSAGE_WRITEONLY,
D3DFVF_XYZ | D3DFVF_TEX1, D3DPOOL_DEFAULT,
&_vertexBuffer, NULL );
void *pVertices = NULL;
_vertexBuffer->Lock( 0, sizeof(g_quadVertices), (void**)&pVertices, 0);
memcpy( pVertices, g_quadVertices, sizeof(g_quadVertices));
_vertexBuffer->Unlock();
}
And adding project exe to see what flickering I get