Murdocki
Gebruiker
- Lid geworden
- 7 jun 2007
- Berichten
- 449
hey,
ik probeer gedeeltes van een texture te tekenen maar soms en soms ook niet gaat er iets fout bij de linkerbovenhoek, daar staat dan een pixel die eigenlijk in het plaatje 1pixel naar links staat.
screenie:
onderin is de texture, bovenin zijn gedeeltes van deze texture apart getekend. als je in zoomt zie je de verkeerde pixels
code:
tekenprocedure:
opbouwen van de vertex:
hulpmethodes voor het opbouwen van de vertex:
iemand enig idee waardoor het komt of hoe ik het op kan lossen?
ik probeer gedeeltes van een texture te tekenen maar soms en soms ook niet gaat er iets fout bij de linkerbovenhoek, daar staat dan een pixel die eigenlijk in het plaatje 1pixel naar links staat.
screenie:
onderin is de texture, bovenin zijn gedeeltes van deze texture apart getekend. als je in zoomt zie je de verkeerde pixels
code:
tekenprocedure:
Code:
void MapContents::render( Renderer* renderer )
{
int tilenumber = 0;
vector< int >::iterator pos, end = tileList.end();
for( pos = tileList.begin(); pos != end; pos++ )
{
int row = tilenumber / cols;
int col = tilenumber % cols;
int x = col * 35 + 3;
int y = row * 35 + 3;
int xOffset = (*pos) * 32;
renderer->draw2DImage( texturePath, x, y, xOffset, 0, 32, 0 );
tilenumber++;
}
renderer->draw2DImage( texturePath, x, 300 );
//renderer->draw2DImage( texturePath, x, y + 50, 33, 0, 32, 0 );
}
opbouwen van de vertex:
Code:
stD3DTextureVertex vertices[] = {
{ (float)x, (float)y, 0.0f, 1.0f, D3DCOLOR_XRGB( 255, 255, 255 ), getTextureOffsetMin( origW, xOffset, w ), getTextureOffsetMin( origH, yOffset, h ) },
{ (float)(x+w), (float)y, 0.0f, 1.0f, D3DCOLOR_XRGB( 255, 255, 255 ), getTextureOffsetMax( origW, xOffset, w ), getTextureOffsetMin( origH, yOffset, h ) },
{ (float)(x+w), (float)(y + h),0.0f, 1.0f, D3DCOLOR_XRGB( 255, 255, 255 ), getTextureOffsetMax( origW, xOffset, w ), getTextureOffsetMax( origH, yOffset, h ) },
{ (float)x, (float)(y + h),0.0f, 1.0f, D3DCOLOR_XRGB( 255, 255, 255 ), getTextureOffsetMin( origW, xOffset, w ), getTextureOffsetMax( origH, yOffset, h ) } };
hulpmethodes voor het opbouwen van de vertex:
Code:
float getTextureOffsetMin( int orig, int offset, int x )
{
float value = 0.0f;
float pixSize = 1.0f / orig;
value = pixSize * offset;
return value;
}
float getTextureOffsetMax( int orig, int offset, int x )
{
float value = 1.0f;
float pixSize = 1.0f / orig;
value = pixSize * ( offset + x );
return value;
}
iemand enig idee waardoor het komt of hoe ik het op kan lossen?