![]() |
1
3
如果已经正确设置了场景图,那么应该在显示管道的早期剔除视图外的对象。它需要在代码中选中一个复选框来验证对象是否不可见,因此会有一些处理开销(但不会有太多)。 如果将对象组织成一个合理的层次结构,那么只需选中一个复选框,就可以剔除场景的大部分。 |
![]() |
2
7
OpenGL faq 在“剪切、剔除和可见性测试”中,这样说:
继续阅读这个链接的其余部分,它都是相关的。 |
![]() |
3
0
通常,应用程序必须执行这些优化——OpenGL实际上只是呈现部分,不执行对象管理或类似的任何操作。如果你输入一些看不见的东西的数据,它仍然需要将相关的坐标转换成视图空间,然后才能确定它完全脱离屏幕或超出你的一个裁剪平面。 有几种方法可以从管道中剔除不可见的对象。检查一个对象是否在相机后面可能是最简单和最便宜的检查,因为您可以通过每个对象的简单计算平均拒绝一半的数据集。对实际视图frustrum执行相同类型的测试来拒绝所有根本不可见的东西并不难。 显然,在一个复杂的游戏中,你不需要为每一个微小的物体都这样做,所以通常是将它们按层次进行分组(例如,如果你已经确定不渲染持有它的角色,你就不会渲染一把枪),在空间上(例如,将世界划分为一个网格/四叉树)/ octree 拒绝任何你知道在你已经确定的区域内的物体是目前不可见的),或者更常见的是两者的结合。 |
![]() |
4
0
“唯一的胜利是不玩” 无论最终是否在屏幕上渲染,每个glvertex等都将成为性能冲击。唯一的解决方法是不绘制(即剔除)任何情况下都不会渲染的对象。 最常见的方法是 viewing frustum 绑在你的相机上。把它和一个 octtree 或 quadtree 取决于你的游戏是否是3D/2D的,所以你不需要检查每一个游戏对象与截锥。 |
![]() |
5
0
基础驱动因素 可以 在幕后进行一些剔除,但是你不能依赖于它,因为它不是OpenGL标准的一部分。也许你的电脑的驱动程序会这样做,但也许其他人(可能会运行你的游戏)不会这样做。最好是你自己动手挑选。 |
|
user6857832 · 如何不让我的图像移出场景 7 年前 |
|
mrmisiek · Javafx如何通过函数创建按钮? 9 年前 |
|
Ross Watson · Corona sdk作曲家不会回到之前的场景 10 年前 |
|
Susitha · 如何在cocos2d场景之间传递参数 11 年前 |
![]() |
user2005938 · 完全移除AndEngine中的场景 11 年前 |