Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

DX VertexBuffer   Найти похожие ветки 

 
Buffer   (2005-05-26 14:51) [0]

Нет ли возможности сделать так?
Сейчас я заполняю вертексбуффер вот так:

FD3DDevice.CreateVertexBuffer(PrimSize, D3DUSAGE_DYNAMIC,
                             VertexType, D3DPOOL_DEFAULT, VertexBuffer);
VertexBuffer.Lock(0, Primsize, PByte(Vertices), 0);
//тут я забиваю в Vertices информацию.
VertexBuffer.Unlock;

А теперь представим, что я получил соержимое для вертекс буфера в некоторой переменной TempVertices и её содержимое нужно забить в новый вертексбуффер.
Делаю вот так, работает но торомознуто:

FD3DDevice.CreateVertexBuffer(PrimSize, D3DUSAGE_DYNAMIC,
                             VertexType, D3DPOOL_DEFAULT, VertexBuffer);
VertexBuffer.Lock(0, Primsize, PByte(Vertices), 0);
CopyMemory(Vertices,TempVertices,TempVerticesSize);
VertexBuffer.Unlock;

Можно ли сделать эту операцию без CopyMemory? Может как-то сказать, чтобы lock пользовался тем указателем, который ему в Vertices передали и не затирал информацию по этому указателю?
Короче наверное это ламерский вопрос, но все же...


 
Sapersky   (2005-05-27 12:27) [1]

Нет такой возможности. В DirectDraw для поверхностей было. В D3D, насколько помню, нет.
Насчёт "тормознуто" - копирование делается на каждом кадре, что ли? Лучше этого избегать, вообще-то... ну есть ещё флаги блокировки вроде D3DLOCK_DISCARD / D3DLOCK_NOOVERWRITE, они в какой-то степени могут помочь (см. SDK).
Если уж так хочется нарисовать без копирования, есть Draw[Indexed]PrimitiveUP функции. Но они заметно тормознее для большого количества вершин (по сравнению со статическими буферами - c динамическими и копированием на каждом кадре не сравнивал, может, и лучше будет).


 
Buffer   (2005-05-27 16:02) [2]

Не на каждом кадре, но если уж делается... то 2-3 секунды обеспечены. Правда там пока еще этот массив соберется, но я обошел проблему, собирая массив сразу внутри Lock. Прирост правда не большой. Но Спасибо, посмотрю на "Draw[Indexed]PrimitiveUP". С флагами пробывал, но эффекта нужного не достиг, да и в msdn как-то про них почти ничего и не написано.



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.04 c
14-1125677489
Ajax
2005-09-02 20:11
2005.09.25
Параметры запуска AVP 5


1-1125387238
Darmidon
2005-08-30 11:33
2005.09.25
Свернуть все окна + Shell32.dll


14-1125646637
Игорь Шевченко
2005-09-02 11:37
2005.09.25
Программистов очень много...


6-1117775562
Mishenka
2005-06-03 09:12
2005.09.25
Не коннектится FTP сервер.


2-1124202406
Гость22
2005-08-16 18:26
2005.09.25
Почему при запуске приложения, оно запускается свернутым?