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()