Главная страница
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.025 c
4-1122891201
КодеКорешь
2005-08-01 14:13
2005.09.25
кКак установить для выбранного принтер новый формат бумаги


14-1125154722
psa247
2005-08-27 18:58
2005.09.25
Дыра в ядре 2000


14-1125639886
palva
2005-09-02 09:44
2005.09.25
Вы пьете вино из картонных коробок?


3-1124100158
kreyl
2005-08-15 14:02
2005.09.25
Кнопка СТОП для запросов


4-1123062262
MegaVolt
2005-08-03 13:44
2005.09.25
Какие сообщения регулируют рисование GridLines в ListView?