c++ - glvertexpointer std::vector, struct memory opengl -


i use struct

struct vertex {   float pos[3];   float tex[2]  = {0, 0};   float norm[3] = {0, 0, 0};   int index_mtl; }; 

i use vector

std::vector<vertex> verts; 

how use "glvertexpointer" struct vector.

i wanted drawing function. in end did not succeed.

void obj_render::drawobject() {     glenableclientstate(gl_vertex_array);     glvertexpointer(3, gl_float, 0, verts.data()->pos);      gldrawarrays(gl_triangles,0,3);     // deactivate vertex arrays after drawing     gldisableclientstate(gl_vertex_array);  } 

if use struct vertices no longer tightly packed , need specify stride:

glenableclientstate( gl_vertex_array ); glvertexpointer( 3, gl_float, sizeof( vertex ), &verts[0].pos ); gldrawarrays( gl_triangles, 0, 3 ); gldisableclientstate(gl_vertex_array); 

like so:

#include <gl/glut.h> #include <vector>  struct vertex {     float pos[3];     float tex[2];     float norm[3];     int index_mtl; };  std::vector< vertex > verts; void display() {     glclear( gl_color_buffer_bit );      glmatrixmode( gl_projection );     glloadidentity();     glortho( -2, 2, -2, 2, -1, 1 );      glmatrixmode( gl_modelview );     glloadidentity();      glcolor3ub( 255, 0, 0 );      glenableclientstate( gl_vertex_array );     glvertexpointer( 3, gl_float, sizeof( vertex ), &verts[0].pos );     gldrawarrays( gl_triangles, 0, 3 );     gldisableclientstate(gl_vertex_array);      glutswapbuffers(); }  int main( int argc, char **argv ) {     vertex tmp;     tmp.pos[0] = 0;     tmp.pos[1] = 0;     tmp.pos[2] = 0;     verts.push_back( tmp );     tmp.pos[0] = 1;     tmp.pos[1] = 0;     tmp.pos[2] = 0;     verts.push_back( tmp );     tmp.pos[0] = 1;     tmp.pos[1] = 1;     tmp.pos[2] = 0;     verts.push_back( tmp );      glutinit( &argc, argv );     glutinitdisplaymode( glut_rgba | glut_double );     glutinitwindowsize( 640, 480 );     glutcreatewindow( "glut" );     glutdisplayfunc( display );     glutmainloop();     return 0; } 

Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -