0
当我使用use_pyglet
作为True
而不是False
时,为什么我看到不同的结果?为什么pygame和pyglet在SAME矩阵的屏幕上显示不同的结果?
矩阵和视口在这两种情况下都是一样的,所以我非常困惑。
import ctypes
import numpy
use_pyglet = False # change this to True to see the difference
if use_pyglet:
import pyglet
from pyglet.gl import *
window = pyglet.window.Window(resizable=True, config=pyglet.gl.Config(double_buffer=True))
else:
import pygame, pygame.locals
from pyglet.gl import *
pygame.init()
pygame.display.set_mode((640, 480), pygame.locals.DOUBLEBUF | pygame.locals.OPENGL)
a = (ctypes.c_int * 4)(); glGetIntegerv(GL_VIEWPORT, a); print numpy.asarray(a)
a = (ctypes.c_float * 16)(); glGetFloatv(GL_PROJECTION_MATRIX, a); print numpy.asarray(a).reshape((4, 4)).T
a = (ctypes.c_float * 16)(); glGetFloatv(GL_MODELVIEW_MATRIX, a); print numpy.asarray(a).reshape((4, 4)).T
def on_draw():
glClearColor(1, 1, 1, 1)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glColor4d(0, 0, 0, 1)
glBegin(GL_LINE_STRIP)
glVertex2d(0, 0)
glVertex2d(100, 100)
glEnd()
if use_pyglet:
on_draw = window.event(on_draw)
pyglet.app.run()
else:
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
break
on_draw()
pygame.display.flip()
pygame.time.wait(20)
pygame的:
Pyglet:
上帝,我浪费了这个:(小时,这是非常愚蠢的...谢谢!+1 – Mehrdad
的OpenGL可以在一开始就让人有些困惑,这是不直接OpenGL的问题,但始终记得检查'glGetError ()',如果可能的话用[调试输出](https://www.khronos.org/opengl/wiki/Debug_Output)。 – Vallentin
是的,事情是我已经完成了我在C++中的工作,所以我已经经历了一些成功的仪式:\只是我现在正在用Python做它,并且它在想我怎么会出错。最初... – Mehrdad