gluLookAt
が動作しません。代わりに、私はちょうどカメラを移動させることができると思っglTranslatef
を使用しての、今OpenGLはglTranslatefからgluLookAtに切り替えた後に希望の出力を表示しません
import pyglet
from pyglet.gl import *
window = pyglet.window.Window()
def draw_square():
glBegin(GL_QUADS)
glVertex3f(0, 0, 0.0)
glVertex3f(100, 0, 0.0)
glVertex3f(100, 100, 0.0)
glVertex3f(0, 100, 0.0)
glEnd()
def on_draw():
window.clear()
draw_square()
from pyglet.window import key
@window.event
def on_key_press(symbol, modifiers):
SHIFT_X_BY = 5.5
if symbol == key.LEFT:
glTranslatef(-SHIFT_X_BY, 0.0, 0.0)
elif symbol == key.RIGHT:
glTranslatef(SHIFT_X_BY, 0.0, 0.0)
elif symbol == key.UP:
glTranslatef(0.0, SHIFT_X_BY, 0.0)
elif symbol == key.DOWN:
glTranslatef(0.0, -SHIFT_X_BY, 0.0)
window.on_draw = on_draw
pyglet.app.run()
:私は予想通りglTranslatef
を使用して動作する次のコードを持っています。
import pyglet
from pyglet.gl import *
window = pyglet.window.Window(resizable=True)
def draw_square():
glBegin(GL_QUADS)
glVertex3f(0, 0, 0.0)
glVertex3f(100, 0, 0.0)
glVertex3f(100, 100, 0.0)
glVertex3f(0, 100, 0.0)
glEnd()
def on_draw():
window.clear()
draw_square()
pos = {'x': 0, 'y': 0, 'z': 0}
from pyglet.window import key
@window.event
def on_key_press(symbol, modifiers):
global pos
SHIFT_X_BY = 5.5
if symbol == key.LEFT:
pos['x'] = pos['x'] + SHIFT_X_BY
elif symbol == key.RIGHT:
pos['x'] = pos['x'] - SHIFT_X_BY
elif symbol == key.UP:
pos['y'] = pos['y'] + SHIFT_X_BY
elif symbol == key.DOWN:
pos['y'] = pos['y'] - SHIFT_X_BY
gluLookAt(pos['x'], pos['y'], pos['z'], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
window.on_draw = on_draw
pyglet.app.run()
をしかし、私は今、矢印キーのいずれかを押すと、四角がちょうど消える:私の代わりにgluLookAt
を呼び出すコードを変更しました。 gluLookAt
を呼び出すと何が間違っていますか?
EDITこの次on_draw()
機能は動作しません。どちらか(私は黒い画面を取得する):
def on_draw():
glLoadIdentity()
gluLookAt(pos['x'], pos['y'], pos['z'], 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)
draw_square()
コードに変更されましたが、方向キーを押すと正方形が消えます。 – memyself
もう1つの問題は、Modelviewマトリックスをリセットしないことです。 glLoadIdentity()のようなものを使わずにgluLookAtを何度も呼び出しているようです。 –
'draw_square'呼び出しの前に' glLoadIdentity() 'を追加すると何も起こりません。 – memyself