<p><code>on_draw</code>必须是类<code>mywindow</code>的方法,而不是函数。不要自己调用<code>on_draw</code>,因为它是在需要更新窗口时自动调用的。<br/>
在<code>on_draw</code>开始时,您必须通过(请参见<a href="https://pyglet.readthedocs.io/en/latest/programming_guide/windowing.html" rel="nofollow noreferrer">Windowing</a>)清除显示。<br/>
OpenGL立即模式<code>glBegin</code>/<code>glEnd</code>序列必须以<a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBegin.xml" rel="nofollow noreferrer">^{<cd6>}</a>结束。<a href="https://www.khronos.org/opengl/wiki/Primitive#Triangle_primitives" rel="nofollow noreferrer">primitive</a>类型是<code>GL_TRIANGLES</code>而不是<code>GL_TRIANGLE</code>。如果要在[0255]范围内指定颜色,则必须使用<a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glColor.xml" rel="nofollow noreferrer">^{<cd10>}</a>(无符号字节),而不是<code>glColor3b</code>(有符号字节)。<br/>
必须在<code>on_resize</code>事件中通过<a href="https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glViewport.xml" rel="nofollow noreferrer">^{<cd12>}</a>设置可调整大小窗口的视口矩形</p>
<p>请参见示例:</p>
<p><a href="https://i.stack.imgur.com/QSBGF.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/QSBGF.png" alt=""/></a></p>
<pre class="lang-py prettyprint-override"><code>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()
</code></pre>