首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenTK:让点显示为圆而不是方块

OpenTK:让点显示为圆而不是方块

原创
作者头像
秦建辉
修改2025-09-03 11:00:40
修改2025-09-03 11:00:40
1950
举报
文章被收录于专栏:OpenTKOpenTK

在OpenTK中,点默认情况下显示为方块。

顶点着色器:vertex.glsl

代码语言:c
复制
#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

代码语言:c
复制
#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的混合功能实现半透明效果,常用于渲染具有透明边缘的点或其它图元

代码语言:csharp
复制
GL.Enable(EnableCap.Blend); // 启用混合功能
GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha); // 设置混合函数

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档