2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Оптимизация отрисовки меша без d3d ogl
Сообщение18.04.2013, 19:37 


15/04/13
2
Всем привет.
Разбираюсь с трехмерной графикой. Инструменты C++Builder->Canvas.
Научился отрисовывать точки в перспективе. В дальнейшем нужно будет реализовать вращение объекта, перемещение и масштабирование. Для этого нужно сразу прикрутить, наиболее оптимальное, решение отрисовки всех вертексов и линий между ними(возможно и полигонов).
Я понимаю, что нужен массив с координатами всех точек, а вот как дальше не врублюсь. Думал два массива и рисовать линии в каждой итерации цикла, между точками с индексами этого массива. Потом подумал может в каждой итерации отрисовывать сразу квадрат или четыре квадрата. Вобщем подскажите пожалуйста, как оптимальнее всего разрешить данный вопрос.
Заранее благодарен.

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

-- 18.04.2013, 21:19 --

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

 Профиль  
                  
 
 Re: Оптимизация отрисовки меша без d3d ogl
Сообщение20.04.2013, 07:15 
Аватара пользователя


31/10/08
1244
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 


15/04/13
2
Pavia
Цитата:
Сами поняли, что написали?

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

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

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

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

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group