opengl - Object disappears after updating buffer -
i tried implement triangle subdivision algorithm , encountered if i'm updating buffers bigger arrays geometry disappears. can see i'm using glbufferdata() update buffers. works if i'm updating buffers same size (or smaller) arrays. should work it's not.
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 - result want. works when setted new buffers.
1 - source triangle.
okay! found source of problem. after subdividing proccess indices turned 0. thanks! , don't forget check actual data sending!

Comments
Post a Comment