Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Объединение мешей с помощью D3DXConcatenateMeshes  (Прочитано 5805 раз)
0 Пользователей и 1 Гость смотрят эту тему.
CTAPOBEP
Постоялец

ru
Offline Offline
Пол: Мужской

« : 13-05-2009 05:05 » 


Мне потребовалось объединить два меша в один и я сделал первое, что пришло в голову:

Код:
void operator+=(C_BaseMesh &mesh)
{
   if (!pMesh || !mesh.pMesh) return;

   LPD3DXMESH pTempMesh = NULL;
   LPD3DXMESH array[]={mesh.pMesh, pMesh};
   LPDIRECT3DDEVICE9 pDevice=NULL;
   if (pMesh->GetDevice(&pDevice) != D3D_OK)
   {
      AfxMessageBox("pMesh->GetDevice(&pDevice) != D3D_OK");
      return;
   }

   D3DVERTEXELEMENT9  decl[MAX_FVF_DECL_SIZE];
   D3DXDeclaratorFromFVF(pMesh->GetFVF(), decl);

   if (D3DXConcatenateMeshes(array, 2, D3DXMESH_MANAGED, NULL, NULL, decl, pDevice, &pTempMesh) != D3D_OK)
   {
      AfxMessageBox("D3DXConcatenateMeshes(...) != D3D_OK");
      return;
   }

   pMesh->Release();
   pMesh = pTempMesh;
}

В результате получается, что новый меш является просто копией меша, который указан первым в массиве array. Что я делаю не так?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines