DrawElements

Started by
4 comments, last by BGCJR 20 years, 8 months ago
How do i pass a vector array to glVertexPointer and Drawelements? Bobby
Game Core
Advertisement
Like this:
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer( 3, GL_FLOAT, 0, vectorArray );

where vectorArray is the pointer to your vector Array.

If by vector Array you mean stl vector:

vector pCoords; // List of vertices

Then give the pointer to the first element of the array like this:
glVertexPointer( 3, GL_FLOAT, 0, &pCoords[0] );

after that you can use glDrawElements
Assign all the indices of triagles in one array pointer pIndices.

unsigned int *pIndices;

glDrawElements(GL_TRIANGLES, numberOfIndices, GL_UNSIGNED_INT, pIndices);

See the Red Book for details...
(Remon) M. Sazzad Karim
quote:Original post by skremon
If by vector Array you mean stl vector:

vector<CVector3> pCoords; // List of vertices

Then give the pointer to the first element of the array like this:
glVertexPointer( 3, GL_FLOAT, 0, &pCoords[0] );
Note that this isn''t completely safe. Although most STL vector implementations store the data in contiguous memory, the C++ spec does not (yet) require this.

Thanks Both, I''ll be testing it. I already added it my model editor and VBO , 44000tris in 4 opengl windows at one time runs pretty well.
i''m using stl vector to save memory leaks. So, it seems fine right now. but, if it does split up, i can save by reserving data?

Bobby
Game Core
quote:Note that this isn''t completely safe. Although most STL vector implementations store the data in contiguous memory, the C++ spec does not (yet) require this.


I''m quite sure that Visual C++ compiler stores stl vector in contiguous memory. Can you tell me of any other compilers that doesn''t do it?
BTW First i used STL vectors but eventually i used pointers (copied them from vector to memory) for vertex arrays.
(Remon) M. Sazzad Karim
you''ll need malloc and transfer data through that if you need contigous memory.
Game Core

This topic is closed to new replies.

Advertisement