首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部分渲染3D场景

部分渲染3D场景
EN

Stack Overflow用户
提问于 2014-06-28 22:02:18
回答 2查看 178关注 0票数 0

我想部分渲染一个3D场景,我的意思是我想要渲染一些像素,跳过其他像素。有许多非实时呈现器允许选择要呈现的部分。

例如,完全呈现的图像(所有呈现的像素)与部分呈现的图像:

我想让渲染器不呈现场景的一部分,在这种情况下,渲染器只会跳过呈现这些区域并节省资源(内存/CPU)。

如果在OpenGL中做不到,有人能建议任何其他开源呈现器吗,它甚至可以是一个软件呈现器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-28 22:39:48

如果您讨论的是显示的矩形子部分,您可以使用glViewport并适当地调整投影。

如果您想决定是否呈现每个像素,特别是使用纯固定的管道,您可能会使用模具缓冲区。这就像名字上写的那样--你画的就像喷在模具上一样。它是一个每像素掩码,可靠地至少每像素8位,并支持至少在过去15年的硬件。在其他用途中,它曾经是一种不用支付正式支持glStipple的“专业”卡就可以提供助学金的方法。

对于GLSL,还有一个discard语句,它会立即结束对片段的处理,而不会产生任何输出。主要的警告是,在某些GPU上--尤其是嵌入式GPUs -如果您可以通过这样做来避免条件的话,- the建议更愿意返回alpha为0的任何颜色(假设根据混合模式这不会产生任何影响)。条件和discard对并行性有很强的负面影响,因为片段着色器通常由同时执行多个像素的SIMD单元实现,因此任何时候如果着色器程序看起来可能发散,就可能会出现不必要的任务拆分。非常依赖GPU的东西,所以一定要在现实生活中。

编辑:正如注释中指出的,使用剪刀矩形比调整视图更聪明。这两种情况都意味着您不必调整投影,同样,任何调整中的舍入错误都不可能创建接缝。

这也让我感到震惊的是,使用模板进行严格的二进制测试的另一种方法是预先填充z-缓冲区,并在不想重绘的像素上使用最接近的值;使用彩色掩码只绘制到深度缓冲区。

票数 2
EN

Stack Overflow用户

发布于 2014-06-28 22:20:41

您可以分割场景并将其呈现为不同的部分--这样您就可以以较少的内存消耗呈现,并且可以简单地跳过不必要的部分或区域。也读过这个

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24471335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档