on_draw
должен быть методом класса mywindow
, а не функцией. Не вызывайте on_draw
самостоятельно, потому что он вызывается автоматически, когда окно необходимо обновить. В начале on_draw
вы должны очистить отображение (см. Windowing ). Последовательность glBegin
/ glEnd
в немедленном режиме OpenGL должна заканчиваться glEnd
. Тип примитивный - это GL_TRIANGLES
, а не GL_TRIANGLE
. Если вы хотите указать цвета в диапазоне [0, 255], вы должны использовать glColor3ub
(байт без знака), а не glColor3b
(байт со знаком). Вы должны установить прямоугольник области просмотра изменяемого размера на glViewport
в событии on_resize
.
См. Пример:
import pyglet
from pyglet.gl import *
class mywindow(pyglet.window.Window):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_minimum_size(300,300)
def on_draw(self):
self.clear()
glBegin(GL_TRIANGLES)
glColor3ub(255, 0, 0)
glVertex2f(-1, 0)
glColor3ub(0, 255, 0)
glVertex2f(1, 0)
glColor3ub(0, 0, 255)
glVertex2f(0, 1)
glEnd()
def on_resize(self, width, height):
glViewport(0, 0, width, height)
window = mywindow(300,300,"deneme", True)
pyglet.app.run()