#python #opengl #pyglet
#python #opengl #pyglet
Вопрос:
Pyglet, Windows 10. При включении sample_buffers
, чтобы получить более красивые рисунки, я столкнулся со следующей проблемой. Я вижу любые фигуры, которые я рисую batch
, используя (в данном случае одну строку), только когда присутствует дополнительная строка, как показано ниже. Когда она есть batch
, содержимое отображается. Когда ее там нет, ничего не отображается.
Когда config
не используется, в этой дополнительной строке нет необходимости.
Код сокращен до минимума, где появляется это поведение. Я подозреваю, что в моей конфигурации чего-то не хватает. Я уже пытался получить начальную конфигурацию через screen.get_best_config
. Никаких изменений.
import pyglet
from pyglet import shapes
config = pyglet.gl.Config(sample_buffers=1, samples=8, double_buffer=False)
window = pyglet.window.Window(960, 540,config=config, resizable=True)
batch = pyglet.graphics.Batch()
line = shapes.Line(100, 100, 50, 200, width=19, batch=batch)
@window.event
def on_draw():
window.clear()
batch.draw()
pyglet.graphics.draw(2, pyglet.gl.GL_LINES,('v2i', (10, 15, 300, 305))) #without this line nothing is displayed
pyglet.app.run()
Ответ №1:
Если вы отключите двойную буферизацию ( double_buffer=False
— см. pyglet.gl
), Вы должны вручную принудительно выполнить команды GL с помощью glFlush
:
import pyglet
from pyglet import shapes
config = pyglet.gl.Config(sample_buffers=1, samples=8, double_buffer=False)
window = pyglet.window.Window(960, 540,config=config, resizable=True)
batch = pyglet.graphics.Batch()
line = shapes.Line(100, 100, 50, 200, width=19, batch=batch)
@window.event
def on_draw():
window.clear()
batch.draw()
pyglet.gl.glFlush()
pyglet.app.run()
Комментарии:
1. Я искал в разных местах. Для меня проблема появляется с или без
double_buffer
значения False. Но ваше предложение работает идеально.