Здравствуйте, peterbes, Вы писали:
P>Здравствуйте, alex_public, Вы писали:
P>В недрах bgfx сидит такое:
P>P>static int32_t renderThread(void* /*_userData*/)
P>{
P>...
P> while (RenderFrame::Exiting != bgfx::renderFrame()) { };
P>...
P> return bx::kExitSuccess;
P>}
P>
P>У меня один процессор из двух сразу загружается на 100%. Аналогичные по сложности демо-программы из SDK DirectX грузят процессор на пару процентов.
P>Примерчик из Sciter-a (DirectX) с вращающимся кубиком ведет себя таким же недопустимым образом.
P>API bgfx не самый дружественный, но Бранимир Караджич всё равно молоток.
Тот пример из Sciter SDK это практически оригинальный пример из DirectX SDK. А там они крутят такой вот "pure man's animation loop":
MSG msg = {0};
while( WM_QUIT != msg.message )
{
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
Render();
}
}
Т.е. Render() всего и вся зовется в loop невзирая на то изменилось ли что-то или нет. В реалии это делается не так.
Просто добавить там
else
{
Render();
Sleep(10);
}
Т.е. 100 FPS max cap и уже картинка меняется: