Составители:
Рубрика:
30
pD3DDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 3, 2);
Здесь мы выводим фигуру, в качестве базы у которой стоят треугольники
со смежной стороной (D3DPT_TRIANGLEEAN). Прямоугольник в буфере
описывается начиная с третьей вершины, поэтому второй параметр равен 3, а для
формирования прямоугольника нужно два треугольника, поэтому последний
параметр равен 2.
После отображения сцены отключаем смешение, установив параметру
D3DRS_ALPHABLENDENABLE значение 0 с помощью метода SetRenderState.
Чтобы задать прозрачность, необходимо воспользоваться функцией
D3DCOLOR_ARGB. Она получает в качестве параметров четыре значения:
прозрачность, красный, зеленый и голубой цвет. Прозрачность задается в
диапазоне от 0 (полностью прозрачен) до 255 (не прозрачен). Давайте зададим у
нашего прямоугольника цвета с учетом прозрачности, т. е. у вершин с индексами
от 3 до 6 цвет будет задаваться функцией D3DCOLOR_ARGB:
Triangle[3].color = D3DCOLOR_ARGB(0, 255, 0, 255);
Triangle[4].color = D3DCOLOR_ARGB(О, 0, 255, 255);
Triangle[5].color = D3DCOLOR_ARGB(200, 255, 255, 0);
Triangle[6].color = D3DCOLOR_ARGB(255, 255, 255, 255);
Первые две вершины будут абсолютно прозрачны, потому что у них
первый параметр функции D3DCOLOR_ARGB равен нулю. У остальных точек
прозрачность равна 200 и 255 соответственно.
Теперь, чтобы сцена отображалась корректно с учетом заданной
прозрачности, необходимо указать значения свойств источника и приемника
прозрачности. Параметру источника D3DRS_SRCBLEND зададим прозрачность
D3DBLEND_ SRCALPHA, a D3DRS_DESTBLEND укажем
D3DBLEND_INVSRCALPHA:
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, 1);
pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
Теперь запустите пример и посмотрите на результат работы. Треугольник
больше не будет прозрачным, потому что для него степень прозрачности не
задается, а вот прямоугольник будет выглядеть достаточно красиво, потому что
две вершины полностью прозрачны, а другие нет, и произойдет плавный переход.
Задание
Сцена содержит два тела вращения, оси которых совмещены. Тела
вращения задаются кривыми, конечный вид которых собирается из трех
элементов, перечисленных в таблице 2. Номера элементов определяются по
следующему алгоритму:
Пусть Х
0
– последние 3 цифры в зачетке. Тогда номера элементов для
первой фигуры определяются по формулам:
K
i
=X
i
mod 10, где Xi = (X
i-1
* 413 ) mod 1000
pD3DDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 3, 2); Здесь мы выводим фигуру, в качестве базы у которой стоят треугольники со смежной стороной (D3DPT_TRIANGLEEAN). Прямоугольник в буфере описывается начиная с третьей вершины, поэтому второй параметр равен 3, а для формирования прямоугольника нужно два треугольника, поэтому последний параметр равен 2. После отображения сцены отключаем смешение, установив параметру D3DRS_ALPHABLENDENABLE значение 0 с помощью метода SetRenderState. Чтобы задать прозрачность, необходимо воспользоваться функцией D3DCOLOR_ARGB. Она получает в качестве параметров четыре значения: прозрачность, красный, зеленый и голубой цвет. Прозрачность задается в диапазоне от 0 (полностью прозрачен) до 255 (не прозрачен). Давайте зададим у нашего прямоугольника цвета с учетом прозрачности, т. е. у вершин с индексами от 3 до 6 цвет будет задаваться функцией D3DCOLOR_ARGB: Triangle[3].color = D3DCOLOR_ARGB(0, 255, 0, 255); Triangle[4].color = D3DCOLOR_ARGB(О, 0, 255, 255); Triangle[5].color = D3DCOLOR_ARGB(200, 255, 255, 0); Triangle[6].color = D3DCOLOR_ARGB(255, 255, 255, 255); Первые две вершины будут абсолютно прозрачны, потому что у них первый параметр функции D3DCOLOR_ARGB равен нулю. У остальных точек прозрачность равна 200 и 255 соответственно. Теперь, чтобы сцена отображалась корректно с учетом заданной прозрачности, необходимо указать значения свойств источника и приемника прозрачности. Параметру источника D3DRS_SRCBLEND зададим прозрачность D3DBLEND_ SRCALPHA, a D3DRS_DESTBLEND укажем D3DBLEND_INVSRCALPHA: pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, 1); pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); Теперь запустите пример и посмотрите на результат работы. Треугольник больше не будет прозрачным, потому что для него степень прозрачности не задается, а вот прямоугольник будет выглядеть достаточно красиво, потому что две вершины полностью прозрачны, а другие нет, и произойдет плавный переход. Задание Сцена содержит два тела вращения, оси которых совмещены. Тела вращения задаются кривыми, конечный вид которых собирается из трех элементов, перечисленных в таблице 2. Номера элементов определяются по следующему алгоритму: Пусть Х0 – последние 3 цифры в зачетке. Тогда номера элементов для первой фигуры определяются по формулам: Ki=Xi mod 10, где Xi = (Xi-1 * 413 ) mod 1000 30
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »