netlib.narod.ru< Назад | Оглавление | Далее >

19.4. Создание эффекта

Эффект представляется интерфейсом ID3DXEffect, который мы создаем с помощью следующей функции из библиотеки D3DX:

HRESULT D3DXCreateEffectFromFile(
     LPDIRECT3DDEVICE9 pDevice,
     LPCSTR pSrcFile,
     CONST D3DXMACRO* pDefines,
     LPD3DXINCLUDE pInclude,
     DWORD Flags,
     LPD3DXEFFECTPOOL pPool,
     LPD3DXEFFECT* ppEffect,
     LPD3DXBUFFER *ppCompilationErrors
);

Вот пример вызова функции D3DXCreateEffectFromFile:

//
// Создание эффекта
//

ID3DXEffect* Effect = 0;
ID3DXBuffer* errorBuffer = 0;
hr = D3DXCreateEffectFromFile(
      Device,           // связанное устройство
      "effect.txt",     // имя исходного файла
      0,                // нет объявлений препроцессора
      0,                // нет интерфейса ID3DXInclude
      D3DXSHADER_DEBUG, // флаги компиляции
      0,                // параметры не используются совместно
      &Effect,          // возвращает результат
      &errorBuffer);    // возвращает строку с ошибками

// Выводим любые сообщения об ошибках
if( errorBuffer )
{
     ::MessageBox(0, (char*)errorBuffer->GetBufferPointer(), 0, 0);
     d3d::Release<ID3DXBuffer*>(errorBuffer);
}

if(FAILED(hr))
{
     ::MessageBox(0, "D3DXCreateEffectFromFile() - FAILED", 0, 0);
     return false;
}

netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz