2012-07-04 117 views
1

我正在做一個Gr 12項目。基本思想是渲染可以通過swing GUI更改的地圖紋理。
我被困在渲染中,使用的是.parented到JFrame的顯示。 什麼都沒有顯示出來,我不知道。我改變了背景顏色和渲染顏色。繼承人的一些代碼:Swing + LWJGL沒有渲染任何東西。黑屏

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

爲什麼沒有在顯示出?

回答

2

固定。它歸結爲非常基本的缺乏理解。我試圖呈現一個彩色矩形

glColor3f(1,1,1); 

GL_TEXTURE_2D 

已啓用。它似乎

glDisable(GL11.GL_TEXTURE_2D); 

必須在彩色形狀呈現之前調用。假設

glEnable(GL11.GL_TEXTURE_2D); 

已被調用。

0

你的gl-object從哪裏來?嘗試預先GL11。在所有的gl函數調用之前,你的窗口初始化看起來很好。你有沒有收到任何錯誤報告?