Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.023 c
4-1123025533
i-s-v
2005-08-03 03:32
2005.09.25
Несколько вопросов по WinAPI


14-1124718189
Diaskhan
2005-08-22 17:43
2005.09.25
Как можно войти в группу програмистов


14-1125609338
KilkennyCat
2005-09-02 01:15
2005.09.25
2 сентября. С Днем рождения!


1-1125391752
nikolas
2005-08-30 12:49
2005.09.25
Пошаговое тестирование DLL


14-1125169371
Lamer@fools.ua
2005-08-27 23:02
2005.09.25
Угадай мелодию




   Наверх