1

私は Gr 12 プロジェクトを行っています。基本的な考え方は、swing GUI を介して変更できるマップ テクスチャをレンダリングすることです。
JFrame の親である Display を使用したレンダリングに行き詰まっています。何も表示されず、わかりません。背景色とレンダリング色を変更しました。コードの一部を次に示します。

   public class DisplayWindow extends JFrame{

   public Canvas canvas = new Canvas();                           
   private JPanel westPanel=new JPanel();                         
   private List animalArr;                                       
   private List animalOptionsBoxArr;                                                              
   public JLabel optionsLabel=new JLabel();                       
   public JToggleButton animalIOToggle = new JToggleButton();     
   public JTextArea animalIOText = new JTextArea();               

   List renderableEntities= new ArrayList();                      

   //states modified by logic class that handle all swing listners 
   private boolean resizePending=false;  
   private boolean exitPending=false;   

   DisplayWindow(List animalArr)
   {
     super(); 
     this.animalArr=animalArr; //created from db in logic class
   }
   public void run()
   {
     startDisplay();   
   }


   public void startDisplay() 
   {  
      //Init GUI

      setupFrame();             //setup main Jframe
      setupMainPanels();        //setup main panels within JFrames borderLayout)
      setupContentPanels();     //setup the content panels within the main panel

      canvas.setSize(getDisplayWidth(), getDisplayHeight());     
      canvas.setFocusable(true);                                
      canvas.setIgnoreRepaint(true);                         

      this.add(canvas,BorderLayout.CENTER);                       
      this.setVisible(true);                                     

      //Display Setup
      try
      {
         Display.setResizable(true);  
         Display.setParent(canvas);                            
         Display.sync(60);            
         Display.create();            
      }
      catch(LWJGLException ex)
      {
        Error.fatalError("Failed to Initialise Park Display",ex);  
      } 

      //OpenGL INIT                    
      glClearColor(0.0f,0.0f,0.0f,0.0f); //black backround                          
      glEnable(GL11.GL_TEXTURE_2D);     
      glEnable(GL11.GL_BLEND);                                    
      glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA);

      glMatrixMode(GL_PROJECTION);                                 
      glLoadIdentity();                                            
      glOrtho(0,getDisplayWidth(),0,getDisplayHeight(),1,-1);      
      glMatrixMode(GL_MODELVIEW);   

      //Render Loop    
      while(!isExitPending())                     
      {
           glClear(GL_COLOR_BUFFER_BIT);
           render();

           checkResizeDisplay();
           Display.update();
      }
      cleanUp();
   }

  public void render()
  { 
     //test Render 
     glColor3f(1,1,1);             //white render color
     glRectf(100,100,400,400);     
     glBegin(GL_POINTS);           //point at 5 above mouse location
     glVertex2d(Mouse.getX(),Mouse.getY()+5 );
     glEnd();
  } 

  public void checkResizeDisplay() //is this even neccisary?
 {   
     if(resizePending==true)
     {
         glMatrixMode(GL_PROJECTION);                                 
         glLoadIdentity();                                            
         glOrtho(0,Display.getWidth(),0,Display.getHeight(),1,-1);      
         glMatrixMode(GL_MODELVIEW);                                   
     }

 }

} 

コードの割り当てがあるので、問題がそこにあることを心から願っています。ちょっと整形してみた。未使用のオブジェクト/参照について説明します。これは、LWJGL に関連する唯一のコードです。DisplayWindow は新しい Runnable スレッドとして実行されます。
現時点でのプログラムは次のようになります: grr http://img839.imageshack.us/img839/6697/grrf.jpg

ディスプレイに何も表示されないのはなぜですか?

4

1 に答える 1

2

修理済み。それは非常に基本的な理解の欠如に帰着しました。私は色付きの長方形をレンダリングしようとしていました

glColor3f(1,1,1); 

その間

GL_TEXTURE_2D 

が有効になりました。そうみたいです

glDisable(GL11.GL_TEXTURE_2D );

色付きの形状がレンダリングされる前に呼び出す必要があります。仮定して

glEnable(GL11.GL_TEXTURE_2D );

すでに呼び出されています。

于 2012-07-24T22:48:04.643 に答える