DirectX使纹理大小错误

时间:2018-01-03 17:27:49

标签: c++ animation directx textures sprite-sheet

我开始使用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个和各自的宽高比image

现在看来,当我将纹理分配给我的精灵类时,我的经理会分配正确的纹理(或 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

0 个答案:

没有答案