Введение в программирование трехмерных игр с DX9



         

Установка констант - часть 2


/p>

Мы получаем дескрипторы переменных (также называемых параметры эффекта) с помощью следующего метода:

D3DXHANDLE ID3DXEffect::GetParameterByName( D3DXHANDLE hParent, // область видимости переменной - // родительская структура LPCSTR pName // имя переменной );

Его сигнатура аналогична методу ID3DXConstantTable::GetConstantByName. То есть первый параметр — это значение типа D3DXHANDLE, идентифицирующее родительскую структуру в пределах которой живет переменная, дескриптор которой мы хотим получить. Для глобальных переменных родительская структура отсутствует, и в этом параметре мы передаем null. Второй параметр — это имя переменной в том виде, в котором оно приведено в коде файла эффекта.

Для примера давайте взглянем на инициализацию нескольких переменных в файле эффекта:

// Данные для инициализации D3DXMATRIX M; D3DXMatrixIdentity(&M);

D3DXVECTOR4 color(1.0f, 0.0f, 1.0f, 1.0f);

IDirect3DTexture9* tex = 0; D3DXCreateTextureFromFile(Device, "shade.bmp", &tex);

// Получаем дескрипторы параметров D3DXHANDLE MatrixHandle = Effect->GetParameterByName(0, "Matrix"); D3DXHANDLE MtrlHandle = Effect->GetParameterByName(0, "Mtrl"); D3DXHANDLE TexHandle = Effect->GetParameterByName(0, "Tex");

// Инициализируем параметры Effect->SetMatrix(MatrixHandle, &M); Effect->SetVector(MtrlHandle, &color); Effect->SetTexture(TexHandle, tex);

ПРИМЕЧАНИЕ

Для каждого метода ID3DXEffect::Set* есть соответствующий метод ID3DXEffect::Get*, позволяющий приложению получить значение переменной из файла эффекта. Например, для получения значений матрицы мы можем использовать функцию

HRESULT ID3DXEffect::GetMatrix( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix );

Чтобы увидеть полный список методов, обратитесь к документации DirectX SDK.




Содержание  Назад  Вперед