Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с отрисовкой динамических буферов на DirectX 10  (Прочитано 9527 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sket4
Участник

ru
Offline Offline
Пол: Мужской

« : 23-11-2010 21:14 » 

Всем доброго времени суток!

Используемая библиотека - DX10.
Обьекты с динамическим вершинным буфером не всегда отрисовываются в кадре, поэтому возникает хаотичное "моргание" объекта. Долго рылся у себя в своем коде, проблему выявить не удалось. Проблема возникает вне зависимости, изменяется ли содержимое вершинных буферов или нет, и только при наличии вызова метода Map(). Кто-нибудь сталкивался с подобной проблемой? Если да, прошу помочь мне советом.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 24-11-2010 04:56 » 

а вершина не выскакиивает за конус видимости или за экран проекции ?
Записан

Sket4
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 24-11-2010 19:25 » 

Подозреваю, что программе не всегда удается получить доступ к участку памяти, в котором находятся динамически изменяемые вершины, в режиме отладки об этом никаких сообщений не вижу.  Для наглядности прикреплю бинарный файл (тест -> Загрузить PeakValley. Компилил под vs2010).

* Release.rar (24.37 Кб - загружено 902 раз.)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 25-11-2010 04:43 » 

не хватает MSVCP100.DLL
Записан

Sket4
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 25-11-2010 05:29 » 

vs2010 runtime libs http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84&displaylang=en
Вчера заметил, что вершины динамического буфера рисуются не хаотично, а строго через кадр. То есть в первом кадре получаю указатель с действительными координатами вершин, во втором - все координаты равны нулю, и так далее.
Записан
Sket4
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 25-11-2010 08:01 » 

Проблема решена. Виной всему были типичные нубские ошибки: при вызове метода Map() я указывал флаг D3D10_MAP_WRITE_DISCARD, и получал указатель, в который процессор мог только записывать, и тут же считывал с него данные. Правильным было обновлять копию буфера в системной памяти, и только потом записывать с него данные в буфер. И еще - при записи в буфер для каждой вершины следовало перезаписывать значение цвета (хотя они и не изменялись вроде как), в противном случае весь массив вершин иногда окрашивался в черный цвет. Алексей, спасибо за внимание  Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 25-11-2010 08:12 » 

Sket4, за что спасибо то, я абсолютно ничего не сделал )
Записан

Sket4
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 25-11-2010 08:28 » new

за внимание, написал же  Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines