glsl 设置gl_PointSize
时间: 2023-08-05 21:07:17 浏览: 182
要在GLSL中设置gl_PointSize,您可以在顶点着色器中使用内建变量gl_PointSize。gl_PointSize用于指定绘制点时的点大小。以下是一个示例代码:
```glsl
void main() {
gl_PointSize = 10.0; // 设置点的大小为10个像素
// 其他顶点着色器代码
}
```
在顶点着色器中,您可以通过为gl_PointSize赋予一个浮点数值来设置点的大小。请注意,点的大小是以像素为单位的。
请确保在绘制点之前启用了点功能,可以通过使用以下代码在渲染循环中启用:
```cpp
glEnable(GL_PROGRAM_POINT_SIZE);
```
这样,当您在顶点着色器中设置了gl_PointSize后,绘制的点将按照所设置的大小进行渲染。
相关问题
Glsl gl_NormalScale 通过什么api传递参数
在 OpenGL 中,gl_NormalScale 是一个内置的 uniform 变量,用于缩放法向量。要设置 gl_NormalScale 的值,可以使用 glUniform*() 函数族中的 glUniform*() 函数,例如 glUniform2f() 或 glUniform1fv() 等。在渲染时,可以在顶点着色器中使用这个 uniform 变量,对法向量进行缩放。例如,在顶点着色器中可以这样使用:
```glsl
uniform vec2 gl_NormalScale;
in vec3 inNormal;
void main() {
vec3 normal = normalize(inNormal) * vec3(gl_NormalScale, 1.0);
...
}
```
这里 gl_NormalScale 是一个 vec2 类型的 uniform 变量,通过乘以法向量的 x 和 y 分量来缩放法向量。在渲染时,使用 glUniform2f() 函数将 gl_NormalScale 设置为所需的值即可。
void main(void) { // Projection is based on vertical angle vec4 pos = uModelview * vec4(aPosition + uOffset, 1.0); gl_Position = uProjection * pos; gl_PointSize = aMisc.x * uProjection[1][1] / -pos.z * uResolution.y * 0.5;
这是一个用GLSL语言编写的顶点着色器代码,主要是实现了点精灵的投影和大小调整。其中,uModelview和uProjection是uniform变量,aPosition和aMisc是顶点属性变量,uOffset、uResolution和gl_Position是内置变量。具体来说,代码中的pos是顶点在世界坐标系下的位置,gl_Position是经过投影变换后的裁剪坐标,gl_PointSize是点精灵的大小。其中,点精灵大小的计算公式为aMisc.x * uProjection[1][1] / -pos.z * uResolution.y * 0.5,其中aMisc.x表示顶点属性中的大小参数,uProjection[1][1]表示投影矩阵的y轴缩放因子,-pos.z表示顶点到观察者的距离,uResolution.y表示屏幕的高度,0.5是一个常数因子。
阅读全文