DirectX: Как вы инициализируете буфер вершин и индексный буфер для конуса? - PullRequest
0 голосов
/ 15 декабря 2009

Как инициализировать буфер вершин и индексный буфер для конуса в DirectX 9 в C ++?

Ответы [ 3 ]

6 голосов
/ 15 декабря 2009

Ну, это довольно легко.

Конус имеет одну точку на одном конце.

На другом конце у вас есть круг. Очевидно, что чем больше точек у вас в этом круге, тем более круглыми они выглядят.

Вы можете построить круг, используя

x = r * cos( theta );
y = r * sin( theta );

Чтобы сделать любой треугольник, вы можете сделать это, подключив тэту и тэту, плюс небольшой эпсилон (2Pi / 60 даст вам 60 очков вокруг основания конуса). Ваша окончательная координата - верхняя 1. Положите каждый набор из трех индексов в буфер индексов, и все готово.

2 голосов
/ 17 декабря 2009

Почему бы вам не использовать функцию D3DXCreateCylinder со вторым радиусом 1 или около того? Таким образом, вы получите объект Mesh с вершинным и индексным буфером. Извлечение оттуда должно быть легкой работой.

P.S. Я бы предпочел использовать инструмент моделирования, но если вам нужно получить все это программно, это самый быстрый способ.

1 голос
/ 15 декабря 2009

Большинство профессионалов рисуют это, используя инструменты CAD, которые имеют возможность сохранять сетку в формате, понятном DX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...