Вам нужно будет получить от TCustomMesh
и переопределить Render
, чтобы передать вычисленные вами вершины.
Начните с центра и радиуса, а точки следующие. Предполагая, что форма построена параллельно плоскости и впоследствии преобразована. Следующее создает вертикальную шестиугольную призму (у меня нет IDE atm и нет возможности проверить это!).
ClearPoints();
prismEnd := -1;
while prismEnd < 2 do
begin
Z := Center.Z + (prismEnd * length)
angle = 0;
AddPoint(0, 0, Z);
while angle < 360 do
begin
X := Center.X + (radius * Cos(DegToRad(angle)));
Y := Center.Y + (radius * Sin(DegToRad(angle)));
AddPoint(X, Y, Z);
Inc(angle, 60);
end;
Inc(prismEnd, 2);
end;
Для 6 значений это создает TexCoords должно быть
Tex X Tex Y
1 0.5
0.75 1
0.25 1
0 0.5
0.25 0
0.75 0
Для рендеринга вам понадобится 24 треугольника, что в зависимости от вашего метода рисования может потребовать до 72 индексов.
но это будет зависеть от того, как вы сопоставляете свои текстуры.
Я нашел эту ссылку, в которой есть примеры наследование и использование TCustomMesh
теоретически это должно обеспечить такую форму, как
![введите здесь описание изображения](https://i.stack.imgur.com/vUZJV.png)
person
James Barrass
schedule
18.06.2014