2013-07-12 1 views
0

Я пытаюсь сделать два одинаковых прямоугольника с этим кодом:Только один из двух форм обращается

GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); 

GL20.glUseProgram(pId); 

GL13.glActiveTexture(GL13.GL_TEXTURE0); 
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texId); 

GL30.glBindVertexArray(vaoId); 
GL20.glEnableVertexAttribArray(0); 
GL20.glEnableVertexAttribArray(1); 
GL20.glEnableVertexAttribArray(2); 

GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboiId); 

GL11.glDrawElements(GL11.GL_TRIANGLES, indicesCount, GL11.GL_UNSIGNED_BYTE, 0); 

GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); 
GL20.glDisableVertexAttribArray(2); 
GL20.glDisableVertexAttribArray(1); 
GL20.glDisableVertexAttribArray(0); 
GL30.glBindVertexArray(0); 

GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0); 

GL20.glUseProgram(0); 

Странно только второй из двух рисуется, хотя они имеют точно такой же код рисования. Единственное отличие состоит в том, что один из них немного сдвинут. Я протестировал, чтобы просто нарисовать первый, и это сработало. Так что второй прямоугольник каким-то образом перезаписывает первый?

+0

Вы имеете в виду, что вы выполняете весь этот код дважды? В этом случае: удалить GL11.glClear (GL11.GL_COLOR_BUFFER_BIT); Он в основном очищает весь цвет от экрана. –

+0

Это сработало - большое спасибо :) – Marghytis

+0

Я отвечу на него формально тогда :) –

ответ

2

Удалить GL11.glClear (GL11.GL_COLOR_BUFFER_BIT); Он в основном очищает весь цвет от экрана, что означает, что будет отображаться только ваш последний нарисованный треугольник.

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