DirectX получает неправильный размер текстуры

Я начинаю работать с DirectX и пытаюсь сделать 2 анимированных спрайта одновременно. Я превращаю спрайт-листы в текстуры, а затем устанавливаю для них frameCount, используя его соотношение сторон в качестве ориентира

    D3D11_TEXTURE2D_DESC desc;
texture2D->GetDesc(&desc);

m_width = desc.Width;
m_height = desc.Height;

Это 2 спрайт-листа, как вы можете видеть, один из них имеет 4 кадра и соотношение сторон 4: 1, тогда как другой имеет 3 и соответствующее соотношение сторон образ

Теперь кажется, что когда я назначаю текстуру своему классу спрайта, мой менеджер назначает правильную текстуру (или ID3D11ShaderResourceView), но он дает значения размера от другого, что приводит к тому, что они анимируются неправильно (первый анимируется за 4 шага, а второй — за три).

Этот код получает текстуру

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 не работает, как я собираюсь? Любые направления приветствуются!

Редактировать:

Вот как я настраивал текстуры (прямо перед тем, как получить их ширину и высоту)

//Just modifying the texture name to the right format
wstring tempName(fileName);
m_name = string(tempName.begin(), tempName.end());
//Modifying texture name (From original loaded textures names)
int pos = m_name.find_last_of("/");
if(pos >= 0)
{
m_name = m_name.substr(pos + 1, m_name.length());
}
m_name = m_name.substr(0, m_name.find_last_of("."));

//load the texture
result = CreateWICTextureFromFile(device, fileName, NULL, &m_texture, NULL);

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]