Я пишу программу OpenGL, которая втягивается в вспомогательный буфер, тогда содержимое вспомогательного буфера накапливается в буфере накапливания до того, как GL_RETURN-ed в буфер Back (по существу, для компоновки на экране). Короче говоря, я делаю вид размытия движения. Как ни странно, когда я перекомпилирую и перезагружаю свою программу, я видел содержимое буфера вспомогательной/накопительной памяти из предыдущих программ. Это не имеет смысла. Я что-то не понимаю, не должно ли состояние OpenGL полностью перезагружаться при перезагрузке программы?Как можно сохранить состояние буферов OpenGL между прогонами программы?
Я пишу программу SDL/OpenGL в Gentoo Linux драйверов NVIDIA 195.36.31 на GeForce Go 6150.
Спасибо, по крайней мере теперь я знаю, что это не неожиданное поведение, хотя это просто жутко ... –
Согласен. Хотите добавить: при некоторых условиях видеодрайверы запрашивают нулевую инициализацию выделенной памяти из-за соображений «безопасности» (злая программа может захотеть узнать, что рисуют другие). Это смешно (я бы сказал, что это должна быть ответственность за ту программу, которая хочет скрыть свой промежуточный результат), но так обстоит дело. – valdo
Я сделал много Direct3D через эпоху DirectX9. Когда я начну, фреймбуферы, поверхности и т. Д. Неизменно будут неинициализированы, а код может легко отобразить содержимое предыдущего прогона. В какой-то момент Microsoft или поставщики драйверов должны были решить «исправить» это, и вместо этого вы получите пустые буферы. Я считаю, что это было сделано во имя безопасности. Я бы сказал, что проблемы безопасности действительны; мы не потерпим систему, которая передавала пользовательские процессы. ОЗУ, содержащую нерасчищенные обломки других пользователей, и ОЗУ фреймбуфера не следует рассматривать по-разному. – timday