Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Как правильно хранить обект меш геометрии для Оптимизации ?

Как правильно хранить обект меш геометрии для Оптимизации ?

werasaimonПостоялецwww8 дек. 201821:55#0
Как само ефиктивно реализовать класс меш геометрии, так чтоб как можно эфиктивней , и как можно быстрее работала программа.!?

Варянт : 1

+ Показать

Варянт : 2

+ Показать

Варянт : 3

+ Показать


Скажите как мне лутше всего хранить даные для геометрии, чтоб как можно быстрей видилялась память, и как можно бистрей имееть доступ к даным геометрии с минимальной нагрузкой на ЦП...? Кароче как написать как можно оптимизированей меш геометрию?
И вообще дайте какое-то советы по этой теме.  Интересно всё...?

P.S: Надо ли мене std::vector  заминить на свой опитимизорованый быстрый менеджер памяти с своим пулом, для того чтоб программа работала быстрей ?

Правка: 9 дек. 2018 21:44

MiraПостоялецwww8 дек. 201822:17#1
werasaimon
> P.S: Надо ли мене std::vector  заминить на свой опитимизорованый быстрый
> менеджер памяти с своим пулом, для того чтоб программа работала быстрей ?
если у тебя все меши одинаковые и будут удаляться и создаваться за кадр по 500 раз то надо!
/A\Постоялецwww8 дек. 201822:24#2
werasaimon
> так чтоб как можно эфиктивней
эффективней для каких задач?
werasaimonПостоялецwww9 дек. 20180:02#3
Mira
> если у тебя все меши одинаковые и будут удаляться и создаваться за кадр по 500
> раз то надо!
Да будут ! потому что после каждой операции над мешом я сохраняю его копию , для того чтоб next prev в программе !


/A\
> эффективней для каких задач?
нахождения края , заглаживания , быстрой инициализации геометрии сферы  , цилиндра и,т,д .
Сохранения - Удаления - Копирования Меша,
Короче говоря для всех тех операций с геометрией что можно делать в 3DS-MAX . Blender , Cinema4D ....

Правка: 9 дек. 2018 0:02

/A\Постоялецwww9 дек. 20180:21#4
werasaimon
Ну в общем, если тебе нужен доступ только к позиции, то выносишь позицию в отдельный массив, это лучше для кэша.
MiraПостоялецwww9 дек. 20180:48#5
werasaimon
> Да будут ! потому что после каждой операции над мешом я сохраняю его копию ,
> для того чтоб next prev в программе !
не надо тут пул
изменения меша у тебя не 500 раз в секунду будут, да и данные не однородные раз изменяются.
если будешь сохранять изменния 500 раз в сек у тебя память кончится после пары проведений мышкой)
itmanager85Постоялецwww9 дек. 20182:00#6
werasaimon
чувак, устройся уже на работу :D
Great V.Постоялецwww9 дек. 20182:38#7
werasaimon
На самом деле наружу достаточно предоставить интерфейс с индексатором, типа:
interface IVertex {};
interface ICommonVertex: IVertex {
  vec3 Position { get; }
  ...
}

interface IMesh<Vertex> {
  Vertex& operator[] (uint index);
}
А внутри держать все в сырых массивах байтов:
class MeshImplementation: IMesh<VertexImplementation> {
  vector<byte> bytes;
  
  VertexImplementation& operator[] (uint index);
}
Чтобы логика могла работать с нормальными структурами данных и не было лишних затрат на конвертацию/хранение данных.
Да, я знаю что это не совсем С++ код.

Правка: 9 дек. 2018 2:41

werasaimonПостоялецwww9 дек. 201821:36#8
itmanager85
> чувак, устройся уже на работу :D
ЧтооО "WTF" !? Ну вот как , ну вот как , объясните каааак можно было прийти к такому вывводу в этом трейде, где стоял вопрос про геометрию?
Я так понимаю пишешь коментарии только ради чтоб написать всякое.  Обясни мне в чем смысл!?

Правка: 9 дек. 2018 21:45

werasaimonПостоялецwww9 дек. 201821:37#9
Great V.
А что делает оператор interface?

/A\
> Ну в общем, если тебе нужен доступ только к позиции, то выносишь позицию в
> отдельный массив, это лучше для кэша.
> Mira
А если мне нужен доступ к позиции, нормали, текстурных координат. и.т.д  То мне лутше хранить всё отдельных массивах
, причём так как в первом варянте кода ?


Mira
> если будешь сохранять изменния 500 раз в сек у тебя память кончится после пары
> проведений мышкой)
Я удаляю данные с хвоста. Я храню только 50-100.шагов для next prev !

Правка: 9 дек. 2018 21:49

Great V.Постоялецwww10 дек. 20180:15#10
werasaimon
> А что делает оператор interface?
Считай это псевдокодом, а не чистым С++.
Мне лень реализовывать интерфейсы и геттеры штатными средствами С++, потому я надеюсь на твое знание C#.

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр