Рендеринг гладких сфер и цилиндров с помощью gluSphere () и gluCylinder ()

Я использую OpenGL с C ++ (но без шейдеров и GLSL) и рисую сферы (шарик пула) и цилиндры (биток), используя функции библиотеки glu для их рисования. я использую glBindTexture() связать текстуру и загрузить текстуру, используя ПОЧВА библиотека.

Как вы можете видеть на скриншотах, на цилиндре и сфере имеются зазубренные края. Называя следующее glHint() Как мне избавиться от зубчатых краев. gluSphere() имеет 25 стеков и ломтиков, а gluCylinder() имеет 100 стеков и ломтиков. Увеличение стеков и фрагментов не улучшает качество изображения.

Использование freeglut для остальной части рисунка

glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); //Smooth polygons
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //Best perspective corrections
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); //Smooth points
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); //Smooth lines

Скриншот

0

Решение

Прежде всего, ваш вопрос связан с наложения спектров Термин, это то, что происходит, когда трилеры и некоторые другие примитивы (это очень простые объекты, которые создают всю сцену) растеризуются (на основе геометрического описания некоторые пиксели на экране окрашены или нет).
Попробуйте поискать «Как включить сглаживание» — здесь много полезной информации об этой и некоторых смежных темах: http://www.glprogramming.com/red/chapter06.html.
В вашем случае это наверняка будет glEnable для GL_POLYGON_SMOOTH и GL_BLEND наверняка.
например.

glEnable (GL_POLYGON_SMOOTH);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glHint (GL_POLYGON_SMOOTH_HINT, GL_DONT_CARE);

Если вы планируете использовать строки, будут GL_LINE_SMOOTH и GL_LINE_SMOOTH_HINT.

В будущих проектах старайтесь не использовать столь сложные модели, если они находятся далеко от зрителя (делая столько срезов для сферы), это приведет к потере производительности.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]