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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не устанавливается свет и материал, DirectX 
:(
    Опции темы
Sartorius
Дата 23.1.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



 Доброго всем времени суток. Устанавливаю перед отображением сетки направленный свет и свойства материала, а ничего не происходит. Помогите плз...
Код


D3DLIGHT9 InitDirectionalLight(D3DXVECTOR3* direction,
                                    D3DXCOLOR* color)
{
     D3DLIGHT9 light;
     ::ZeroMemory(&light, sizeof(light));

     light.Type      = D3DLIGHT_DIRECTIONAL;
     light.Ambient   = *color * 0.4f;
     light.Diffuse   = *color;
     light.Specular  = *color * 0.6f;
     light.Direction = *direction;

     return light;
}

D3DMATERIAL9 InitMtrl(D3DXCOLOR a, D3DXCOLOR d,
                           D3DXCOLOR s, D3DXCOLOR e, float p)
{
     D3DMATERIAL9 mtrl;
     mtrl.Ambient  = a;
     mtrl.Diffuse  = d;
     mtrl.Specular = s;
     mtrl.Emissive = e;
     mtrl.Power    = p;
     return mtrl;
}



//-----------------------------------------------------------------------------
// Name: Render()
// Desc: Draws the scene
//-----------------------------------------------------------------------------
VOID Render()
{
     const D3DXCOLOR     WHITE(D3DCOLOR_XRGB(255, 255, 255));
     const D3DXCOLOR     BLACK(D3DCOLOR_XRGB(  0,   0,   0));
     const D3DXCOLOR       RED(D3DCOLOR_XRGB(255,   0,   0));
     const D3DXCOLOR     GREEN(D3DCOLOR_XRGB(  0, 255,   0));
     const D3DXCOLOR      BLUE(D3DCOLOR_XRGB(  0,   0, 255));
     const D3DXCOLOR    YELLOW(D3DCOLOR_XRGB(255, 255,   0));
     const D3DXCOLOR      CYAN(D3DCOLOR_XRGB(  0, 255, 255));
     const D3DXCOLOR   MAGENTA(D3DCOLOR_XRGB(255,   0, 255));

    const D3DMATERIAL9 GREEN_MTRL  = InitMtrl(GREEN, GREEN,
                                          GREEN, BLACK, 8.0f);

    D3DXVECTOR3 dir(0.0f, 1.0f, 0.0f);
    D3DXCOLOR   c(D3DCOLOR_XRGB(0, 255, 0));
    D3DLIGHT9 dirLight = InitDirectionalLight(&dir, &c);

    g_pd3dDevice->SetLight(
     0, // устанавливаемый элемент списка источников света, диапазон 0 - maxlights
     &dirLight);// адрес инициализированной структуры D3DLIGHT9

    LPD3DXMESH  mesh = 0;
    LPD3DXBUFFER * ppAdjacency;
    D3DXCreateSphere(
        g_pd3dDevice,
        1.0f, 
        50, 
        50,   
        &mesh,
        NULL);

    // Clear the backbuffer to a black color
    g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );

    // Begin the scene
    if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
    {
        // Setup the world, view, and projection matrices
        SetupMatrices();
       // здесь свет включаю
       g_pd3dDevice->LightEnable(
       0, // Включаемый или выключаемый источник света в списке
         true); // true = включить, false = выключить
        // Render the vertex buffer contents
        g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
        g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
        g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 );

        mesh->DrawSubset(0);    
        D3DXMATRIXA16 matWorld;
        D3DXMatrixTranslation(&matWorld, 1.5f, 0.5f, 0.5f);
        g_pd3dDevice->SetMaterial(&GREEN_MTRL); // вот тут материал установил ...

        g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
        mesh->DrawSubset(0);    

        mesh->Release();
        mesh = 0;
        // End the scene
        g_pd3dDevice->EndScene();
    }

    // Present the backbuffer contents to the display
    g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}



Сразу хочу сказать, что DX работает в дебажном режиме и никаких ворнингов не выдает smile 
PM MAIL ICQ   Вверх
Sartorius
Дата 23.1.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



 *неужели никто с Direct3D не работает *
PM MAIL ICQ   Вверх
AssassinFX
Дата 23.1.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Sartorius,
 
Код

void Light::setLighting(LPDIRECT3DDEVICE9 device,bool state)
{
    m_device = device;
 m_device->SetRenderState(D3DRS_LIGHTING, state);
 m_device->SetLight(0, &m_light);
 m_device->LightEnable(0, true);
 ::ZeroMemory(&m_light, sizeof(m_light));
}
void Material::setNormalizeNormal(bool state)
{
 m_device->SetRenderState(D3DRS_NORMALIZENORMALS, state);
}
void Material::setSpecular(bool state)
{
 m_device->SetRenderState(D3DRS_SPECULARENABLE, state);
}

Влипи гдето возле света.
PM MAIL   Вверх
Sartorius
Дата 27.1.2007, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



AssassinFX, спасибо. Помогло smile 
Код

   g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );

 не заметил в болванке приложения  smile 
PM MAIL ICQ   Вверх
AssassinFX
Дата 27.1.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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