您的位置:首页 > 编程语言 > C#

CSharpGL(40)一种极其简单的半透明渲染方法

2017-01-07 19:44 330 查看
CSharpGL(40)一种极其简单的半透明渲染方法

开始

这里介绍一个实现半透明渲染效果的方法。此方法极其简单,不拖累渲染速度,但是不能适用所有的情况。

如下图所示,可以让包围盒显示为半透明效果。



原理很简单,就是渲染包围盒时,只渲染坐标值为奇数(或偶数)的那些fragment。很久以前,超级马里奥就利用了这个方法。

在原有的fragment shader基础上,判断一下当前片段的位置即可。

#version 150 core

uniform vec3 boundingBoxColor = vec3(1, 1, 1);

out vec4 out_Color;

void main(void)
{
if (int(gl_FragCoord.x - 0.5) % 2 == 1 && int(gl_FragCoord.y - 0.5) % 2 != 1) discard;
if (int(gl_FragCoord.x - 0.5) % 2 != 1 && int(gl_FragCoord.y - 0.5) % 2 == 1) discard;

out_Color = vec4(boundingBoxColor, 1.0f);
}


总结

打完收工。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: