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

Глубокое тестирование GL-приложений (2 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#15
11:44, 17 ноя 2009

DevilDevil

  glClearColor(0.0, 0.0, 0.0, 0.0);
  glShadeModel(GL_SMOOTH);
  glDisable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);
  glDisable(GL_ALPHA_TEST);
  glClearDepth(1.0);
  glEnable(GL_BLEND);
  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  glEnable(GL_TEXTURE_2D);
  glDisable(GL_NORMALIZE);
  glEnable(GL_COLOR_MATERIAL);

Всё это делается в обоих приложениях?

> закомментировал glFlush - ничего не изменилось. На некоторых моих примерах
> давал прирост скорости в пару десятков fps.
> Чё делать ?

SwapBuffers уже делает флуш... А у тебя масло масленное получается...

#16
11:50, 17 ноя 2009

Executor
самое первое, что начал смотреть - стейты GL
Написал модуль, который логирует текущие стейты. Специально добивался идентичности.
См 0й пост - это содержание log-файла. Идентичны.

#17
12:04, 17 ноя 2009

Как организован главный цикл в обоих приложениях?

Может выложишь исходники обоих?

#18
12:19, 17 ноя 2009

Executor
там замудрённый код в обоих случаях.

Давайте я лучше ваш вариант подставлю - и посмотрю. Т.е. ваш рабочий вариант, который точно расчитывает fps и вызывает Render

#19
12:55, 17 ноя 2009

Я ФПС считаю фрапсом...

  bool loop = true;
  while (loop)
  {
    while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
    {
      if (!GetMessage(&msg, NULL, 0, 0))
      {
        if (msg.message == WM_QUIT)
          loop = false;
      }
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
    Render();
  }
#20
14:15, 17 ноя 2009

Установил FRAPS, мерию теперь им

procedure Run();
var
  loop: boolean;
  msg: TMsg;
begin
  loop := true;

  while (loop) do
  begin
    while (PeekMessage(msg, 0, 0, 0, PM_NOREMOVE)) do
    begin
      if (not GetMessage(msg, 0, 0, 0)) then
      begin
        if (msg.message = WM_QUIT) then
          loop := false;
      end;
      TranslateMessage(msg);
      DispatchMessage(msg);
    end;
    Render();
  end;
end;

FPS такое же
eXgine-овский пример правильно FpS считает

#21
14:20, 17 ноя 2009

оконная функция:

function WindowProc(hWnd: HWND; Msg: dword; wParam, lParam: integer): integer; stdcall;
begin
  Result := DefWindowProc(hWnd, Msg, wParam, lParam);
  exit;

end;
#22
14:29, 17 ноя 2009
procedure Render();
begin
    SwapBuffers(h_DC);
end;

FPS - 160
eXgine - овский пример с очисткой экрана и активизацией текстуры - 300 FPS


Почему SwapBuffers может быть такой медленный ?

#23
16:28, 17 ноя 2009

DevilDevil
> Почему SwapBuffers может быть такой медленный ?

у тебя vSync случаем не включен?

#24
16:48, 17 ноя 2009

Phoenics
хочешь сказать у него моник на 160 герц?

#25
16:54, 17 ноя 2009

DevilDevil
> Почему SwapBuffers может быть такой медленный ?

Значит ты делаешь чтото иначе...
Видеорежим может другой выставляешь... Фулскрин-не фулскрин например...
Много всего может быть, без кода сложно ткнуть пальцем и сказать вот поэтому...

#26
17:22, 17 ноя 2009

Нифуя!
Я инициализирую графическую систему, когда окно свёрнуто. Стоило мне написать ShowWindow(Window, SW_SHOW) перед инициализацией GL - и всё заработало как должно.

Теперь несколько вопросов. Почему такое? Можно ли добиться нормального эффекта, проинициализировав графическую систему в свёрнутом окне?
DX7 рендер лучше не стал; в чём дело ?


P.S. с DX-рендером уже были перебои: то он в нормальном режиме работал, то с низким FPS. Я списывал на плохую работу драйверов (Intel), но сейчас вижу, что собака зарыта в каком то другом месте. Помогите найти

#27
17:59, 17 ноя 2009

d.m.k  предложил посмотреть TPIXELFORMATDESCRIPTOR после ChoosePixelFormat в обоих случаях. Равны.

В DX7 корни ведут к IDirect3D7.CreateDevice() и создаётся только в Soft-режиме.
Почему он создаётся в Soft-режиме и изредка создаётся в Hard-режиме ?

Возвращает DDERR_OUTOFMEMORY: 'DirectDraw does not have enough memory to perform the operation.'
Чё за херь ?

#28
19:08, 17 ноя 2009

DevilDevil
> Теперь несколько вопросов. Почему такое? Можно ли добиться нормального эффекта,
> проинициализировав графическую систему в свёрнутом окне?

Эээ... Всмысле в свёрнутом окне?
У меня ShowWindow делается после инициализации ОпенГЛ - на фпс никак не влияет:

  InitOpenGL();
  ShowWindow(hWnd, SW_SHOWDEFAULT);
  UpdateWindow(hWnd);
  SetForegroundWindow(hWnd);
  SetFocus(hWnd);
#29
21:10, 17 ноя 2009

Executor
Ничего не понимаю
Принёс проект домой (Athlon 1700xp, GeFource4) - оба варианта GL/DX дают 20 FPS. Не понимаю

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумГрафика

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