2013-05-08 3 views
1

Я запускаю приложение 3D реального времени (C++) на виртуальной машине (VMWare WinXP SP2). У меня есть 3D-ускорение, всегда отключенное в VMWare. Я протестировал его как с обычными окнами GDI OpenGL 1.1, так и с Mesa 3D (7.8.2). При работе на Mesa у меня есть полная функциональность OpenGL (VertexBufferObjects и т. Д.), Но она намного медленнее, чем реализация GDI. Я знаю, что Mesa - программный растеризатор, но я предполагаю, что это реализация GDI. Так почему Меса медленнее? Или должен Mesa быть быстрее и на самом деле проблема в моем приложении?Mesa 3D медленнее, чем GDI +

ответ

1

Mesa поддерживает полностью программируемый конвейер и, следовательно, программный растеризатор, который в некоторых случаях использует компиляцию Just-In-Time и, следовательно, не так агрессивно оптимизирован, как Win32 GDI. Это компромисс между функциями и производительностью.

+0

Thx datenwolf. Является ли Gallium llvmpipe альтернативой, чтобы сделать его быстрее? Сайт Mesa говорит, что это самый быстрый растеризатор для mesa. Я только что скомпилировал Mesa 7.8.2 в Visual Studio и не обращал внимания на Gallium. – Michbeckable

+0

@ MichiMichbeck: Gallium - графическая архитектура, доступная только в Linux (AFAIK). Я не знаю, можно ли скомпилировать это для Windows. Вам также понадобится инфраструктура LLVM, установленная в вашей системе для ее использования (или как-то связать ее с Mesa); до сих пор я никогда не строил Mesa с LLVM, встроенным в нее, но пусть он всегда использует LLVM, установленный в моей системе, в любом случае (для clang и других компиляторов, использующих его как backend). – datenwolf

+0

Ок, thx. Я просто понял, что использовал отладку, построенную из Mesa opengl32.dll, - теперь сборка сборки быстрее.) – Michbeckable