All pastes #825963 Raw Edit

Unbenannt

public text v1 · immutable
#825963 ·published 2007-12-20 22:30 UTC
rendered paste body
#include <allegro5.h>
#include <winalleg.h>
#include <d3d9.h>
using namespace std;

#define D3DFVF_CUSTOMVERTEX	(D3DFVF_XYZ | D3DFVF_DIFFUSE)	
struct D3DVERTEX
{
 float	        fX, fY, fZ;
 DWORD	        dwColor;
};

int main(void)
{
    ALLEGRO_DISPLAY *display;
    ALLEGRO_BITMAP *bitmap;
    ALLEGRO_COLOR colBlack;
       
    al_init();
    al_install_keyboard();
    al_set_new_display_flags(ALLEGRO_FULLSCREEN | ALLEGRO_DIRECT3D);
    display = al_create_display(640, 480);
    
    ALLEGRO_KBDSTATE state;
    
    al_map_rgba( &colBlack, 0, 0, 0, 0 );

    IDirect3DDevice9 *D3D = al_d3d_get_device();
    D3D->SetRenderState(D3DRS_AMBIENT, 0x11111111 );	
    D3D->SetRenderState(D3DRS_LIGHTING,false);				
    D3D->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE); 		
    D3D->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);
    D3D->SetFVF(D3DFVF_CUSTOMVERTEX);			
    
    LPDIRECT3DVERTEXBUFFER9 pTriangleVB = NULL;
    VOID* pData;	
    
    D3DVERTEX aTriangle[ ] = {	{-2.0f, 1.0f,10.0f,0xffff0000},
			                    {-3.0f,-1.0f,10.0f,0xff00ff00},
                                {-1.0f,-1.0f,10.0f,0xff0000ff} };  
                              
    D3D->CreateVertexBuffer(  sizeof(aTriangle),
                              D3DUSAGE_WRITEONLY,
                              D3DFVF_CUSTOMVERTEX,
                              D3DPOOL_MANAGED,
                              &pTriangleVB,
                              NULL);
                              
    pTriangleVB->Lock(0,sizeof(pData),(void**)&pData,0);
    memcpy(pData,aTriangle,sizeof(aTriangle));			
    pTriangleVB->Unlock();								
  
    do
    {
     D3D->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0);
     D3D->BeginScene();							

     D3D->SetStreamSource(0,pTriangleVB,0,sizeof(D3DVERTEX));		
     D3D->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);				

     
     D3D->EndScene();						
     D3D->Present(NULL,NULL,NULL,NULL);		


    al_flip_display();
    al_get_keyboard_state( &state );    
    }
    while( !al_key_down( &state, KEY_ESC ) );
    
    return 0;
}
END_OF_MAIN()