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

OpenGL, VAO и тормоза (4 стр)

Страницы: 1 2 3 4 5 Следующая »
#45
(Правка: 6:26) 6:25, 16 сен. 2020

greencad
> Нарисовал 5 линий с ненулевыми коорд. + еще 20 тыс. с нулевыми, панорамируется
> без тормозов. Время полного цикла отрисовки 0,5 мс. Значит, тормозит обработка
> вершин?
это как раз значит, что вершины обрабатываются быстро, а тормозит растеризация.

> Хотя я выше уже писал, что отключал шейдер, но тормоза оставались.
> ЗЫ. Блендинг и всякую красоту не включал, не нужна она.
мало ли, нужна она тебе или нет. ты используешь древнюю версию opengl, в которой какого только бреда нету, который может быть включён, нужен он тебе или нет. так как теперь ты знаешь, что тормозит что-то, связанное с растеризацией, я бы рекомендовал тебе дальше копать в этом направлении. например, попробуй отключить тест глубины, попробуй не создавать вообще буфер глубины (чтобы исключить его влияние), поиграйся с форматами пикселя (24 или 32 бита), потому что есть все шансы, что какая-то нелепая ерунда не поддерживается аппаратно и поэтому эмулируется программно со всеми вытекающими последствиями. также не исключено, что драйвер пытается быть умнее, чем он есть на самом деле и, например, добавляет какой-нибудь свой убогий anti-aliasing — я вообще не удивлюсь, поэтому я бы рекомендовал удостовериться, что у тебя линии рисуются именно толщиной в 1 пиксель и у них 100% визуально нет сглаживания.

Aroch
> кратко о твоей проблеме, забудь про GL_LINES.
с чего бы?


#46
8:48, 16 сен. 2020

Suslik
> с чего бы?
потому что медленные зачастую, особенно на intel. Не хитрая эмуляция через трианглы в виде квадов заметно быстрее.

#47
8:57, 16 сен. 2020

Suslik
Воткнул это:

  glDisable(GL_BLEND);
  glDisable(GL_COLOR_LOGIC_OP);
  glDisable(GL_CULL_FACE);
  glDisable(GL_DEBUG_OUTPUT);
  glDisable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
  glDisable(GL_DEPTH_CLAMP);
  glDisable(GL_DEPTH_TEST);
  glDisable(GL_DITHER);
  glDisable(GL_FRAMEBUFFER_SRGB);
  glDisable(GL_LINE_SMOOTH);
  glDisable(GL_MULTISAMPLE);
  glDisable(GL_POLYGON_OFFSET_FILL);
  glDisable(GL_POLYGON_OFFSET_LINE);
  glDisable(GL_POLYGON_OFFSET_POINT);
  glDisable(GL_POLYGON_SMOOTH);
  glDisable(GL_PRIMITIVE_RESTART);
  glDisable(GL_PRIMITIVE_RESTART_FIXED_INDEX);
  glDisable(GL_RASTERIZER_DISCARD);
  glDisable(GL_SAMPLE_ALPHA_TO_COVERAGE);
  glDisable(GL_SAMPLE_ALPHA_TO_ONE);
  glDisable(GL_SAMPLE_COVERAGE);
  glDisable(GL_SAMPLE_SHADING);
  glDisable(GL_SAMPLE_MASK);
  glDisable(GL_SCISSOR_TEST);
  glDisable(GL_STENCIL_TEST);
  glDisable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
  glDisable(GL_PROGRAM_POINT_SIZE);
Не помогло. ФПС=59
+ Показать

А это линии при увеличении, вроде корявые, без бленгинга
+ Показать
#48
9:15, 16 сен. 2020

greencad
> Не помогло. ФПС=59
в обоих случаях уперлось в вертикалку.

#49
9:30, 16 сен. 2020

Aroch

> в обоих случаях уперлось в вертикалку

Это как? Можете пояснить? Спасибо.
#50
9:32, 16 сен. 2020

greencad


https://www.intel.ru/content/www/ru/ru/support/articles/000005552/graphics.html

#51
9:47, 16 сен. 2020

greencad
> Это как? Можете пояснить?
wglSwapIntervalEXT(0) - Выключить вертикальную синхронизацию.
wglSwapIntervalEXT(1) - Включить вертикальную синхронизацию.

#52
10:31, 16 сен. 2020

nonamezerox
Выставил "Использовать настройки приложения"
eDmk
Сделал так:

  FDC:= GetDC(Panel1.Handle);
  FPPI:= GetDeviceCaps(FDC, LOGPIXELSX);
  FRC:= CreateRenderingContextVersion(FDC, [opDoubleBuffered], 2, 1, True, 32, 0, 0, 0, 0, PFD_MAIN_PLANE);
  InitOpenGL;
  ActivateRenderingContext(FDC, FRC, True);
  GLDisableAll;
  wglSwapIntervalEXT(0);
Результат остался прежним (на 20 тыс. линий): 60 FPS при VAO+VBO и в варианте glBegin/glEnd.
#53
10:41, 16 сен. 2020

greencad
> Результат остался прежним (на 20 тыс. линий): 60 FPS при VAO+VBO и в варианте
> glBegin/glEnd.
при зуме также 60?

#54
(Правка: 11:08) 10:54, 16 сен. 2020

greencad
> Результат остался прежним
В настройках видеоадаптера может быть включена принудительная синхронизация.
У меня на 980 Ti 5k fps без синхронизации выдает.
91k линий ~2.7k fps - ничего не тормозит.

#55
11:03, 16 сен. 2020

eDmk

> [b]greencad[/b]
> Выставил "Использовать настройки приложения"

#56
(Правка: 11:09) 11:06, 16 сен. 2020

greencad

Походу, пришло время тяжелой артиллерии.

https://software.intel.com/content/www/us/en/develop/tools/graphi… nalyzers.html

Делай униформ, избавляйся от легаси полностью, вполне возможно драйвер не вполне любит  использованный тобой смешанный  стиль легаси-ффп+шейдеры+вбо и в попытке это схавать падает в эмуляцию. Выбрасывай нафиг это свое:

  
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  glOrtho(-FWinWidth / 2.0, FWinWidth / 2.0, -FWinHeight / 2.0, FWinHeight / 2.0, -1.0, 1.0);
  glViewport(0, 0, FPanelWidth, FPanelHeight);
  glMatrixMode(GL_MODELVIEW);

#57
11:12, 16 сен. 2020

nonamezerox
там всё проще, в филрейт упирается.

#58
(Правка: 11:37) 11:31, 16 сен. 2020

greencad
если хочешь можешь проверить скорость рисования линий квадами, но сомневаюсь что результат будет сильно лучше. Меняя размеры окна можешь понаблюдать за зависимостью fps. В примере рисуется чуть больше чем 20к линий, но сильно роли не играет.

eDmk
> У меня на 980 Ti 5k fps без синхронизации выдает.
> 91k линий ~2.7k fps - ничего не тормозит.
https://www.videocardbenchmark.net/compare/Intel-HD-4600-vs-GeFor… Ti/2451vs3218

#59
12:04, 16 сен. 2020

greencad
Поставь себе движек и отрисуй там свои 20k линий и убедись уже что на большее твоя видюшка не способна.

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