Opengl 玩家将看到的渲染区域

Opengl 玩家将看到的渲染区域,opengl,glsl,rendering,Opengl,Glsl,Rendering,因此,对于我正在开发的游戏,我正在尝试制作一种独特类型的着色器。大多数是非常基本的,只有一个困难的部分。我只想渲染玩家在视线中看到的东西。这是一个自上而下的2D游戏,玩家通常可以看到上面的房间。但以这张图片为例 显然,这里的玩家是橙色圆圈。他能看到的区域是灰色(灰色?)填充区域。黑色线条代表一个房间,紫色线条代表他穿过房间门的视野。我只想渲染着色区域 我知道GLSL有一个discard语句,您可以在其中删除特定像素。这意味着通过生成布尔函数,我可以在顶点着色器中执行以下代码 if ( !pla

因此,对于我正在开发的游戏,我正在尝试制作一种独特类型的着色器。大多数是非常基本的,只有一个困难的部分。我只想渲染玩家在视线中看到的东西。这是一个自上而下的2D游戏,玩家通常可以看到上面的房间。但以这张图片为例

显然,这里的玩家是橙色圆圈。他能看到的区域是灰色(灰色?)填充区域。黑色线条代表一个房间,紫色线条代表他穿过房间门的视野。我只想渲染着色区域

我知道GLSL有一个discard语句,您可以在其中删除特定像素。这意味着通过生成布尔函数,我可以在顶点着色器中执行以下代码

if ( !playerCanSeePoint( params ) ) {
    discard;
}

但我不知道如何做的是使playerCansePoint函数。我的一个想法是从玩家身上向各个方向投射看不见的线,然后找到它的第一个交点。这将意味着第一面墙,并将创造适当的形状。不过,这似乎是在消耗资源。那么,有没有一个好方法可以做到这一点

首先是视图区域大小的正方形,然后根据玩家所在的位置为每面墙切割出一部分

然后,可以对多边形进行三角剖分,并使用模具防止在其外部绘制