Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2012, 09:51   #1
Кудаив
Пользователь
 
Регистрация: 19.04.2012
Сообщений: 57
По умолчанию DirectX Простой пример

Доброго дня форумчане!
Разбираюсь с DX, в простейшем примере с треугольником, хочу чтобы треугольник (ну собственно рисуемый объект) являлся классом, вот собственно что то накатал, не совсем понимаю ринцип работы самого DX помогите пожалуйста разобраться
интерфейс класса
Код:
struct Vertex
{
    FLOAT x, y, z, rhw; // The transformed position for the vertex
    DWORD color;        // The vertex color
};


class Triangle
{
private:
	LPDIRECT3DDEVICE9 m_pd3dDevice;
	IDirect3DVertexBuffer9* m_pVB;

public:
	Triangle();
	HRESULT                 OnCreateDevice( ) ;

    void                    OnResetDevice( const D3DSURFACE_DESC* pBackBufferSurfaceDesc );
    void                    Render();
    void                    OnLostDevice();
    void                    OnDestroyDevice();
};
OnResetDevice не реализовывал
OnCreateDevice() реализовал вот так
Код:
HRESULT Triangle::OnCreateDevice()
{
	//HRESULT hr;
	m_pd3dDevice = DXUTGetD3D9Device();
    HRESULT hr;

    Vertex Vertices[] =
    {
        { 150.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
        { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
        {  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
    };

    V( m_pd3dDevice->CreateVertexBuffer( 3 * sizeof(Vertex ),
                                         D3DFVF_CUSTOMVERTEX, 0,
                                         D3DPOOL_DEFAULT, &m_pVB, NULL ) );

    // Fill the vertex buffer
    Vertex* pVertex = NULL;
    V( m_pVB->Lock( 0, 0, ( void** )&pVertex, 0 ) );

	pVertex[0] = Vertex();
    // Map texels to pixels 
 
    memcpy( pVertex, Vertices, sizeof( Vertices ) );
    m_pVB->Unlock();

	return S_OK;
}
Render() реализовал так
Код:
void Truck::Render()
{
    HRESULT hr;
     if( SUCCEEDED( m_pd3dDevice->BeginScene() ) )
    {
      
        m_pd3dDevice->SetStreamSource( 0, m_pVB, 0, sizeof( Vertex ) );
        m_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
        m_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );

        // End the scene
        m_pd3dDevice->EndScene();
    }

    // Present the backbuffer contents to the display
    m_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
в лучшем случае покажет чёрный экран
Кудаив вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой, вроде, пример на С++ ЛЕШЬ Общие вопросы C/C++ 4 25.03.2012 16:49
[MASM611] простой пример ... stupidstudent Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 06.02.2012 21:21
Не запускается простой пример SkrudjMakdak Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 0 29.12.2011 12:44
Простой пример AJAX cargo29 JavaScript, Ajax 12 26.09.2011 16:40
Самый простой пример J-Max C++ Builder 1 03.12.2010 22:59