2015-09-30 2 views
1

Я использую библиотеку opensl Mesa3d и использую только средство визуализации SW. Возможно ли изменить источник библиотеки Mesa3D для отключения всех анимаций, оттенков, сглаживания и т. Д., Чтобы максимизировать производительность отображения статических изображений? Я пытаюсь использовать приложение, и я хочу отключить все его динамические 2D/3D-эффекты (например, анимацию, скользящую и т. Д.) И ускорить ее работу и оптимизировать ее для отображения статических изображений.OpenGL: Mesa3D: как отключить сглаживание, анимацию и т. Д., Чтобы ускорить статический рендеринг?

Как бы я это сделал?

+2

Я не вижу, как это должно работать. Такие вещи, как анимация, скольжение и т. Д., Не являются функциями библиотеки Mesa3D. Их можно просто реализовать, используя библиотеку. – BDL

ответ

2

Возможно ли изменить источник библиотеки Mesa3D для отключения всех анимаций, оттенков, сглаживания и т. Д., Чтобы максимизировать производительность отображения статических изображений?

Нет, потому что ничего из этого не сделано Меса. OpenGL, а также расширение Mesa - это просто сложный карандаш, который можно рисовать на холсте framebuffer, одной точке, линии или треугольника за раз.

Любой эффект, анимация, затенение и т. Д. Реализованы приложением, которое вы используете. Mesa просто предоставляет средства для рисования каждого кадра, один за другим. Но это не логика анимации.

+0

Эффекты и анимации выполняются за пределами OpenGL, однако многие вещи могут быть отключены в OpenGL или, по крайней мере, жестко закодированы, поэтому они не могут включаться. См. Эту страницу: http://www.mesa3d.org/perf.html –

+0

@AdamB: Это не так, как это работает. OpenGL - это конечный автомат. То, что вы включаете/отключите в OpenGL, не контролирует эффекты, а параметры низкого уровня. Также, если используется современный OpenGL, практически все происходит через шейдеры ... * и шейдеры не являются обязательными! * Если вы отключите шейдеры, вы получите пустое окно. - Если вы хотите избавиться от определенных эффектов, это необходимо сделать для каждого приложения (или для библиотек). – datenwolf

+0

oops, последний комментарий был неполным. Пересмотренный ниже: @datenwolf, я успешно смог отключить сглаживание (GL_DITHER), смешение (GL_BLEND) и другие вещи, сделав glEnable вызов для них «no op», в основном удалив код для него. Результат был примерно на 10-20% быстрее рендеринга графики (ценой красивости), и я был очень доволен. Кроме того, почему кто-то хочет отключить шейдеры, если они здесь важны? –

0

Анимации создаются и контролируются приложением, поэтому их нельзя отключать в OpenGL. Однако такие эффекты, как сглаживание, смешивание и другие, могут быть отключены, так что они не могут быть активированы приложениями OpenGL, изменяя функцию glEnable, чтобы установить эти флаги в «no ops». См. http://www.mesa3d.org/perf.html и https://www.opengl.org/sdk/docs/man2/xhtml/glEnable.xml.

Смежные вопросы