Вращение точечных спрайтов OpenGL во фрагментном шейдере

Я следую этому руководству , чтобы узнать больше об OpenGL и в точечные спрайты. Но я застрял на одном из упражнений в конце страницы:

Попробуйте повернуть точечные спрайты на 45 градусов, изменив фрагментный шейдер.

Нет никаких намеков на подобные вещи ни в этой главе, ни в предыдущих. И я не нашел документации, как это сделать. Это мои вершинные и фрагментные шейдеры:

Vertex Shader

#version 140

attribute vec2 coord2d;

varying vec4 f_color;

uniform float offset_x;
uniform float scale_x;
uniform float point_size;

void main(void) {
    gl_Position = vec4((coord2d.x + offset_x) * scale_x, coord2d.y, 0.0, 1.0);
    f_color = vec4(coord2d.xy / 2.0 + 0.5, 1.0, 1.0);
    gl_PointSize = point_size;
}

Fragment Shader

#version 140

varying vec4 f_color;

uniform sampler2D texture;

void main(void) {
    gl_FragColor = texture2D(texture, gl_PointCoord) * f_color;
}

Я думал об использовании матрицы 2x2 в FS для поворота gl_PointCoord , но я понятия не имел, как заполнить матрица для этого. Должен ли я передать его непосредственно в FS как единое целое?

5
задан Nicol Bolas 30 January 2012 в 16:15
поделиться