Ошибка вызвана тем, что glPointSize()
вызывается в последовательности glBegin
/ glEnd
. Это не разрешено.
Вы должны позвонить glPointSize
до glBegin
, например:
glEnable(GL_POINT_SMOOTH)
glPointSize(5)
glBegin(GL_POINTS)
glColor3d(1, 1, 1)
glVertex3d(0, 0, 0)
glEnd()
После того, как рисование примитивов было начато glBegin
, можно указывать только координаты вершины (glVertex
) и изменять атрибуты (например, glColor
, glTexCoord
...) до окончания розыгрыша (glEnd
).
Все остальные инструкции будут проигнорированы и приведут к ошибке GL_INVALID_OPERATION
(код ошибки 1282).
Обратите внимание: если матрица вида модели и матрица проекции - это единичная матрица, то координата (1, 1, 1) - это верхняя, правая (дальняя) точка области просмотра.
Координата (0, 0, 0) будет в центре вида (объем).
Принимая во внимание, что если используется перспективная проекция,
gluPerspective(40, display[0]/display[1], 0.1, 50)
тогда координата z точки должна быть меньше, чем -near
(ближняя плоскость в данном примере равна 0,1) и больше, чем -far
(дальняя плоскость равна 50), в противном случае точка обрезается ближней плоскостью или далеко плоскость зрения усеченного конуса.
Обратите внимание, что ось пространства Z указывает на область просмотра. например,
glVertex3d(0, 0, -1)