Delphi + OpenGL
Проще OpenGL, по крайней мере в DirectX всё немного сложнее для понимания... Всякие Индекс-массивы, потоки и т.д.
Что еще за потоки
ЗЫ: А эти потоки -- это для меня вообще тёмное место в мануалах... Вроде бы конвейер DirectX умеет обрабатывать много потоков вершин и индексов за раз. Это от VPU зависит... Зачем надо -- не знаю, но какой-то код по этому поводу вроде приходится писать.
Заполняется буффер вершин ( думаю там понадобится не более 10-20 треугольников ) и далее просто рендерится одна моделька , меняется только матрица ( поворот + перенос ) . Думаю оптимизировать потребуется больше процесс создания матриц для каждого элемента чем расходы на рендеринг. .
Думаю, оптимизировать вообще ничего не надо будет, несколько сотен фпс обеспечено
мне требуется строить около 100*10^3 цилиндров с насаженными на них конусами, и фпс-ы особой роли не играют
В максе делаешь модельку экспортируешь в формат, 3ds, там в текстовом виде есть все вершины в нужном порядке.
Можно в *.x файл экспортнуть, вроде как еще проще будет.
у них у каждого своя независимые координаты и углы наклона.
D3D чтобы нарисовать модель достаточно знать набор треугольников и матрицу преобразований.
Т.е. вектор перемещения , поворота и масштабирования.
Модель одна , но рисуешь ее N раз с разной матрицей преобразования. Т.е алгоритм примерно такой
Model = CreateVertexes;
foreach(Items)
{
Matrix = MakeMatrix(Item.x, Item.y, Item.z, Item.Rotatex, Item.Rotatey, Item.RotateZ);
ApplyMatrix(Matrix);
RenderModel(Model);
}
Это ж сколько он говорил, 1000 цилиндров?! 1000 раз вызвать ф-ию рисования?! Ну я не знаю, может и быстро будет, но имхо это просто затрахает ускоритель... А не проще ли применить матрицу к модельке, а полученные координаты запихачить в вертекс-буффер и всё сразу отрендерить? Хотя может я и не прав.
p.s. я так понимаю это все в динамике происходит и заполнять vertex buffer каждый цикл придется, а lock unlock дорого обходятся вот в чем делема.
Оставить комментарий
stilet78
Посоветуйте плз доки по сабжу, чтоб попроще и попонятней были.А вообще что выбрать OpenGL или Direct3d для оконных приложений, где проще всего будет построить такой 3D рисунок?