The issue is when I try to render my list of Vertices using the code below, the points are not rendered properly The first point in the deque is always correctly rendered. The rest of the points sometimes shouw up for a frame or two but then disapear (causing them to look like their flickering). Furthermore, additional points that I have not created are drawn in random locations with random colors, they flicker as well. Without further ado…
…the code:
struct VertArray
{
float position[3];
unsigned char color[3];
};
deque <VertArray *> vertList;
GLvoid DrawPoints()
{
glEnableClientState (GL_VERTEX_ARRAY);
glEnableClientState (GL_COLOR_ARRAY);
if(!vertList.empty())
{
glVertexPointer (3, GL_FLOAT, sizeof (VertArray), (vertList[0]->position));
glColorPointer (3, GL_UNSIGNED_BYTE, sizeof (VertArray), (vertList[0]->color));
glDrawArrays (GL_POINTS, 0, vertList.size());
}
glDisableClientState (GL_VERTEX_ARRAY);
glDisableClientState (GL_COLOR_ARRAY);
I generate these points elsewhere (obviously) and I am positive that the error is NOT in the generation code. I have a version of this program that is identical expect it uses immediates to render vertList. Why is it not rendering properly with VertexArray’s?
Ill attach my initialization code as well in case that may be the cause.
NOTE: its not in order and there are some parts left out because I deemed them highly likely not to be the cause.
PIXELFORMATDESCRIPTOR pfd, *ppfd;
int pixelformat;
ppfd = &pfd;
ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
ppfd->nVersion = 1;
ppfd->dwFlags = PFD_DRAW_TO_WINDOW | // Draw to window
PFD_SUPPORT_OPENGL | // use OpenGL
PFD_DOUBLEBUFFER; // use Double Buffer
ppfd->dwLayerMask = PFD_MAIN_PLANE;
ppfd->iPixelType = PFD_TYPE_RGBA; // Use RGBA format
ppfd->cColorBits = 32; // color bits
ppfd->cDepthBits = 32;
-----------------------------------------------------------------------------
glEnable(GL_LINE_SMOOTH); // Line AA
glEnable(GL_POINT_SMOOTH); // Point AA
glEnable(GL_BLEND); // Allow Transparency
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); // how transparency acts
glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
glHint(GL_POINT_SMOOTH_HINT,GL_FASTEST);
glPolygonMode(GL_BACK, GL_LINE); //Draw back, and draw boundries
glLineWidth(LINEWIDTH); //Width of lines in OpenGl
glPointSize(POINTSIZE); //Size of Points in OpenGL