Advertisement
Archon

Geometry - usage

Jun 1st, 2011
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.64 KB | None | 0 0
  1. int WINAPI WinMain(HINSTANCE hInstance,
  2.                    HINSTANCE hPrevInstance,
  3.                    LPSTR lpCmdLine,
  4.                    int nCmdShow){
  5.  
  6.    registerWindowClass("wc1", hInstance);
  7.    
  8.    HWND hWnd = CreateWindowEx(0,
  9.                               "wc1",
  10.                               "test",
  11.                               FULL_SCREEN ?
  12.                                  WS_EX_TOPMOST | WS_POPUP :
  13.                                  WS_OVERLAPPEDWINDOW,
  14.                               0, 0,
  15.                               SCREEN_WIDTH, SCREEN_HEIGHT,
  16.                               0,
  17.                               0,
  18.                               hInstance, //application handle
  19.                               0);
  20.  
  21.    ShowWindow(hWnd, nCmdShow);
  22.  
  23.    d3dInit(hWnd);
  24.  
  25.    //create vertices
  26.    CUSTOMVERTEX vertices[] = {
  27.    { -5, 0, -5, 0x804000 },
  28.    { -5, 0,  5, 0x008000 }, //ground1
  29.    {  5, 0,  5, 0x804000 },
  30.  
  31.    {  5, 0,  5, 0x804000 },
  32.    {  5, 0, -5, 0x008000 }, //ground2
  33.    { -5, 0, -5, 0x804000 },
  34.  
  35.  
  36.    {  0,  3, 0, 0x0000ff },
  37.    { -3, -3, 0, 0xff0000 }, //triangle1
  38.    {  3, -3, 0, 0x00ff00 },
  39.  
  40.    {  0,  3, 0, 0x0000ff },
  41.    {  3, -3, 0, 0x00ff00 }, //triangle2
  42.    { -3, -3, 0, 0xff0000 },
  43.    };
  44.  
  45.  
  46.    Geometry g;
  47.    g.addShape(vertices,   6); //ground
  48.    g.addShape(vertices+6, 6); //colorful triangle (two-sided)
  49.    g.pushBuffer();
  50.  
  51.  
  52.    while (handleEvents()){
  53.       d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); //back buffer
  54.       d3ddev->Clear(0, NULL, D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); //depth buffer
  55.  
  56.       d3ddev->BeginScene();
  57.  
  58.       d3ddev->SetFVF(CUSTOMFVF);
  59.       d3ddev->SetStreamSource(0, v_buffer, 0, sizeof(CUSTOMVERTEX));
  60.  
  61.       //view transform matrix
  62.       D3DXMATRIX matView;
  63.       D3DXMatrixLookAtLH(&matView,
  64.                          &D3DXVECTOR3 (0, 5, 10.0f), //camera
  65.                          &D3DXVECTOR3 (0.0f, 0.0f, 0.0f), //looking at
  66.                          &D3DXVECTOR3 (0.0f, 1.0f, 0.0f)); //up
  67.       d3ddev->SetTransform(D3DTS_VIEW, &matView);
  68.  
  69.       //projection transform matrix
  70.       D3DXMATRIX matProjection;
  71.       D3DXMatrixPerspectiveFovLH(&matProjection,
  72.                                  D3DXToRadian(45), //horizontal FOV
  73.                                  (FLOAT)SCREEN_WIDTH / (FLOAT)SCREEN_HEIGHT, //aspect ratio
  74.                                  1.0f, //near
  75.                                  100.0f); //far
  76.       d3ddev->SetTransform(D3DTS_PROJECTION, &matProjection);
  77.  
  78.       g.render();
  79.  
  80.       d3ddev->EndScene();
  81.       d3ddev->Present(NULL, NULL, NULL, NULL);
  82.    }
  83.  
  84.    d3dQuit();
  85.    return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement