java - Offsets for per vertex data interleaved in OpenGL ES on Android -
java - Offsets for per vertex data interleaved in OpenGL ES on Android -
is possible utilize per vertex info interleaved in opengl es on android?
i'm unable right offset pointers normal
, color
members.
in c++ this:
struct coloredvertexdata3d{ vertex3d vertex; vector3d normal; colorrgba color; }; const coloredvertexdata3d vertexdata[] = { { {0.0f, 0.5f, 0.8f}, // vertex | {0.0f, 0.4f, 0.6f}, // normal | vertex 0 {1.0f, 0.0f, 0.0f, 1.0f} // color | }, { {0.8f, 0.0f, 0.5f}, // vertex | {0.6f, 0.0f, 0.4f}, // normal | vertex 1 {1.0f, 0.5f, 0.0f, 1.0f} // color | }, // ... more vertexes. }; const int stride = sizeof(coloredvertexdata3d); glvertexpointer(3, gl_float, stride, &vertexdata[0].vertex); glcolorpointer(4, gl_float, stride, &vertexdata[0].color); glnormalpointer(gl_float, stride, &vertexdata[0].normal);
is same thing possible on android in java? got:
bytebuffer vertexdata = ...; int stride = 40; gl.glvertexpointer(3, gl10.gl_float, stride, vertexdata); // doesn't work. ------------v gl.glcolorpointer(4, gl10.gl_float, stride, &vertexdata[0].color); gl.glnormalpointer(gl10.gl_float, stride, &vertexdata[0].normal);
the basic thought phone call duplicate() on bytebuffer, creates new bytebuffer shares underlying storage allows start @ different position.
here's worked me:
floatbuffer verticesnormals; // ... code initialize verticesnormals ... // verticesnormals contains 6 floats each vertex. first 3 // define position , next 3 define normal. gl.glvertexpointer(3, gl.gl_float, 24, verticesnormals); // create buffer points 3 floats past beginning. floatbuffer normaldata = mverticesnormals.duplicate(); normaldata.position(3); gl.glnormalpointer(gl.gl_float, 24, normaldata);
java android opengl-es
Comments
Post a Comment