В этом уроке мы рассмотрим базовые принципы рисования, но сперва есть некоторые вещи, которые должны запомнить перед тем, как мы начнем рисовать.

Любой объект, который рисуется с помощью Direct3D, рисуется с помощью треугольников. Каждый из них задается тремя точками – векторами, которые уточняют координаты (X,Y и Z) точки. Иногда одного вектора не достаточно для решения поставленной задачи. Например в том случае, когда нам нужно задать цвет для выбранной точки. В этом случае появляется такое понятие, как вершина – список свойств данной точки (координаты, цвет и т.д.).

DirectX предоставляет удобную конструкцию для хранения вершин - CustomVertex. Просто добавьте следующий код в начало OnPaint метода:

1
2
3
4
5
6
7
8
  CustomVertex . TransformedColored [ ] vertices = new CustomVertex . TransformedColored [ 3 ] ;
  vertices [ 0 ] . Position = new Vector4 ( 150f , 100f , 0f , 1f ) ;
  vertices [ 0 ] . Color = Color . Red . ToArgb ( ) ;
  vertices [ 1 ] . Position = new Vector4 ( this . Width / 2 + 100f , 100f , 0f , 1f ) ;
  vertices [ 1 ] . Color = Color . Green . ToArgb ( ) ;
  vertices [ 2 ] . Position = new Vector4 ( 250f , 300f , 0f , 1f ) ;
  vertices [ 2 ] . Color = Color . Yellow . ToArgb ( ) ;

В первой строчке мы создаем массив для хранения трех вершин. TransformedColored значит, что данные вершины будут иметь координатами экрана (формы) и каждая точка будет иметь свой цвет. Дальше мы заносим поочередно координаты каждой из точек и ее цвет. Не обращайте внимания пока на 4-ю координату.

Теперь мы должны указать устройству нарисовать треугольник. Сразу после Clear нужно добавить:

1
2
3
  device . BeginScene ( ) ;
  device . EndScene ( ) ;

Первая строчка объявляет устройству. что мы начинаем создание сцены. Сцена – это целый мир объектов, которые устройство должно отобразить. Вторая строка говорит устройству, что бы оно завершило построение сцены. Следующие строки зададут нашу сцену (на данный момент просто треугольник), они должны быть вставлены между началом и концом объявления сцены.

1
2
  device . VertexFormat = CustomVertex . TransformedColored . Format ;
  device . DrawUserPrimitives ( PrimitiveType . TriangleList , 1 , vertices ) ;

Первая строка задает тип вершин, которые будут использоваться. Вторая – рисует треугольник.

Вот и все! Теперь, если вы запустите свой проект, то увидите нарисованный треугольник, разукрашенный в разные цвета. В следующем уроке, вы узнаете больше о камере и координатах .