在我的Android应用程序中,我使用GLSurfaceView来绘制3D对象,就像一个盒子对象。我通过使用OpenGL ES API来翻译该对象。在动画过程中的某一时刻,对象将从可见视口窗口中消失。此时,我必须从正在绘制的其他对象的集合中删除此对象。我如何检测到对象已经离开视图?短码示例将不胜感激。如何检测对象是否已移出OpenGL ES中的可见窗口?
0
A
回答
1
Here is a frustum class for android,代码从here的端口。它允许您从OpenGL中提取截锥参数,然后测试包含在视图体积中的各种几何图元(点,球体,轴对齐的长方体)。
两件事看出来:
- 在update()方法的应-是冗余的错误处理代码。有关此故事,请参见here。看起来像是一只海森猫。
- extractFromOGL()使用glGetFloat - 此方法未在PixelFlinger软件渲染器中实现。如果您针对真正的低端设备或使用模拟器,则必须自己计算投影和模型视图矩阵,并手动调用update()。
1
你在找什么叫做viewing frustum culling。
的视锥是体积可见 到所述虚拟相机的几何 表示。当然, 本卷以外的对象在最终图像中不会显示为 ,因此它们将被丢弃。通常情况下,物体位于观看平截头体的边界上。 这些对象沿着这个边界在 被称为剪裁的过程中被切割成片段 ,并且 位于截锥体之外的片断被丢弃 ,因为没有地方绘制它们。
发表了几篇教程:
http://www.lighthouse3d.com/opengl/viewfrustum/
http://www.crownandcutlass.com/features/technicaldetails/frustum.html
相关问题
- 1. 检测是否格是在浏览器窗口中可见
- 2. 检测窗口是否是可可中的关键窗口
- 3. 如何检测bootstrap弹出窗口上的单击对象是否打开?
- 4. 在OpenGL ES for iOS中移动对象?
- 5. 如何检测我的窗口在弹出窗口中是否打开
- 6. 如何检测mediacontroller是否可见?
- 7. 如何检测窗口是否闪烁
- 8. 如何检查窗口在Windows窗体中是否真的可见?
- 9. 检测可用的OpenGL ES版本
- 10. 如何检测Android应用程序中的OpenGL ES中的对象的点击?
- 11. 如何检测加载的ORM对象是否已更改?
- 12. 检测Outlook检查器窗口是否已关闭
- 13. 我如何检测弹出窗口是否被阻塞在铬
- 14. 检查整个div是否在浏览器窗口中可见
- 15. 如何检测窗口是否可以显示?
- 16. 如何使用Nhibernate检测对象是否已更新?
- 17. 是否可以在Mac上用GLFW 3.2.1制作OpenGL ES 2.0的窗口?
- 18. 检测用户是否在WPF中移动了窗口
- 19. 如何检查一个精灵对象是否可见?
- 20. Android OpenGL-ES:对象显示出错Chirality
- 21. 如何检测Android MapView是否已被平移或缩放?
- 22. RMI如何测试对象是否已导出
- 23. 如何确定OpenGL窗口是否为活动窗口?
- 24. 如何检查弹出对话框是否已经打开?
- 25. 检测COM端口是否已关闭
- 26. 是否可以使用Modernizr检测视口/窗口宽度?
- 27. ARB_texture_multisample是否可用于OpenGL ES 2.0?
- 28. 如何检查窗口是否有WS_VISIBLE设置? (或者如果可见)
- 29. 如何检查移动Safari浏览器的窗口对象?
- 30. 如何检测在Chrome中是否阻止其他域的弹出窗口?
我正在寻找OpenGL ES Api,就像给定一个对象几何体一样,它会测试该对象是否在视口窗口之外,然后返回测试结果。 – ace 2011-02-07 18:54:46
在OpenGL ES中没有API。正如我在上面指出的那样,您需要实施平截头体剔除。 – 2011-02-07 19:29:36