2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Оптимизация отрисовки меша без d3d ogl
Сообщение18.04.2013, 19:37 
Всем привет.
Разбираюсь с трехмерной графикой. Инструменты C++Builder->Canvas.
Научился отрисовывать точки в перспективе. В дальнейшем нужно будет реализовать вращение объекта, перемещение и масштабирование. Для этого нужно сразу прикрутить, наиболее оптимальное, решение отрисовки всех вертексов и линий между ними(возможно и полигонов).
Я понимаю, что нужен массив с координатами всех точек, а вот как дальше не врублюсь. Думал два массива и рисовать линии в каждой итерации цикла, между точками с индексами этого массива. Потом подумал может в каждой итерации отрисовывать сразу квадрат или четыре квадрата. Вобщем подскажите пожалуйста, как оптимальнее всего разрешить данный вопрос.
Заранее благодарен.

P.S. Читал за какието ветекс и индекс буферы, но это применяли в огле.

-- 18.04.2013, 21:19 --

Вертекс и индекс буферы самый оптимальный вариант или есть какаято более продвинутая(внизимная :mrgreen: ) технология?

 
 
 
 Re: Оптимизация отрисовки меша без d3d ogl
Сообщение20.04.2013, 07:15 
Аватара пользователя
pragma_once в сообщении #712373 писал(а):
Думал два массива и рисовать линии в каждой итерации цикла, между точками с индексами этого массива.

Сами поняли, что написали?

Всё ваше сообщение говорит о изобритении велосипеда. Думаю вам надо вначале изучить существующие методы и подходы. Ссылки в конце сообщения.

pragma_once в сообщении #712373 писал(а):
В дальнейшем нужно будет реализовать вращение объекта, перемещение и масштабирование. Для этого нужно сразу прикрутить, наиболее оптимальное, решение отрисовки всех вертексов и линий между ними(возможно и полигонов).

Это ошибка. Преждевременная оптимизация вредит разработке программы. Тем более, если вы не знаете, где тормозит.
Предлагаю взглянуть на задачу не снизу-вверх, а сверх-вниз. Это добавит понимания задачи. Для этого сложную задачу разбиваете на простые подзадачи. А те в свою очередь на ещё более простые и так далее пока подзадача не станут настолько простыми, что их не будет нужды разбивать.
Что бы ничего не упустить предлогается зарисовать это в виде схемы деления.

По поводу оптимизации есть несколько методов:
1) Отсечение лишнего.
2) Группировка данных по однотипной операции.
3) Снижения точности. (Замена сложных вычислений простыми).

Конкретно в вашем случае надо использовать 2 метод.
Для вывода линии не нужно над каждой точкой линии производить проекционные преобразования достаточно сделать только над крайними точками, а далее интерполировать результаты.

pragma_once в сообщении #712373 писал(а):
Научился отрисовывать точки в перспективе. В дальнейшем нужно будет реализовать вращение объекта, перемещение и масштабирование.

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

http://algolist.manual.ru/graphics/3dfaq/index.php
http://en.wikipedia.org/wiki/Rendering_(computer_graphics)#Chronology_of_important_published_ideas
http://graphicon.ru/oldgr/courses/cg99/notes/lect10/ogl_vvol.htm - последняя ссылка временно не работает (выходные в МГУ свет выключили, в будни включат)

 
 
 
 Re: Оптимизация отрисовки меша без d3d ogl
Сообщение22.04.2013, 14:31 
Pavia
Цитата:
Сами поняли, что написали?

Да нет, этот вариант у меня сразу отпал ессно (просто мне это в голову с ходу стрельнуло :) ).
Цитата:
Думаю вам надо вначале изучить существующие методы и подходы

Ну я в этот же день нашел:
Цитата:
Вертекс и индекс буферы самый оптимальный вариант или есть какаято более продвинутая

:mrgreen:
Цитата:
Для вывода линии не нужно над каждой точкой линии производить проекционные преобразования достаточно сделать только над крайними точками, а далее интерполировать результаты.

Ну конечно же я не собирался производить преобразования над каждым пикселем линии, а только над крайними точками и использовать методы Canvas->MoveTo, Canvas->LineTo (хотя возможно я вас нипонил :| ).

Я понял. Просто самым узким местом, при пересчете вертексов, здесь является цикл, хоть какие мы будем использовать методы и подходы.

За ссылки спасибо почитаю.

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group