Войти
ПрограммированиеФорумГрафика

Подскажите информацию про Directx в MFC (2 стр)

Страницы: 1 2
#15
2:22, 12 авг. 2014

Osiris
> OnEraseBkgnd
Спасибо, я проштудировал ваши классы.  Как я понял вы просто создаёте таймер, который вызывается рендер каждые 15 миллисекунд? Верно?
Я просто думал, если так делать рендер, то может ли быть такая ситуация: объектов на сцене так много, что рендер будет занимать около 50 миллисекунд. И получается, что за 1 кадр рендеринга, таймер создаст 3 сообщения ON_WM_TIMER. и получается очередь из этих сообщений будет расти. Или я ошибаюсь?

Может проще создать новый поток. Вроде такого. Работает так-же как и с таймером.

UINT DirectWnd::ThreadProc(LPVOID param)
{
  DirectWnd* wnd = (DirectWnd*)param;
  while(TRUE)
  {
    if(wnd == NULL)
        break;

    wnd->Render();
  }
  return 0;
}


#16
10:06, 12 авг. 2014

ArtemichRulit
> Может проще создать новый поток. Вроде такого. Работает так-же как и с
> таймером.

Можно и так. Мой вариант не претендует на единственный правильный.

#17
18:15, 12 авг. 2014

Обычно в основном потоке есть цикл обработки сообщений, если сообщений нет тогда самое время вызвать invalidate. По идее эта схема и закопана в mfc OnIdle, хотя скорее всего там еще что-то намешано.

#18
18:59, 12 авг. 2014

В WPF (->C#) весь пользовательский интерфейс отрисовывается с помощью DirectX а также можно пользоваться DirectX по обычному назначению (но производительность будет не очень). Можно создавать очень крутые эффекты - скажем создать куб, на гранях которого будут идти разные видеопотоки

Страницы: 1 2
ПрограммированиеФорумГрафика

Тема в архиве.