Questions tagged «outline»

3
在隐藏网格的位置/位置如何隐藏后处理的网格轮廓
我正在3D引擎中设置活动轮廓,为选定的3d角色或屏幕上的风景设置高光效果。在使用模板缓冲区并获得一些不满意的结果(形状问题为凹形,由于距相机的距离导致轮廓线厚度以及台式机和笔记本电脑之间的不一致)后,我切换到边缘检测和帧缓冲区采样并得到了轮廓很满意。 但是,当选定的网格位于另一个网格之后时,我无法隐藏轮廓。考虑到我的过程,这很有意义,因为在渲染场景的其余部分之后,我只是从帧缓冲区中渲染了2d着色器轮廓。 下面是我的结果的两个屏幕截图。第一个是“好”轮廓,第二个是在阻挡轮廓源的网格上看到轮廓的位置。 渲染过程如下所示:1)仅绘制突出显示的网格的alpha,在帧缓冲区(framebuffer1)中捕获黑色轮廓。 2)将纹理从framebuffer1传递到执行边缘检测的第二个着色器。在framebuffer2中捕获边缘。 3)渲染整个场景。 4)在场景顶部从framebuffer2渲染纹理。 我对如何完成工作有一些想法,希望能收到关于其有效性或更简单或更佳方法的反馈。 首先,我考虑过将整个场景渲染到帧缓冲区,并将突出显示的网格的可见轮廓存储在alpha通道中(所有白色保存,突出显示的网格可见)。然后,我将在alpha通道上执行边缘检测,渲染场景帧缓冲区,然后在顶部渲染边缘。结果是这样的: 为此,我想到了仅在突出显示对象的渲染过程中设置一个定义,该定义将为所有可见像素在alpha中绘制所有黑色。 我的第二个想法是使用上面概述的当前渲染过程,而且在渲染选定网格的轮廓时,还将X,Y和Z坐标存储在framebuffer1的R,G和B通道中。边缘检测将被执行并存储在framebuffer2中,但是我会将RGB / XYZ值从alpha的边缘传递到轮廓。然后,在渲染场景时,我将测试坐标是否在framebuffer2中存储的边缘内。如果是这样,我将测试当前片段的深度,以确定它是在从RGB通道提取的坐标之前还是之后(转换为相机空间)。如果片段在深度坐标之前,则片段将正常渲染。如果片段在后面,则将其呈现为纯轮廓颜色。 我正在为该项目使用LibGDX,并且希望支持WebGL和OpenGL ES,因此我没有涉及几何着色器或更新的GLSL函数的解决方案。如果有人可以评论我提出的方法或提出更好的建议,我将非常感激。

2
OpenGL获取多个重叠对象的轮廓
我只是对使用c ++的opengl进行的游戏有一个想法:当玩家赢得某些东西时,我希望在多个重叠的物体上有一个大轮廓(5-6像素)。 我以为最好的方法是使用模板缓冲区,但是尝试在屏幕外渲染模板缓冲区需要几个小时,而且我无法获得任何结果。还有其他一些技巧! 这就是我想要得到的: 有任何想法吗?
10 opengl  outline 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.