LINUX.ORG.RU

Узнать почему OpenGL работает в software


0

1

Есть некое 3D приложение, и оно, несмотря на кажущуюся простоту отрисовываемой сцены, работает непростительно медленно на весьма мощной видюхе. Есть подозрение, что причиной тому использование какой-то одной несовместимой фичи, из-за чего OpenGL переключается в software. Вопрос: как узнать из-за чего именно это происходит?

Была идея смотреть на glXIsDirect, но он всегда возвращает единицу. В реализацию OpenGL тоже особо не встроиться, она от блоба нвидии.

★★★★★

Попробуй opengl-профайлером потыкать, например gDEBugger'ом.

vazgen05 ★★★
()

крайне сомнительно - что простое приложение умудряется юзать то что не умеет nvidia железка с фирменными дравами

ae1234 ★★
()

из-за чего OpenGL переключается в software

Скорее, реализует совтфарно именно это фичу.

quantum-troll ★★★★★
()

Подозреваю, что все гораздо проще: данные обрабатывают на CPU и не используют ARB.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от iSage

npot-текстуры?

Нет, проверил. Да и nvidia должна их переварить без проблем.

Попробуй opengl-профайлером потыкать, например gDEBugger'ом.

У меня FreeBSD, под неё профайлера нет. Хотя если посоветуете Debian-based live-флешку, можно посмотреть, повторится ли проблема под Linux и в случае чего подебажить.

Скорее, реализует совтфарно именно это фичу.

«Эта» фича тормозит весь рендер - особенно медленно рисуются объекты с alpha blending'ом, но и без них FPS никакой.

Подозреваю, что все гораздо проще: данные обрабатывают на CPU и не используют ARB.

Всмысле? В коде обычные вызовы OpenGL, которые должны работать на GPU, но по какой-то причине видимо не работают.

slovazap ★★★★★
() автор топика

Есть некое 3D приложение, и оно, несмотря на кажущуюся простоту отрисовываемой сцены, работает непростительно медленно на весьма мощной видюхе.

Всё-таки нужны подробности. Это тебе оно может показаться простым. Там например может быть какой-нибудь кривой шейдер. Помню когда-то игрался со всеми этими опенглами. Дак там в шейдере если в цикле писал for i = 0; i< x; i += 0.1 — работало в 100тыщ медленнее, чем for i = 0; i < x; i += 1 { k = i * 0.1 }...

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

также тормозить может если там излишне часто дёргают матрицы glTranslate glRotate и прочее...

Bad_ptr ★★★★★
()
Ответ на: комментарий от slovazap

В коде обычные вызовы OpenGL, которые должны работать на GPU

не правда. Многие вспомогательные функции опенгл могут работать через ЦПУ. Те же операции над матрицами. Именно поэтому в опенгл >= 4 все эти функции выкинуты и их реализация переложена на прогера, как он их там реализует на шейдере ГПУ или в ЦПУ коде..

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

вызовы OpenGL, которые должны работать на GPU

не правда

Имелось в виду что вызовы только те, которые обязаны работать на GPU, например DrawIndexedPrimitives. Нет там никаких матриц.

А касательно шейдеров идея хорошая, надо проверить.

slovazap ★★★★★
() автор топика
Ответ на: комментарий от slovazap

Хотя если посоветуете Debian-based live-флешку, можно посмотреть, повторится ли проблема под Linux и в случае чего подебажить.

Ubuntu, не?

EugeneBas ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.