2013-06-30 25 views
0

我希望我的程序在每次有左擊時創建一個四邊形。 我是新來LWJGL,我試圖使用if語句讓我的GL_QUADS顯示

if(lClick == true){ 
drawQuad(); 
} 

現在,(從調試)我知道,如果語句的工作,所以我的錯誤一定要在我的drawQuad()變量。

這裏是我的drawQuad:

public static void drawQuad(){ 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); // Resets any previous projection matrices 
    glOrtho(0, 640, 480, 0, 1, -1); 
    glMatrixMode(GL_MODELVIEW); 

    //System.out.println("drawQuad Is Being Used"); 

glBegin(GL_QUADS); 
     glVertex2i(c1, c2); 
     glVertex2i(c1, c4); 
     glVertex2i(c2, c1); 
     glVertex2i(c2, c3); 
glEnd(); 

} 

我的C1,C2,C3和C4整數是

 int c1 = Mouse.getX() + 25; 
     int c2 = Mouse.getX() - 25; 
     int c3 = Mouse.getY() + 25; 
     int c4 = Mouse.getY() - 25; 

所有這些整數都是下

while(!Display.isCloseRequested()){} 

回答

0

你updateing你的可變因素,就像當你點擊你說

public void updateCords(){ 
    c1 = Mouse.getX() + 25; 
    c2 = Mouse.getX() -= 25; 
    c3 = Mouse.getY() += 25; 
    c4 = Mouse.getY() -= 25; 
} 

如果沒有線將保持不變,從目前的程序運行1

0

常見的新手的錯誤是從輸入事件處理程序調用OpenGL繪圖函數。取決於所使用的框架,在輸入事件處理程序中可能沒有OpenGL上下文活動。

不是直接繪製四邊形,而應該追加到某個列表或數組,然後在繪圖代碼中根據該列表/數組中的數據繪製四邊形。

0
int c1 = Mouse.getX() + 25; 
    int c2 = Mouse.getX() - 25; 
    int c3 = Mouse.getY() + 25; 
    int c4 = Mouse.getY() - 25; 

是否有可能你沒有添加25到你的整數?下面可能是一個解決方案(追加=運算符)。對不起,這是我的第一個貢獻。

int c1 = Mouse.getX() += 25; 
    int c2 = Mouse.getX() -= 25; 
    int c3 = Mouse.getY() += 25; 
    int c4 = Mouse.getY() -= 25; 
0

在OpenGL中,您必須在每一幀中重新繪製整個場景。因此,當鼠標點擊時不是繪製四邊形,而應該存儲每個四元組的位置(可能在ArrayList中?)。然後每次調用函數時,都可以繪製已放置的每個四元組。

作爲一個方面說明,我建議學習OpenGL 3+而不是傳統的OpenGL。