У меня проблемы с блоком GL_LINES ... линии в примере ниже не соединяются на концах (хотя иногда он случайным образом решает соединить угол или два). Вместо этого конечные точки находятся в пределах 1 пикселя друг от друга (оставляя угол, который не является полностью квадратным; если это имеет смысл). Это простой блок для рисования сплошного 1-пиксельного прямоугольника.
glBegin(GL_LINES);
glColor3b(cr, cg, cb);
glVertex3i(pRect->left, pRect->top, 0);
glVertex3i(pRect->right, pRect->top, 0);
glVertex3i(pRect->right, pRect->top, 0);
glVertex3i(pRect->right, pRect->bottom, 0);
glVertex3i(pRect->right, pRect->bottom, 0);
glVertex3i(pRect->left, pRect->bottom, 0);
glVertex3i(pRect->left, pRect->bottom, 0);
glVertex3i(pRect->left, pRect->top, 0);
glEnd();
Пример ниже, кажется, исправляет проблему, давая мне острые, квадратные углы; но я не могу принять это, потому что я не знаю, почему это так ...
glBegin(GL_LINES);
glColor3b(cr, cg, cb);
glVertex3i(pRect->left, pRect->top, 0);
glVertex3i(pRect->right + 1, pRect->top, 0);
glVertex3i(pRect->right, pRect->top, 0);
glVertex3i(pRect->right, pRect->bottom + 1, 0);
glVertex3i(pRect->right, pRect->bottom, 0);
glVertex3i(pRect->left - 1, pRect->bottom, 0);
glVertex3i(pRect->left, pRect->bottom, 0);
glVertex3i(pRect->left, pRect->top - 1, 0);
glEnd();
Любые программисты OpenGL, которые могут помочь, я был бы признателен:)
Изображение представляет собой увеличенный снимок экрана. Как видите, верхний левый угол не подключен. Верхний правый угол есть. Не видны нижний левый и правый, которые не связаны.
В окне просмотра установлено значение от 1 до 1 пикселя на координату.
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, __nRendererWidth, __nRendererHeight, 0, -1, 100);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glEnable (GL_TEXTURE_2D);