Действительно ли возможно использовать спрайты точки OpenGL для моделирования спрайтов рекламного щита?

Вы также можете сделать что-то вроде этого:

today = date.today()
invoice_for_today = Invoice.objects.filter(date__year=today.year, date__month=today.month, date__day=today.day)
10
задан John Conde 20 January 2019 в 18:46
поделиться

2 ответа

Вот как я использую подход моего бедняги к масштабированию размера точки:

void render() {
    glEnable(GL_VERTEX_PROGRAM_POINT_SIZE_ARB);
    glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
    glEnable(GL_POINT_SPRITE);
    glActiveTexture(GL_TEXTURE0);
    glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE);

    /* Activate shader program here */
    /* Send pointSize to shader program */

    glBegin(GL_POINTS);
        /* Render points here */
        glVertex3f(...);
    glEnd(GL_POINTS);
}

Вершинный шейдер:

uniform float pointSize;
void main() {
    gl_Position = ftransform();
    gl_PointSize = pointSize / gl_Position.w;
}

Вы можете делать все, что хотите, в фрагментном шейдере, но вам придется вычислить цвет, освещение и текстуру самостоятельно.

7
ответ дан 4 December 2019 в 01:32
поделиться

По моему опыту, затухание в пунктах не стоит проблем. Намного лучше написать очень простой вершинный шейдер GLSL, который устанавливает размер точки вручную в соответствии с некоторыми вычислениями, которые вы выполняете самостоятельно. Мне потребовалось около полдня, чтобы выучить с нуля весь GLSL, который мне нужен, чтобы это произошло.

Код GLSL может быть таким же простым, как эти несколько строк:

attribute float psize;

void main()
{   
    gl_FrontColor = gl_Color;
    gl_PointSize = psize;
    gl_Position = ftransform();
}

Где psize - это точка параметр размера, выбираемый пользователем.

1
ответ дан 4 December 2019 в 01:32
поделиться
Другие вопросы по тегам:

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