Хорошо, поэтому я столкнулся с некоторыми проблемами с OpenGL в Windows.Я использую C # .NET, чтобы обернуть GL.Я на Windows7 x64.
Итак, я попробовал два разных теста.В каждом тесте я рисую нетекстурированный четырехугольник (он же два треугольника).Судя по всему, попадание в ЦП связано с SwapBuffers.
Однопоточный тест (Это прекрасно работает) ::
{
Draw stuff;
SwapBuffers;
Sleep(15);
}
Тест RenderingThread (Это съедает весь мой ЦП)::
{
Draw stuff;
SwapBuffers;
//glFinish(); //<< If used this seems to make the CPU usage normal
Sleep(15);
}
Я знаю, что этот пример упрощен, но реальный вопрос заключается в том, почему OpenGL высасывает весь мой ЦП при вызове SwapBuffers в другом потоке, отличном от того, в котором работает поток Windows GUI ??И почему glFinish (), кажется, исправляет это?Все говорят, что не следует использовать glFinish, поэтому я не уверен, что делаю неправильно, или если OpenGL просто отстой в Windows ...?
Я запускаю тот же тест для OSX, процессор кажется нормальным.Я запускаю тот же тест с D3D9 и D3D10 на Windows, процессор кажется нормальным.Не тестировался на Linux, так как мой L-box не работает.