Задать вопрос
pavel9609
@pavel9609
Студент-программист

Как увеличить максимальный размер точки в opengl?

Делаю векторный графический редактор, как задание по одной из дисциплин в ВУЗе.
Использую GLUT и язык Си (это оговорено в задании).
Рисую круги как точки (при помощи POINTS_SMOOTH) и обнаружилось, что точки имеют ограничение по размеру. Как это исправить?
Фрагмент кода отрисовывающий точку. (picArray - структура, где я храню объекты отрисовки)
glEnable(GL_POINT_SMOOTH);
glPointSize(picArray[i].size);  //Устанавливаем размер
                glBegin(GL_POINTS);
                    glColor3f(picArray[i].r,picArray[i].g,picArray[i].b);
                    glVertex2f(picArray[i].coord[0].x,picArray[i].coord[0].y);
                glEnd();
  • Вопрос задан
  • 645 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@makaleks
Доки
Тут сказано, что от платформы зависит, какой максимальный размер может быть у сглаженной точки, гарантируя только поддержку размера 1. Параграф перед Notes - там всё.
В opengl всё скачет от треугольников, так почему бы не использовать GL_TRIANGLE_FAN? Эти вычисления всё равно будут - либо на вашей стороне, либо на стороне opengl. Списки отображения (glList) позволят произвести вычисления всего один раз для некоторого сглаживания (на сколько частей круг делить), а glScale позволит масштабировать до тех пор, пока не станут видны отдельные отрезки. Используйте вершинные массивы (glDrawElements), чтобы не обращаться к видеокарте по двадцать раз для одного объекта, т.к. так никто не делает. Всё описано в OpenGL Red Book, у которой даже перевод есть.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы