Авторизация

Закрыть окно
Google ВКонтакте Facebook OpenID Яндекс Twitter


Регистрация     Сменить/востановить пароль


  • Украинский
  • Русский
СКИН JAMPO:ТемныйКрасно-зеленый с серым форумомСинийСалатовый
 Новости портала: Авария в датацентре 03.04.2012
1  [ 2 ] 
Тема: [q] Загрузка моделей в формате *.x (Прочитано 892 раз)
Зарегистрированные пользователи не просматривают эту тему.

малёк



Карма: +0/-0
Сообщений: 33

Офлайн Офлайн
[q] Загрузка моделей в формате *.x
Гружу меш кодом из СДК, основная часть которого приведена ниже, сообственно вопрос, почему при загрузке модели Dwarf из того же СДК, наблюдаеться катастрофическое падение ФПС с 2200 до 150 на довольно неслабой машине. Может кто укажет на пробленый участок кода? Ну и еще вопрос, имеет ли смысл не париться и использовать DXUT, или лучше все писать самому?

HRESULT Mesh::InitGeometry(LPCSTR models, LPDIRECT3DDEVICE9 pDevice)
{
//ResetWindow;
LPD3DXBUFFER pD3DXMtrlBuffer;

// Load the mesh from the specified file
if( FAILED( D3DXLoadMeshFromX(models, D3DXMESH_SYSTEMMEM,
pDevice, NULL,
&pD3DXMtrlBuffer, NULL, &g_dwNumMaterials,
&g_pMesh ) ) )
{
// If model is not in current folder, try parent folder
if( FAILED( D3DXLoadMeshFromX(models, D3DXMESH_SYSTEMMEM,
pDevice, NULL,
&pD3DXMtrlBuffer, NULL, &g_dwNumMaterials,
&g_pMesh ) ) )
{
MessageBox(NULL, «Не найдена модель», «TwinEngine», MB_OK);
return E_FAIL;
}
}

// We need to extract the material properties and texture names from the
// pD3DXMtrlBuffer
D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer();
g_pMeshMaterials = new D3DMATERIAL9[g_dwNumMaterials];
if( g_pMeshMaterials == NULL )
return E_OUTOFMEMORY;
g_pMeshTextures = new LPDIRECT3DTEXTURE9[g_dwNumMaterials];
if( g_pMeshTextures == NULL )
return E_OUTOFMEMORY;

for( DWORD i=0; i<g_dwNumMaterials; i++ )
{
// Copy the material
g_pMeshMaterials = d3dxMaterials.MatD3D;

// Set the ambient color for the material (D3DX does not do this)
g_pMeshMaterials.Ambient = g_pMeshMaterials.Diffuse;

g_pMeshTextures = NULL;
if( d3dxMaterials.pTextureFilename != NULL &&
lstrlenA(d3dxMaterials.pTextureFilename) > 0 )
{
// Create the texture
if( FAILED( D3DXCreateTextureFromFileA( pDevice,
d3dxMaterials.pTextureFilename,
&g_pMeshTextures ) ) )
{
// If texture is not in current folder, try parent folder
const CHAR* strPrefix = «textures/»;
CHAR strTexture[MAX_PATH];
StringCchCopyA( strTexture, MAX_PATH, strPrefix );
StringCchCatA( strTexture, MAX_PATH, d3dxMaterials.pTextureFilename );
// If texture is not in current folder, try parent folder
if( FAILED( D3DXCreateTextureFromFileA( pDevice,
strTexture,
&g_pMeshTextures ) ) )
{
MessageBox(NULL, «Не найдена текстура», «TwinEngine», MB_OK);
}
}
}
}

// Done with the material buffer
pD3DXMtrlBuffer->Release();

return S_OK;
}




12 февраля 2009, 18:52:57

селёдка


01010 01010
bubuntu u$ver

Карма: +1/-0
Сообщений: 93

Офлайн Офлайн

Re: [q] Загрузка моделей в формате *.x
filestore.com.ua/?d=B0E3B9EB4 — непогана книжна в вигляді справки, зрозуміла і розбита на частини + ісходніки до кожного прикладу
filestore.com.ua/?d=0D09324D4 — зібрані коменарі відомих геймдеверів і взагалі цікава книжка, з нієї все і почалось ))
+ ще є гора інфи на різні тематики, але це вже більш вузько орієнтованні (напр. опис анімації і розбір .х файлів)




14 февраля 2009, 17:52:43

малёк



Карма: +0/-0
Сообщений: 33

Офлайн Офлайн

Re: [q] Загрузка моделей в формате *.x
Спасибо за инфу




14 февраля 2009, 17:56:45

селёдка



Карма: +0/-0
Сообщений: 63

Откуда: 127.0.0.1

Офлайн Офлайн

Re: [q] Загрузка моделей в формате *.x
pD3D->CreateDevice(
D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&params, &pDevice);

отут поменяй на D3DCREATE_HARDWARE_VERTEXPROCESSING




14 февраля 2009, 18:06:09

малёк



Карма: +0/-0
Сообщений: 33

Офлайн Офлайн

Re: [q] Загрузка моделей в формате *.x
Сенкс, как раз в этом и была проблема.




14 февраля 2009, 18:27:52
1  [ 2 ] 

Перейти к

Комментировать могут только авторизированные пользователи. Пожалуйста, войдите или зарегистрируйтесь!