Основы построения 3-х мерных сцен с использованием библиотеки DirectX. Макушкина Л.А - 26 стр.

UptoLike

28
RECT r;
SetRect(&r, 0, 0, iWidth, iHeight);
pD3DDevice->Clear(1, (D3DRECT*)&r, D3DCLEAR_TARGET,
D3DCOLOR_XRGB(ViewAngle,255, 0), 1.0, 0);
pD3DDevice->BeginScene();
DrawScene();
pD3DDevice->EndScene();
pD3DDevice->Present(NULL, NULL, 0, NULL);
break;
Сначала сцена очищается с помощью метода clear. В данном примере мы
будем рассматривать альфа- смешивание, при котором цвет фона должен быть
темным. Если вы выберете белый цвет, то после смешения фигуры будут белыми
и сольются с фоном. Между вызовами методов BeginScene и EndScene вызывается
функция DrawScene, в которой и происходит формирование сцены.
void DrawScene()
{
// Включаем альфа-смешивание
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, 1);
pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
// Поворачиваем треугольник
float b = float((ViewAngle++)%0x1111) /24;
D3DMATRIX World = {
cos(b), -sin(b), 0, 0,
sin(b), cos(b), 0, 0,
0, 0, 1, 0,
0, 0, 0, 1,
};
pD3DDevice->SetTransform(D3DTS_WORLD, &World);
//Устанавливаем вершинный формат
pD3DDevice->SetStreamSource(О, vTriangleBuffer, 0,
sizeof(sVertex));
pD3DDevice->SetVertexShader(NULL);
pD3DDevice->SetFVF(D3DFVF_XYZ|D3DFVF_DIFFUSE);
// Отображаем треугольник
pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
// Поворачиваем прямоугольник
D3DMATRIX Worldl = {
cos(-b), -sin(-b), 0, 0,
sin(-b), cos(-b), 0, 0,
0, 0, 1, 0,
0, 0, 0, 1,
};
RECT r;
SetRect(&r, 0, 0, iWidth, iHeight);
pD3DDevice->Clear(1, (D3DRECT*)&r, D3DCLEAR_TARGET,
    D3DCOLOR_XRGB(ViewAngle,255, 0), 1.0, 0);

pD3DDevice->BeginScene();
DrawScene();
pD3DDevice->EndScene();

pD3DDevice->Present(NULL, NULL, 0, NULL);
break;
      Сначала сцена очищается с помощью метода clear. В данном примере мы
будем рассматривать альфа- смешивание, при котором цвет фона должен быть
темным. Если вы выберете белый цвет, то после смешения фигуры будут белыми
и сольются с фоном. Между вызовами методов BeginScene и EndScene вызывается
функция DrawScene, в которой и происходит формирование сцены.
void DrawScene()
{
  // Включаем альфа-смешивание
  pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, 1);
  pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
  pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);

  // Поворачиваем треугольник
  float b = float((ViewAngle++)%0x1111) /24;

  D3DMATRIX World = {
    cos(b), -sin(b), 0, 0,
    sin(b), cos(b), 0, 0,
    0, 0, 1, 0,
    0, 0, 0, 1,
  };
  pD3DDevice->SetTransform(D3DTS_WORLD, &World);

  //Устанавливаем вершинный формат
  pD3DDevice->SetStreamSource(О, vTriangleBuffer, 0,
    sizeof(sVertex));
  pD3DDevice->SetVertexShader(NULL);
  pD3DDevice->SetFVF(D3DFVF_XYZ|D3DFVF_DIFFUSE);

  // Отображаем треугольник
  pD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);

  // Поворачиваем прямоугольник
  D3DMATRIX Worldl = {
    cos(-b), -sin(-b), 0, 0,
    sin(-b), cos(-b), 0, 0,
    0, 0, 1, 0,
    0, 0, 0, 1,
  };

                                       28