У меня была похожая проблема, когда я рисовал множество точек с разными цветами, а затем синий каркасный куб. (Я использовал GLUT для своего проекта.)
Изначально мой код выглядел так:
glBegin(GL_POINTS);
for(int i=0;i<N;i++)
{
glColor3f(R[i],G[i],B[i]);
glVertex3f(X[i],Y[i],Z[i]);
}
glEnd();
glColor3f(0.0f, 0.0f, 1.0f);
glutWireCube(2.0f);
Однако это привело к мерцающему кубу, который непрерывно изменял свой цвет от кадра к кадру до некоторых непредсказуемых цветов, как будто последний glColor3f просто игнорируется.
Решение: я поставил glColor3f для куба перед glEnd ().
glBegin(GL_POINTS);
for(int i=0;i<N;i++)
{
glColor3f(R[i],G[i],B[i]);
glVertex3f(X[i],Y[i],Z[i]);
}
glColor3f(0.0f, 0.0f, 1.0f); // <= Changed only the position of this line
glEnd();
glutWireCube(2.0f);
Я не знаю, ПОЧЕМУ, но это решило мою проблему. Теперь я получаю синий каркасный куб, и glColor3f больше не игнорируется ...
ура
David