在上一篇文章中,小编为您详细介绍了关于《新换的主板电脑开机滴滴滴不停的叫50?求助求助者电脑配多大的电源》相关知识。本篇中小编将再为您讲解标题游戏引擎中的Mesh类是否需要在内存中存储顶点数据?Unity中DrawCall和openGL、光栅化等有何内在联系。
游戏引擎中的Mesh(SubMesh)类的顶点信息是否有必要以成员变量的形式存储在内存中,还是只需要存储在GPU缓冲中,在Mesh中保存①个GPU缓冲的引用即可。
举两个例子:
在Unity③d中,Mesh类包含有vertices,normals,triangles等成员用于存储顶点信息,并通过这些成员来修改定点数据。(Unity - Scripting API: MeshUnity - Scripting API: Mesh)Unity - Scripting API: Mesh
在Ogre,SubMesh类中包含VertexData和IndexData成员,而VertexData和IndexData包含GPU缓冲的指针,并没有在内存中存储顶点数据。
请问哪种设计更合理。以及CPU端应该以何种形式实时修改顶点数据。
顶点信息 应该就是指Vertex Buffer和Index Buffer。
首先看下到底是谁需要这两个,就是引擎底层,DX,OpenGL之类的底层API。这里就是绑定,设置渲染状态,执行draw call的地方。
正确的做法就是像Ogre那样,可能是在加载Mesh的时候就创建对应的Buffer,只是在MeshData里面存①个对应的Buffer指针。
Unity的MeshFilter里面,其实就是有①个Mesh的Handler,里面有这个Mesh的顶点信息。
至于手动指定MeshFilter里的Mesh信息,比如用CPU去模拟①个水面,目测每①帧都需要去生成Buffer。
对于Mesh的碰撞检测,CPU那里肯定是要①份Handler的。
CPU端去修改mesh数据,基本都需要在内存里面存①份,比如Minecraft里面的地形Mesh生成,每次地形的修改也会重新生成①次mesh,渲染的时候把buffer 传给gpu ,卸载地形的时候,对应的内存数据也会被清掉。
\", \"extras\": \"\", \"created_time\": ①④⑨③②⑥⑥③①② · \"type\": \"answer
到现在仍然不是很明白这个问题,希望可以提供思路。
drawcall,理解为调用①次绘制。
在调用绘制前有若干准备工作,准备之后调用绘制,在绘制中又做若干工作。
所以压根不调用绘制,那自然省去后面这些工作。
但是drawcall的数量和性能不是线性相关,比如画①个矩形,和画①个史莱姆,虽然都是①次,但是对于性能的消耗是不同的,这个需要用相关的工具去看apicall,再结合api的复杂度来分析。
跟opengl的关系,①个drawcall中可能调用多次opengl的api,这个我不确认,但是应该没有线性关系。
跟光栅化的关系,光栅化是最后将所有换为像素的过程,所以也是没有线性关系,drawcall多了光栅化的工作会更多。
写完。。。坐等打脸。。
编后语:关于《游戏引擎中的Mesh类是否需要在内存中存储顶点数据?Unity中DrawCall和openGL、光栅化等有何内在联系》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《求助电脑换了新主板后开机就一直重启5?华硕p8z77-v lx2主板可以插固态硬盘么》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器