2016-03-23 54 views
0

OpenGLは良いコミュニティを持つ素敵なライブラリのようです。いくつかのチュートリアルを読み、いくつかの説明を読んだ後、私は基本を得たと感じました。openGL:シーン全体を回転させるか、カメラを「周回する」

まだ、私はカメラに苦労しています。私はOpenGLでカメラを静的にし、カメラが動いているような錯覚を作成するにはシーン全体を動かさなければなりません。私はシーン全体を変えようとしました。オブジェクトは回転しますが、前面オブジェクトは前面にとどまります。私はもう少し読んだけど、私は彼らが私に言っていることをやっていると感じている。

ここではカメラで「軌道を描く」のが好きな2つの正方形の実例を示します。

import pygame 
from pygame.locals import * 
from OpenGL.GL import * 
from OpenGL.GLU import * 


def draw(): 
    glBegin(GL_QUADS) 
    glColor3fv((1,0,0)) 
    glVertex3fv((1,-1,-1)) 
    glVertex3fv((1,1,-1)) 
    glVertex3fv((-1,1,-1)) 
    glVertex3fv((-1,-1,-1)) 

    glColor3fv((0,1,0)) 
    glVertex3fv((1,-1,-2)) 
    glVertex3fv((1,1,-2)) 
    glVertex3fv((-1,1,-2)) 
    glVertex3fv((-1,-1,-2)) 

    glEnd() 

pygame.init() 
display = (800,600) 
pygame.display.set_mode(display, DOUBLEBUF|OPENGL) 

gluPerspective(45, (display[0]/display[1]), 0.1, 50.0) 

glTranslatef(0.0,0.0, -25.0) 

while True: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit() 
       quit() 

     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

     glRotatef(1, 0.0, 1.0, 0.0) 

     draw() 
     pygame.display.flip() 
     pygame.time.wait(10) 

は今、両方の正方形が変わりますが、緑の四角は赤の広場の正面にとどまります。私が見たいのは、シーン全体が変わり、緑色の四角形が赤い四角形の後ろに移動するということです。誰かが私を正しい方向に向けることができますか?

答えて

1

GL_DEPTH_TESTglEnable(GL_DEPTH_TEST);で有効にする必要があります。

また、古い固定機能パイプラインを使用することは廃止されました(OpenGL 3.0以降)。OpenGL 3.1では削除されました。この古い固定パイプラインを使用して新しいプロジェクトを開始しないことを強くお勧めします。

+0

「古い固定機能パイプライン」とはどういう意味ですか? – Stoeptegel

+0

古い関数パイプラインは、OpenGL( 'glVertex3f'、' glNormal3f'、 'glBegin'など)で物をレンダリングする古い方法です。 – Nasso

+1

これに加えて、OpenGLを使用する方法について知りたい場合は、FFパイプラインとプログラム可能なパイプラインの組み合わせからオンラインで数多くのドキュメンテーションを入手してください。 OpenGLが3.1+でどのように見えるかを知るには、[これらのチュートリアルとこのサイト](http://learnopengl.com/)を試してみてください。 – WearyWanderer

関連する問題