我开始使用DirectX并努力一次渲染2个动画精灵。我将spritesheets转换为纹理,然后使用其宽高比作为指导为它们设置frameCount
this.user.login(this.account).then( user => {
//login successful
this.navCtrl.push(MainPage);
}).catch( err => {
this.navCtrl.push(MainPage);
// Unable to log in
let toast = this.toastCtrl.create({
message: this.loginErrorString,
duration: 3000,
position: 'top'
});
toast.present();
});
这些是2个精灵表,如您所见,其中一个有4帧,纵横比为4:1,而另一个有3个和各自的宽高比
现在看来,当我将纹理分配给我的精灵类时,我的经理会分配正确的纹理(或 D3D11_TEXTURE2D_DESC desc;
texture2D->GetDesc(&desc);
m_width = desc.Width;
m_height = desc.Height;
),但它会给出另一个纹理的大小值,这会导致它们设置错误的动画方式(第一个动画以4个步骤为动画,而第二个动画以3个为动画)。
此代码获取纹理
ID3D11ShaderResourceView
Texture* ResourceManager::GetTextureByName(char* textureName)
{
for(int i = 0; i < (int)m_textures.size(); ++i)
{
ResourceTexture* resourceTexture = m_textures[i];
string resourceTextureName = resourceTexture->GetName();
//Bit that matters
if(!strcmp(textureName, resourceTextureName.c_str()))
{
return resourceTexture->GetTexture();
}
}
return NULL;
}
无法像我打算那样工作吗?任何指示都非常感谢!
编辑:
这就是我设置纹理的方法(在获得它们的宽度和高度之前)
texture2D->GetDesc