2013-06-30 2 views
0

Я хочу, чтобы моя программа делала четырехугольник каждый раз, когда есть левый клик. Я новичок в LWJGL и пытаюсь использовать Условный операторПолучение My 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 ваши varibles, как при нажатии кнопки вы говорите

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

если не корды останутся неизменными с момента программа первого работает

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?). Затем каждый раз, когда вы вызываете функцию draw/render, вы можете рисовать каждый квадрат, который был помещен.

В качестве побочного примечания я рекомендую изучить OpenGL 3+ вместо устаревшего OpenGL.

Смежные вопросы