2012-07-04 81 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函数调用之前,你的窗口初始化看起来很好。你有没有收到任何错误报告?