D3DXIMAGE_INFO info;
D3DXGetImageInfoFromFile( filename, &info );
D3DXCreateTextureFromFileEx( device, filename,
info.Width, info.Height, 0, 0,
D3DFMT_A1R5G5B5, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE,
color, NULL, NULL, &m_texture_p );
m_textureWidth = info.Width;
m_textureHeight = info.Height;
//==========================================================
// 矩形の描画
//==========================================================
void Texture::DrawRect( const LPDIRECT3DDEVICE9 device,
const float x, const float y, const float dx, const float dy,
const float u, const float v, const float du, const float dv,
const D3DCOLOR diffuse )
{
// 頂点座標などの設定
VERTEX vertex[] =
{
{ x, y, 0.0f, 1.0f, diffuse, u, v },
{ x+dx, y, 0.0f, 1.0f, diffuse, u+du, v },
{ x+dx, y+dy, 0.0f, 1.0f, diffuse, u+du, v+dv },
{ x, y+dy, 0.0f, 1.0f, diffuse, u, v+dv }
};
// 描画
device->SetFVF( D3DFVF_VERTEX );
device->DrawPrimitiveUP( D3DPT_TRIANGLEFAN, 2, vertex, sizeof( VERTEX ) );
}
//==========================================================
// テクスチャの描画
//==========================================================
void Texture::Draw( const LPDIRECT3DDEVICE9 device,
const float x, const float y, const float dx, const float dy,
const float u, const float v, const float du, const float dv,
const D3DCOLOR diffuse )
{
device->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
device->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
device->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
device->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
device->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
device->SetTexture( 0, m_texture_p );
DrawRect( device, x, y, dx, dy, u, v, du, dv, diffuse );
}
2のn乗じゃないと勝手に換わってしますのは知っていて、読み込み時に対応できたとおもっていましたがだめでした。
どなたか解決策をお願いします。
環境
VC++ 2008使用
DirectX9.0c
Windows XP