【发布时间】:2012-01-30 16:04:42
【问题描述】:
我正在关注this tutorial 以了解有关 OpenGL 的更多信息,尤其是点精灵。但我被困在页面末尾的一个练习中:
尝试通过更改片段着色器将点精灵旋转 45 度。
在这一章中没有关于这类事情的提示,在之前的章节中也没有。而且我没有找到任何有关如何执行此操作的文档。这些是我的顶点和片段着色器:
顶点着色器
#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;
}
片段着色器
#version 140
varying vec4 f_color;
uniform sampler2D texture;
void main(void) {
gl_FragColor = texture2D(texture, gl_PointCoord) * f_color;
}
我想过在 FS 中使用 2x2 矩阵来旋转 gl_PointCoord,但我不知道如何填充矩阵来完成它。我是不是应该直接把它作为制服传给FS?
【问题讨论】: