1

私はMacOSXを使用しており、MountainLionで実行しています。1年ほど前、EclipseでプログラミングできるようにPyGameをインストールしました。私はかなり満足していましたが、コードが完成していなかったために少し気が遠くなりました。私はそれを耕し、これまでのところすべてに耐えることができました。それから、今日、私はいくつかのPyOpenGLを試すことにしました。pipを使用してインストールし、次のコードをコピーしてWindowsに貼り付けました(実際のコードは問題ではないため、ここで続行します)。ほとんどすべてが警告を発します。ほとんど全部。サイドバーは黄色のしっかりした壁です。

次のようなコード行

glBegin(GL_TRIANGLES)

次のようなエラーを教えてください

undefined variable: GL_TRIANGLES
undefined variable: glBegin

Eclipse> Preferences> Pydev> Editor> Code Analysisに移動し、未定義の変数を無視するようにEclipseに指示しても役に立ちません。Pygameのような他のモジュールも私のためにこれを行います。

これは私を悩ませます。多くの。そして、私は本当にLWJGLとJavaに強制的に戻されたくありません。

この問題を完全に修正する方法はありますか?

#!/usr/bin/env python

from OpenGL.GL import *
from OpenGL.GLU import *

import pygame

def pyramid():

   glBegin(GL_TRIANGLES)

   glColor3f(1.0, 0.0, 0.0)      #   // Red
   glVertex3f(0.0, 1.0, 0.0)      #   // Top Of Triangle (Front)
   glColor3f(0.0, 1.0, 0.0)      #   // Green
   glVertex3f(-1.0, -1.0, 1.0)      #      // Left Of Triangle (Front)
   glColor3f(0.0, 0.0, 1.0)      #   // Blue
   glVertex3f(1.0, -1.0, 1.0)      #   // Right Of Triangle (Front)

   glColor3f(1.0, 0.0, 0.0)      #   // Red
   glVertex3f(0.0, 1.0, 0.0)      #   // Top Of Triangle (Right)
   glColor3f(0.0,0.0, 1.0)         #   // Blue
   glVertex3f(1.0, -1.0, 1.0)      #   // Left Of Triangle (Right)
   glColor3f(0.0, 1.0, 0.0)      #   // Green
   glVertex3f(1.0, -1.0, -1.0)      #      // Right Of Triangle (Right)

   glColor3f(1.0, 0.0, 0.0)      #   // Red
   glVertex3f(0.0, 1.0, 0.0)      #   // Top Of Triangle (Back)
   glColor3f(0.0,1.0, 0.0)         #   // Green
   glVertex3f(1.0, -1.0, -1.0)      #   // Left Of Triangle (Back)
   glColor3f(0.0, 0.0, 1.0)      #   // Blue
   glVertex3f(-1.0, -1.0, -1.0)   #      // Right Of Triangle (Back)

   glColor3f(1.0, 0.0, 0.0)      #   // Red
   glVertex3f(0.0, 1.0, 0.0)      #   // Top Of Triangle (Left)
   glColor3f(0.0, 0.0, 1.0)      #   // Blue
   glVertex3f(-1.0, -1.0, -1.0)   #      // Left Of Triangle (Left)
   glColor3f(0.0, 1.0, 0.0)      #   // Green
   glVertex3f(-1.0, -1.0, 1.0)      #      // Right Of Triangle (Left)

   glEnd()

   glBegin(GL_QUADS)

   glColor3f(0.0, 0.0, 1.0)
   glVertex3f(-1.0, -1.0, -1.0)
   glColor3f(0.0, 1.0, 0.0)
   glVertex3f(1.0, -1.0, -1.0)
   glColor3f(0.0, 0.0, 1.0)
   glVertex3f(1.0, -1.0, 1.0)
   glColor3f(0.0, 1.0, 0.0)
   glVertex3f(-1.0, -1.0, 1.0)

   glEnd()

def cube():
   glBegin(GL_QUADS)

   glColor3f(0.0, 1.0, 0.0)      #   // Set The Color To Green
   glVertex3f(1.0, 1.0, -1.0)      #   // Top Right Of The Quad (Top)
   glVertex3f(-1.0, 1.0, -1.0)      #   // Top Left Of The Quad (Top)
   glVertex3f(-1.0, 1.0, 1.0)      #   // Bottom Left Of The Quad (Top)
   glVertex3f(1.0, 1.0, 1.0)      #   // Bottom Right Of The Quad (Top)

   glColor3f(1.0, 0.5, 0.0)      #   // Set The Color To Orange
   glVertex3f(1.0, -1.0, 1.0)      #   // Top Right Of The Quad (Bottom)
   glVertex3f(-1.0, -1.0, 1.0)      #      // Top Left Of The Quad (Bottom)
   glVertex3f(-1.0, -1.0, -1.0)   #      // Bottom Left Of The Quad (Bottom)
   glVertex3f(1.0, -1.0, -1.0)      #      // Bottom Right Of The Quad (Bottom)

   glColor3f(1.0, 0.0, 0.0)      #   // Set The Color To Red
   glVertex3f(1.0, 1.0, 1.0)      #   // Top Right Of The Quad (Front)
   glVertex3f(-1.0, 1.0, 1.0)      #   // Top Left Of The Quad (Front)
   glVertex3f(-1.0, -1.0, 1.0)      #      // Bottom Left Of The Quad (Front)
   glVertex3f(1.0, -1.0, 1.0)      #   // Bottom Right Of The Quad (Front)

   glColor3f(1.0, 1.0, 0.0)      #   // Set The Color To Red
   glVertex3f(1.0, -1.0, -1.0)      #   // Top Right Of The Quad (Back)
   glVertex3f(-1.0, -1.0, -1.0)   #   // Top Left Of The Quad (Back)
   glVertex3f(-1.0, 1.0, -1.0)      #      // Bottom Left Of The Quad (Back)
   glVertex3f(1.0, 1.0, -1.0)      #   // Bottom Right Of The Quad (Back)

   glColor3f(0.0, 0.0, 1.0)      #   // Set The Color To Blue
   glVertex3f(-1.0, 1.0, 1.0)      #   // Top Right Of The Quad (Left)
   glVertex3f(-1.0, 1.0, -1.0)      #   // Top Left Of The Quad (Left)
   glVertex3f(-1.0, -1.0, -1.0)   #      // Bottom Left Of The Quad (Left)
   glVertex3f(-1.0, -1.0, 1.0)      #   // Bottom Right Of The Quad (Left)

   glColor3f(1.0, 0.0, 1.0)      #   // Set The Color To Violet
   glVertex3f( 1.0, 1.0, -1.0)      #   // Top Right Of The Quad (Right)
   glVertex3f( 1.0, 1.0, 1.0)      #   // Top Left Of The Quad (Right)
   glVertex3f( 1.0, -1.0, 1.0)      #   // Bottom Left Of The Quad (Right)
   glVertex3f( 1.0, -1.0, -1.0)   #      // Bottom Right Of The Quad (Right)


   glEnd()


if __name__ == "__main__":

   from sys import exit

   print ("Initalizing...")

   resolution = (400, 300)

   pygame.init()
   screen = pygame.display.set_mode(resolution, pygame.OPENGL|pygame.DOUBLEBUF)

   print ("Doing GL stuff...")
   glViewport(0, 0, resolution[0], resolution[1])

   glMatrixMode(GL_PROJECTION)
   glLoadIdentity()
   gluPerspective(45.0, float(resolution[0]) / resolution[1], 0.1, 1000.0)

   glMatrixMode(GL_MODELVIEW)
   glLoadIdentity()

   print ("More GL stuff...")
   glEnable(GL_DEPTH_TEST)

   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST)

   glShadeModel(GL_SMOOTH)
   glClearColor(0.0, 0.0, 0.0, 0.0)

   print ("Minor details...")
   clock = pygame.time.Clock()

   rot_tri = 0
   rot_quad = 0

   import random

   print ("Mainloop...")
   while True:

      for event in pygame.event.get():

         if event.type == pygame.QUIT:
            pygame.quit()
            exit()

      glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

      glLoadIdentity()
      glTranslatef(-1.5, 0.0, -6.0)
      glRotatef(rot_tri, 0.0, 1.0, 0.0)
      pyramid()

      glLoadIdentity()
      glTranslate(1.5, 0.0, -6.0)
      glRotatef(rot_quad, 1.0, 0.0, 0.0)
      cube()

      rot_tri += 2.0
      rot_quad -= 1.5

      pygame.display.set_caption("hello_opengl.py FPS: %i" % clock.get_fps())

      pygame.display.flip()
      clock.tick()
4

1 に答える 1

0

Eclipse と PyOpenGL で PyDev を使用しても問題はありません。で OpenGL をインストールしpip install pyopengl、[ウィンドウ] > [設定] > [PyDev] > [インタープリター - Python] に移動しました。何も変更せずに [適用] をクリックします。プロンプトが表示されたら、適切なインタープリターを選択して更新します。完了したら、[設定] を閉じてから、[ファイル] > [再起動] を選択します。すぐにこれは機能します:

from OpenGL.GL import GL_TRIANGLES
于 2013-02-20T23:11:35.620 に答える