2013-04-29 3 views
0

Я следую инструкциям OpenGL, найденным here. Я сейчас на главе 2, и мы рассмотрим преимущества использования glArrayElement для визуализации объектов. В настоящее время мой код выглядит следующим образом:Использование glArrayElement с LWJGL

glEnableClientState(GL_VERTEX_ARRAY); 
    glEnableClientState(GL_COLOR_ARRAY); 

    double vertices[] = {100, 200, 0, 200, 100, 0, 100, 100, 0}; 
    double colors[] = {1, .5, .8, .3, .5, .8, .3, .5, .8}; 


    DoubleBuffer vertexBuffer = BufferUtils.createDoubleBuffer(9).put(vertices); 
    DoubleBuffer colorBuffer = BufferUtils.createDoubleBuffer(9).put(colors); 

    glVertexPointer(3, 0, vertexBuffer); 
    glColorPointer(3, 0, colorBuffer); 

    while(!Display.isCloseRequested()) { 

     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     glBegin(GL_TRIANGLES); 
     glArrayElement(0); 
     glArrayElement(1); 
     glArrayElement(2); 
     glVertex3d(300, 200, 0); 
     glVertex3d(400, 100, 0); 
     glVertex3d(300, 100, 0); 
     glEnd(); 

     //Display.sync(60); 
     Display.update(); 
    } 

Второй треугольник, определяемый явно вызовами glVertex3d оказывается в порядке. Бу первый треугольник вообще не отображается. Я делаю простую ошибку?

+0

Рассматривали ли вы использование поплавков, а не парных? –

+0

В чем преимущество? – williamg

ответ

1

В то время как очистка для большего количества примеров кода, я натолкнулся на фрагмент, в котором говорилось, что вам нужно «перевернуть каждый буфер». Добавление

vertexBuffer.flip(); 
colorBuffer.flip(); 

прямо перед петля while решить мою проблему!

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