Код OpenGL медленный на одном компьютере (но не на других)

У меня есть шейдер, который в настоящее время выполняет трассировку лучей. Шейдер раньше воспринимал информацию сцены как униформу для визуализации сцены, но это оказалось слишком ограниченным, поэтому мы переключились на использование SSBO (буферных объектов хранилища шейдеров). Код прекрасно работает на двух компьютерах, но другой компьютер выполняет его очень медленно. Видеокарта для этого компьютера — Radeon HD 6950. Правильно отображающие видеокарты — GTX 570 и Radeon HD 7970. Сцена отображается правильно на трех компьютерах, но Radeon HD 6950 рендерит ее очень медленно ( 1 FPS, когда мы вращаемся вокруг сцены). Мы думали, что это проблема с версией openGL, но, похоже, это не так, поскольку мы обновили драйверы, и она все еще не работает. Есть идеи, где проблема может быть?

3

Решение

Есть несколько возможностей:

  1. Вы можете упасть с быстрого пути на этой конкретной карте. Некоторые аспекты рендеринга могут быть реализованы не так эффективно, например, на младшей карте.
  2. Возможно, вы достигаете предела VRAM на 6950, но не на двух других картах, и OpenGL по сути бьется, выгружая вещи в основную память и обратно
  3. Возможно, вы запустили рендеринг программного обеспечения на этой карте. Там может быть какая-то особая функция OpenGL, которую вы используете, которая реализована только в программном обеспечении для 6950, но аппаратно ускорена на других картах.

Вы не говорите, с какой ОС вы работаете, поэтому я не уверен, что вам сказать об устранении проблемы. В MacOS вы можете использовать OpenGL Profiler, чтобы проверить, не откатывается ли он к программному обеспечению, и использовать OpenGL Driver Monitor, чтобы проверить, не выгружается ли он. На iOS вы можете использовать инструмент профилирования OpenGL от Xcode для обоих. Я не уверен в Windows или Linux, поскольку у меня нет опыта работы с ними.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]