Главная страница
    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.44 MB
Время: 0.041 c
11-1107350382
Борис
2005-02-02 16:19
2005.09.25
MSK


14-1125546723
NewWonder
2005-09-01 07:52
2005.09.25
С днём знаний!


14-1125452640
Progamer
2005-08-31 05:44
2005.09.25
подозрительный сервак закачки музыки


5-1100847897
Stanislav
2004-11-19 10:04
2005.09.25
DBControl и Открытие DataSet a


1-1125373161
Артем К.
2005-08-30 07:39
2005.09.25
Подскажите, пожалуйста, как перевести дату и время в





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский