2015-05-31 4 views
-1

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

iamge

ответ

0

Хорошо! Наконец, я нашел источник своей проблемы. После деления процесса все индексы превратились в 0. Спасибо! И не забудьте проверить фактические данные, которые вы отправляете!

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