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