在OpenTK中,点默认情况下显示为方块。
顶点着色器:vertex.glsl
#version 460 core
layout(location = 0) in vec2 aPosition;
layout(location = 1) in vec3 aColor;
layout(location = 2) in float aPointSize;
out vec3 ourColor;
uniform mat4 projection;
uniform mat4 model;
uniform float scaleFactor;
void main(void)
{
gl_Position = projection * model * vec4(aPosition, 0.0, 1.0);
ourColor = aColor;
gl_PointSize = aPointSize * scaleFactor;
}片段着色器:fragment.glsl
#version 460 core
in vec3 ourColor;
out vec4 outputColor;
const float smoothness = 0.02;
void main()
{
vec2 center = vec2(0.5, 0.5);
float distance = distance(gl_PointCoord, center);
if (distance > 0.5) discard;
float alpha = 1.0 - smoothstep(0.5 - smoothness, 0.5, distance);
outputColor = vec4(ourColor, alpha);
}开启OpenGL的混合功能实现半透明效果,常用于渲染具有透明边缘的点或其它图元
GL.Enable(EnableCap.Blend); // 启用混合功能
GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha); // 设置混合函数原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。