/*
A list of strips, each containing a list of indecies, and a type value
*/
std::vector<primitives> Triangles;
/*
I then send a set of parameters to a function, I send a pointer to std::vector<primitives> Triangles; And call it strips inside the function, I also send the verticies, but that isnt important here.
I have the below in a for loop (hence the [b]), and I call it to render my mesh.
*/
But it crashs before it renders. I have tried to turn off everything along the way, and it ONLY crashs when it reaches this step. I am realy bad w/pointers, am I possibly doign something wrong? Or what?
Take a look at pages 67-75 of the red book. glDrawElements is for drawing OpenGL Vertex Arrays. It sounds like you are just shoving an array of integers at it. I’m not suprised it’s crashing.
That said I havn’t used vertex arrays, soo I can’t really help you beyond pointing you to the fine manual.
Looking back at your code, I see one level of what you are doing wrong: you are giving glDrawElements a pointer to a std::vector<unsigned int> and not an array at all. (Since the function strictly speaking takes a void*, the compiler won’t complain.) Since sizeof(std::vector<unsigned int> is probably much less than the length of the vector, glDrawElements will quickly crash.
Ok, so how would I go about fixing that? Should I create an array, and move the data?? but that will be kind of a waiste of time and space… Is there a better way?? Can I pass a pointer??
vectors are always contiguous in memory. Just pass a pointer to the first element and you’ll get the same effect. I don’t think this is the problem however.
Bunny, YOU ROCK, FIRST ELEMENT!!! I was passing a pointer to the vector itself NOT its first element, what a difference [0] makes at teh end of a vector reference. THANK YOU for jogging my memory.