OpenGL GL_POLYGON_SMOOTH 2D сглаживание, создающее трис из четырехугольников - PullRequest
6 голосов
/ 16 февраля 2012

UPDATE:

Я обнаружил его при установке Панели управления NVIDIA, если я удалю его, он будет работать правильно.

Когда вы вращаете квад в OpenGL, края становятся неровными.

Если я вызываю glEnable (GL_POLYGON_SMOOTH), края становятся гладкими, но OpenGL затем рисует белую диагональную линию через все мои изображения, как будто это создает трио моих квадов.

Вот как это выглядит: GL_POLYGON_SMOOTH

Есть ли способ отключить эту линию, или я могу получить сглаживание другим простым способом? Я попробовал GL_MULTISAMPLE, но ничего не произошло.

В моем коде я также:

glShadeModel(GL_SMOOTH);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glDisable(GL_DEPTH_TEST);

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

1 Ответ

3 голосов
/ 16 февраля 2012

Хорошо, я напишу это как ответ, дайте мне знать, если это сработает после попытки.

GL_TRIANGLE_FAN: Если приложение задает последовательность вершин v, OpenGL отображает треугольник, используя v0, v 1 и v 2;другой треугольник, использующий v 0, v 2 и v 3;другой треугольник, использующий v 0, v 3 и v 4;и так далее.Если приложение задает n вершин, OpenGL отображает n – 2 соединенных треугольника.

Таким образом, чтобы нарисовать четырехугольник, центрированный вокруг начала координат,

glBegin(GL_TRIANGLE_FAN);

glTexCoord2f(0f, 0f);
glVertex3f(-halfWidth, -halfHeight, 0f);

glTexCoord2f(0f, 1f);
glVertex3f(-halfWidth, halfHeight, 0f);

glTexCoord2f(1f, 1f);
glVertex3f(halfWidth, halfHeight, 0f);

glTexCoord2f(1f, 0f);
glVertex3f(halfWidth, -halfHeight, 0f);

glEnd();

Теперь вы можете поместить те же преобразования вокругчто вы использовали вокруг своего четырехугольника!Надеюсь, это поможет!

...