首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用drawmesh进行unity Frustum剔除为时过早

使用drawmesh进行unity Frustum剔除为时过早
EN

Stack Overflow用户
提问于 2021-05-11 17:22:36
回答 1查看 245关注 0票数 0

我正在使用

代码语言:javascript
运行
复制
Graphics.DrawMesh(mesh, _matrix, material, 0, cam);

而且我的网格太高了,所以当移动相机时,当网格在屏幕内时,它不会提前显示出来。它被淘汰了。但是当我用MeshRenderer创建一个新的游戏对象时,没有问题,它剔除得很好,并不是太早。那么这里有什么不同呢?

我试着像这样设置网格边界:

代码语言:javascript
运行
复制
mesh.bounds = new Bounds()
            {
                center = Vector3.zero,
                extents = mesh.bounds.extents * 1000,
                max = mesh.bounds.max * 1000,
                min = mesh.bounds.min * 1000,
                size = mesh.bounds.size * 1000
            }; 

它还是不起作用。

也是试试这段代码:还是不能工作...

代码语言:javascript
运行
复制
void OnPreCull()
     {
         cam.cullingMatrix = Matrix4x4.Ortho(-99999, 99999, -99999, 99999, 0.001f, 99999) * 
                             Matrix4x4.Translate(Vector3.forward * -99999 / 2f) * 
                             cam.worldToCameraMatrix;
     }
 
     void OnDisable()
     {
         cam.ResetCullingMatrix();
     }
EN

回答 1

Stack Overflow用户

发布于 2021-05-12 07:04:38

你不应该手动设置网格的边界,除非你有一些疯狂的自定义着色器,可以大幅移动一些顶点。

如果您正在使用Unity Shader,那么您应该能够调用mesh.RecalculateBounds();,并且没有任何问题

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

https://stackoverflow.com/questions/67483944

复制
相关文章

相似问题

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