У меня есть этот кусок кода
glReadBuffer( GL_FRONT );
glReadPixels( 0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer );
Это прекрасно работает во всех видеокартах Nvidia и AMD, которые я пробовал, но не работает почти во всех встроенных видео Intel, которые я пробовал. На самом деле он работает в очень старом 945GME, но не работает во всех остальных. Вместо скриншота я получаю черный экран.
Если это помогает, я работаю с движком Doom3, и этот код получен из встроенного кода захвата экрана. Кстати, даже с оригинальной игрой я не могу делать снимки экрана на этих устройствах Intel в любом случае. Я предполагаю, что они не реализуют стандарт правильно или что-то. Есть ли обходной путь для этого?
Ответы:
Исторически у графики Intel всегда были проблемы с чтением или обращением к переднему буферу. Хорошее практическое правило, которому я следую в Intel, таково: если вы не можете сделать это в D3D, то даже не пытайтесь делать это в OpenGL, даже если в спецификации сказано, что вы должны это делать, а D3D этого не делает. разрешить доступ к переднему буферу таким образом, так что ... просто используйте вместо этого GL_BACK.
источник