Я использую Yocto как встроенную систему с OpenGL 2.1, GLEW 2.0.0 и Mesa 17.0.2. Я делаю программный рендеринг с экрана на монитор через HD/SDI. Проблема, с которой я сталкиваюсь, заключается в том, что моя частота обновления составляет около 1 Гц. На моем компьютере для разработки у меня около 20 кадров в секунду, когда аппаратное ускорение отключено в Debian. Встроенная машина не такая мощная, поэтому я понимаю снижение производительности, но 1 FPS кажется немного низким. Для моей оптимизации я отключил:
glDiasble(GL_LINE_SMOOTH)
glDiasble(GL_POINT_SMOOTH)
glDiasble(GL_SMOOTH)
glDiasble(GL_MULTISAMPLE)
glShadeModel(GL_NONE)
У меня нет отбраковки, потому что я использую только 2D-изображения.
Однако я установил минимальный и магнитный фильтр на GL_NEAREST.
Моя замена буфера и создание контекста выглядит примерно так:
bool makeContext()
{
width = 1280;
height = 720;
context = OSMesaCreateContextExt(OSMESA_RGBA, 0, 0, 0, NULL);
if(!context)
{
//...
return false;
}
bufferSize = width * height * 4 * sizeof(GL_UNSIGNED_BYTE);
frameBuffer = (char*)mallic(bufferSize);
frameBuffer = (char*)0_buf_baseaddr;
if(!OSMesaMakeCurrent(context, frameBuffer, GL_UNSIGNED_BYTE, width, height));
{
//...
return false;
}
OSMesaPixelStore(OSMESA_Y_UP, 0)
{
//...
}
return true;
}
void swapBuffers()
{
frameBuffer = (char*) swap_page(); //returns a spot in memory with update
OSMesaMakeCurrent(context, frameBuffer, GL_UNSIGNED_BYTE, width, height);
}
Я думал о применении трафарета, но не уверен, что это поможет производительности. Я почти уверен, что проблема связана с интенсивным использованием альфа-каналов с моими изображениями, которые я использую. Несколько движущихся слоев друг за другом для получения желаемых эффектов.
Что-то не так с моим обменом или созданием, что очевидно? Кроме того, основываясь на уже сделанных мною оптимизациях, могу ли я сделать что-нибудь еще, что могло бы помочь?
glInvalidateFramebuffer()
черезARB_invalidate_subdata
, это может быть быстрее, чем прямоеglClear()
с. - person genpfault   schedule 12.03.2019llvmpipe
, либо, что еще лучше, не используйте GL. Если вы просто смешиваете изображения, используя что-то, что не является программным обеспечением, GL будет намного быстрее. - person Ross Burton   schedule 27.03.2019