Я попытался реализовать алгоритм разбиения треугольника, и я столкнулся с этим, если я обновляю буферы с большей геометрией массивов, исчезает. Как вы можете видеть, я использую glBufferData()
для обновления буферов. Он работает, если я обновляю буферы с одинаковыми (или меньшими) массивами. Он должен работать, но это не так.Объект исчезает после обновления буфера
glGetString(GL_VERSION) -> 3.1.0 - Build 9.17.10.3517
glGetString(GL_VENDOR) -> Intel
glEnableClientState(GL_VERTEX_ARRAY) -> DONE
glEnableClientState(GL_INDEX_ARRAY) -> DONE
glEnable(GL_NORMALIZE) -> DONE
glEnable(GL_DEPTH_TEST) -> DONE
glDisable(GL_CULL_FACE) -> DONE
glCullFace(Off) -> DONE
glDepthFunc(LessOrEqual) -> DONE
glBindBuffer(VertexArray, -1) -> DONE
glBindBuffer(ElementArray, -1) -> DONE
glBindTexture(Texture2D, -1) -> DONE
glActiveTexture(0) -> DONE
glClientActiveTexture(0) -> DONE
glViewport(0, 0, 800, 600) -> DONE
// Initializing
glGenBuffers() -> 1
glBindBuffer(VertexArray, 1) -> DONE
glBufferData(VertexArray, java.nio.DirectFloatBufferU[pos=0 lim=9 cap=9], Static) -> DONE
glGenBuffers() -> 2
glBindBuffer(VertexArray, 2) -> DONE
glBufferData(VertexArray, java.nio.DirectFloatBufferU[pos=0 lim=6 cap=6], Static) -> DONE
glGenBuffers() -> 3
glBindBuffer(VertexArray, 3) -> DONE
glBufferData(VertexArray, java.nio.DirectFloatBufferU[pos=0 lim=9 cap=9], Static) -> DONE
glGenBuffers() -> 4
glBindBuffer(ElementArray, 4) -> DONE
glBufferData(ElementArray, java.nio.DirectIntBufferU[pos=0 lim=3 cap=3], Static) -> DONE
glClear(ColorAndDepth) -> DONE
glLoadIdentity() -> DONE
glMatrixMode(Projection) -> DONE
glLoadIdentity() -> DONE
gluPerspective(60.0, 1.3333334, 0.001, 999999.0) -> DONE
glMatrixMode(ModelView) -> DONE
glBindBuffer(VertexArray, -1) -> DONE
glBindBuffer(ElementArray, -1) -> DONE
glPushMatrix() -> DONE
glTranslatef(0.0, 0.0, 0.0) -> DONE
glScalef(1.0, 1.0, 1.0) -> DONE
glMultMatrix(java.nio.DirectFloatBufferU[pos=0 lim=16 cap=16]) -> DONE
glPolygonMode(FrontAndBack, Line) -> DONE
glColor3f(1.0, 0.0, 0.0) -> DONE
glBindBuffer(VertexArray, 1) -> DONE
glVertexPointer(3, Float, 0, 0) -> DONE
glBindBuffer(VertexArray, 3) -> DONE
glNormalPointer(Float, 0, 0) -> DONE
glBindBuffer(ElementArray, 4) -> DONE
glDrawElements(Triangles, 3, UnsignedInt, 0) -> DONE
glPopMatrix() -> DONE
// Cycle end
// Updating
glBindBuffer(VertexArray, 1) -> DONE
glBufferData(VertexArray, java.nio.DirectFloatBufferU[pos=0 lim=18 cap=18], Static) -> DONE
glBindBuffer(VertexArray, 2) -> DONE
glBufferData(VertexArray, java.nio.DirectFloatBufferU[pos=0 lim=12 cap=12], Static) -> DONE
glBindBuffer(VertexArray, 3) -> DONE
glBufferData(VertexArray, java.nio.DirectFloatBufferU[pos=0 lim=18 cap=18], Static) -> DONE
glBufferData(ElementArray, java.nio.DirectIntBufferU[pos=0 lim=6 cap=6], Static) -> DONE
glClear(ColorAndDepth) -> DONE
glLoadIdentity() -> DONE
glMatrixMode(Projection) -> DONE
glLoadIdentity() -> DONE
gluPerspective(60.0, 1.3333334, 0.001, 999999.0) -> DONE
glMatrixMode(ModelView) -> DONE
glPolygonMode(FrontAndBack, Fill) -> DONE
glBindBuffer(VertexArray, -1) -> DONE
glBindBuffer(ElementArray, -1) -> DONE
glPushMatrix() -> DONE
glTranslatef(0.0, 0.0, 0.0) -> DONE
glScalef(1.0, 1.0, 1.0) -> DONE
glMultMatrix(java.nio.DirectFloatBufferU[pos=0 lim=16 cap=16]) -> DONE
glPolygonMode(FrontAndBack, Line) -> DONE
glColor3f(1.0, 0.0, 0.0) -> DONE
glBindBuffer(VertexArray, 1) -> DONE
glVertexPointer(3, Float, 0, 0) -> DONE
glBindBuffer(VertexArray, 3) -> DONE
glNormalPointer(Float, 0, 0) -> DONE
glBindBuffer(ElementArray, 4) -> DONE
glDrawElements(Triangles, 6, UnsignedInt, 0) -> DONE
glPopMatrix() -> DONE
0 - Это результат, который я хочу. Он работает при настройке с новыми буферами.
1 - Это исходный треугольник.