Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отимизация мешей в Direct3D 9, Давайте один раз здесь обсудим. 
:(
    Опции темы
Nappster
Дата 11.4.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 17.2.2007
Где: Город герой Москв а

Репутация: нет
Всего: нет



Здраствуйте, у меня жестокий трабл, очень сильно теряю фпс при отображении мешей.

В проге сделан FrustumCull. 
Проверял, все четко работает, потом начал возиться с оптимизацией мешей. Может я не так чето делаю, поэтому прошу вас помочь мне

Так я загружаю меш:
Код

LoadMeshFromFile(char* FileName)
{
    HWND hWnd1=0;
    if(fileExists(FileName)==false)
    {
        MessageBox(hWnd1,"Error aquired! See log file.","Error!",NULL);
        exit(0);

    }

    D3DXLoadMeshFromX (FileName, D3DXMESH_SYSTEMMEM,g_pd3dDevice, &ppAdjacencyBuffer, &pD3DXMtrlBuffer,NULL, &g_dwNumMaterials, &p_d3dx_mesh);

    D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer();

    g_pMeshMaterials = new D3DMATERIAL9[g_dwNumMaterials];
    g_pMeshTextures = new LPDIRECT3DTEXTURE9[g_dwNumMaterials];

    for( DWORD i=0; i<g_dwNumMaterials; i++ )
    {
        g_pMeshMaterials[i] = d3dxMaterials[i].MatD3D;

        g_pMeshMaterials[i].Ambient = g_pMeshMaterials[i].Diffuse;
        

        if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, 
            d3dxMaterials[i].pTextureFilename, &g_pMeshTextures[i] ) ) )
        {
            g_pMeshTextures[i] = NULL;    
        }
    }
    p_d3dx_mesh->OptimizeInplace(D3DXMESHOPT_VERTEXCACHE,(DWORD*)ppAdjacencyBuffer->GetBufferPointer(),NULL,NULL,NULL);
}


Так рисую его 

Код

DrawMeshMT()
{
    for( DWORD i=0; i<g_dwNumMaterials; i++ )
    {
        g_pd3dDevice->SetMaterial( &g_pMeshMaterials[i] );
        g_pd3dDevice->SetTexture( 0, g_pMeshTextures[i] );
        p_d3dx_mesh->DrawSubset( i );
    }
}


В цикле рендеринга, нашел где была утечка, прирост стал около 800 ФПС, больше там нет этих проблем. 
Но теперь мне надо узнать как можно конкретно оптимизировать меши. Как можно снизить число вершин.
Просто на сцене отображаю около 1200 треугольников, а тормоза идут жестокие. Пустой экран= примерно 5000 ФПС, с этими 1200 треугольниками 800 ФПС. Не верю  smile 

Если есть ссылка, или небольшой пример, поделитесь. smile 
PM MAIL WWW   Вверх
Nappster
Дата 11.4.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 17.2.2007
Где: Город герой Москв а

Репутация: нет
Всего: нет



Если вообще точно, то 0 вершин в режиме 800 на 600 4075 FPS,
а при отрисовке 656 вершин получаю 590 FPS!

Что за бредятина может быть?
PM MAIL WWW   Вверх
Goganchic
Дата 12.4.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



А что по этому поводу пишут в документации по DirectX? А в MSDN?
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.