Ничего себе, я удивлен, что SQL еще не составил его здесь. Угадайте, что означает, что никто не любит его:)
... И несколько бонусных причин ненавидеть его, без всякой дополнительной оплаты
В конечном итоге моим решением было переключиться на Pyglet , который, кажется, поддерживает OpenGL намного лучше, чем Pygame, и не имеет проблем с мерцанием.
Лучший способ свести разрыв изображения к минимуму - поддерживать частоту кадров как можно ближе к частоте экрана. В библиотеке SDL нет vsync, если вы не запускаете через нее OpenGL, поэтому единственный способ - самостоятельно определить частоту кадров. Аппаратный двойной буфер SDL не гарантируется, хотя, когда он работает, он хорош. Я редко видел это в действии.
По моему опыту работы с SDL, вы должны использовать OpenGL для полного устранения разрывов. Это небольшая корректировка, но рисование простых 2D-текстур не так уж и сложно, и вы получаете несколько других дополнительных бонусов, которые вы можете реализовать, например, вращение, масштабирование, смешивание и т. Д.
Однако, если вы все еще хотите использовать программный рендеринг, я бы рекомендовал использовать обновление грязного прямоугольника. К нему также немного сложно привыкнуть, но он экономит массу обработки, что может облегчить поддержание обновлений в нужном темпе, и позволяет избежать разрыва всего экрана (если вы не прокручиваете всю игровую область или что-то в этом роде).