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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Direct3D]не отображается материал на кубе... куб+материал+свет=куб из проволоки?! 
V
    Опции темы
Sfate
  Дата 8.12.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Angry Beaver
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 7.9.2008
Где: mov AL, BL

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



вообщем... пытаюсь реализовать куб с наложением на него материала и света... но почему то выводиться просто куб из проволоки...
что не так?

Код
VOID SetupLights()//собственно код реализации материала и света
{
    D3DMATERIAL9 mat; // Материал.
    D3DLIGHT9 light; // Свет.

    // Установка материала.
    ZeroMemory( &mat, sizeof(mat) );
    mat.Diffuse.r = mat.Ambient.r = 1.0f;
    mat.Diffuse.g = mat.Ambient.g = 1.0f;
    mat.Diffuse.b = mat.Ambient.b = 1.0f;
    //mat.Diffuse.a = mat.Ambient.a = 1.0f;
    pDevice->SetMaterial(&mat);
    
    // Установка света.
    ZeroMemory(&light, sizeof(light));
    light.Type = D3DLIGHT_DIRECTIONAL;
    light.Diffuse.r = 1.0f;
    light.Diffuse.g = 1.0f;
    light.Diffuse.b = 1.0f;

    // Установка направления света.
    D3DXVECTOR3 dir = D3DXVECTOR3(1, -1, 1);
    D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &dir );

    //  Установка света в DirectX устройстве.
    pDevice->SetLight( 0, &light );
    pDevice->LightEnable( 0, TRUE );
    pDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
}
...
pDevice->BeginScene();
...
SetupLights();//вызов
...

вот скомпиленый проект...
сам проект...
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown
PM MAIL WWW ICQ   Вверх
EgoBrain
Дата 10.12.2009, 10:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

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



В модуле d3dlib.cpp в функции init_d3d(HWND h_wnd) измените 
Код

pDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME );

на
Код

pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);

28 строчка  smile 


Это сообщение отредактировал(а) EgoBrain - 10.12.2009, 10:10
PM MAIL ICQ Skype   Вверх
EgoBrain
Дата 10.12.2009, 13:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

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



А если хотите чтоб ваш куб отражал свет заданный в материале, то нужно изменить формат его вершин добавив в описание нормали.
В модуле cube.cpp строчку
Код

const DWORD s_vertex::FVF = D3DFVF_XYZ;

заменить на
Код

const DWORD s_vertex::FVF = D3DFVF_XYZ | D3DFVF_NORMAL;

Там правда нормали зададуться по дефолту (картинка будет не очень), нужно значения еще толково проставить.
PM MAIL ICQ Skype   Вверх
Sfate
Дата 11.12.2009, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Angry Beaver
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 7.9.2008
Где: mov AL, BL

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



EgoBrain, огромное спасибо! теперь работает... надо ток теперь треугольники править(для света)...
з.ы. как наберу сто постов, с меня плюс smile 

Это сообщение отредактировал(а) Sfate - 11.12.2009, 00:50
--------------------
"Начинающий программист твердо уверен, что в 1 кбайте 1000 байт, а опытный точно знает, что в 1 километре 1024 метра..." © Unknown
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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