Я следую этому руководству , чтобы узнать больше об 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 как единое целое?