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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Antialiasing в DirectX. Как реализовать? 
:(
    Опции темы
Nemesis
Дата 17.1.2006, 04:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот пытаюсь изучить DirectX, раньше в OpenGL прогил, хочется сравнить...

Столкнулся с банальной проблемой. Никак не могу включить антиальясинг в программе. Почитал доки мсдн, там вроде как нужно просто сделать след шаги:

1) Проверить pDirect3D->CheckDeviceMultiSampleType на возможность использования такого-то типа, но функция выдает ошибку во всех случаях кроме D3DMULTISAMPLE_NONE, но уж я точно знаю,что моя карта поддерживает D3DMULTISAMPLE_16_SAMPLES smile
6800gt как-никак.

2)Затем при создании девайса указать тот самый тип мультисэмплинга, кот усешно был проверен
Direct3DParametr.MultiSampleType = ... ;

3) Просто включить антиальясинг pDirect3DDevice->SetRenderState(D3DRS_ANTIALIASEDLINEENABLE, TRUE);

Но поскольку я уже сыплюсь на 1ом этапе, то не знаю как это организовать... И вообще это правильные шаги?

И еще одна немаловажная вещь: почему в мсдн функция CheckDeviceMultiSampleType имеет 5 аргументов
bool CheckDeviceMultiSampleType(
int adapter,
DeviceType deviceType,
Format surfaceFormat,
bool windowed,
MultiSampleType multiSampleType
);

а когда я кодю, то мне предлагают ввести 6 параметров, последний - некий DWORD* pQualityLevels, назначение которого я пока не нашел в мсдн...

И по возможности smile

Ой, вот то, что я написал вообще, может тут уже ошибка где-то:

Код

HRESULT InitialDirect3D(HWND hwnd)
{
    DWORD Param;

    if(NULL == (pDirect3D = Direct3DCreate9(D3D_SDK_VERSION)))
        return E_FAIL;
    
    if( FAILED(pDirect3D->CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT , 
        D3DDEVTYPE_HAL, D3DFMT_A8B8G8R8, TRUE, D3DMULTISAMPLE_2_SAMPLES, &Param)))
        return E_FAIL; // сюда "успешно" заходим и вылетаем

    D3DDISPLAYMODE Display;
    if(FAILED(pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Display)))
        return E_FAIL;

    D3DPRESENT_PARAMETERS Direct3DParametr;
    ZeroMemory(&Direct3DParametr, sizeof(Direct3DParametr));
    Direct3DParametr.Windowed = TRUE;
    Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD;
    Direct3DParametr.BackBufferFormat = Display.Format;
    Direct3DParametr.EnableAutoDepthStencil = TRUE;
    Direct3DParametr.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES;
    Direct3DParametr.AutoDepthStencilFormat = D3DFMT_D16;
    if(FAILED(pDirect3D->CreateDevice(D3DADAPTER_DEFAULT,
                 D3DDEVTYPE_HAL, hwnd,
                 D3DCREATE_HARDWARE_VERTEXPROCESSING,
                 &Direct3DParametr, &pDirect3DDevice)))
        return E_FAIL;

    // включить отсечение
    pDirect3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);
    // включаем Z-буфер
    pDirect3DDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
    // включаем antialiasing
    pDirect3DDevice->SetRenderState(D3DRS_ANTIALIASEDLINEENABLE, TRUE);
    return S_OK;
}


Это сообщение отредактировал(а) Nemesis - 17.1.2006, 04:19
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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