Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Выполняем IDirect3DDevice9::CreateVertexBuffer в другом потоке   Найти похожие ветки 

 
MrAngel   (2004-12-25 22:37) [0]

Помнится ещё когда начинал изучать DIrect3D, где то вычитал что сабж возможен но не желателен. Сегодня попытался найти данную инфу в SDK, но так ничего путного и не приглянулось.

Проблема то вот в чём. Если идёт выполнение CreateVertexBuffer в другом потоке, то - есть шанс попадания этого выполнения на IDirect3DDevice9::BeginScene и IDirect3DDevice9::EndScene. Как раз меня и интересует эта проблема.

Не будет ли такой ерунды как падение скорости (speed penalty), или ещё хуже какой нибудь конфликт?


 
A22   (2004-12-25 23:54) [1]

вообщу лучше многопоточностью не баловаться таким образом.. но ежели очень надо, хм, попробуй флаг какой-нить установить глобальный, который есть true ежели BeginScene() вызвана. ну а при создании буфера
while (begin_scene_called);
чтобы подождать окончания вызова рендера.

может вариант и не лучший но уж работать должен.


 
Дед Мазай и зайцы   (2004-12-26 22:47) [2]

Не совсем ясно для чего тебе надо в разных потоках. Обясни плиз!!!


 
MrAngel   (2004-12-27 13:56) [3]

A22   (25.12.04 23:54) [1]  - можно сделать и так, но тогда теряется смысл выполнения в другом потоке (получается синхронизация)

Дед Мазай и зайцы   (26.12.04 22:47) [2] - всё просто. Рендер выполняется у меня в основном потоке. При этом вся загрузка ресурсов с файлов в память, а также их обработка и создание CreateVertexBuffer в частности - делается в другом потоке.
Таким образом я могу делать одновременно рендер и загрузку данных.

Если всё ещё не понятно для чего это - вспомните какую нибудь игру. Где перед игровой ситуацией идёт её загрузка, при этом показывается прогресс загрузки, имена загружаемых файлов и прочее. Как вы думаете как это сделано??? Вот именно - Идет процесс загрузки и одновременно рендерится прогресс бар и прочая ерунда.

В общем вопрос открытый...


 
Sapersky   (2004-12-28 17:34) [4]

попробуй флаг какой-нить установить глобальный, который есть true ежели BeginScene() вызвана

Ну или Enter/LeaveCriticalSection. Какое-то замедление будет, но вряд ли большое - прогрессбар недолго рисовать.

По этой же причине проще использовать один поток и перерисовывать прогрессбар в промежутках между загрузкой разных моделей/текстур (их же не одна штука?).


 
MrAngel   (2004-12-28 20:19) [5]

Ребята - вы не прониклись едеей и не поняли суть проблемы.
Ладно прогресс бар - да не в нём то дело. Во время рендера не очень то усидишься, когда загружается целая сцена.



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

Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.055 c
1-1110370347
Max Zyuzin
2005-03-09 15:12
2005.03.20
Импорт из pdf файла


9-1103729660
-=SS=-
2004-12-22 18:34
2005.03.20
GlScene Тень


8-1101715834
Алексей
2004-11-29 11:10
2005.03.20
WinampAPI


14-1109678822
asafr
2005-03-01 15:07
2005.03.20
сочинение по теме «Кем я хочу стать когда я буду большим»


1-1109794626
Новичек
2005-03-02 23:17
2005.03.20
Альтернатива Application.ProcessMessages.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский