9_Extra 发布于五月 20 分享 发布于五月 20 · 只看该作者 在被虚幻5狠狠蹂躏之后,我转投了Godot的怀抱,其更加易读的文档,更简单的设计大大降低的阅读源码的难度,更小的规模也使得编译和调试非常方便。 赞美Godot! 主要是读了一下Surface(表面,或者说网格体)从创建,到提交给图形API的这一部分,就这么一小步,Godot解决了以下问题 1. 对多样化的顶点格式的支持 有的网格体的顶点属性齐全,包含位置,法线,切线,不只一个UV,顶点颜色甚至自定义数据,而有的网格体仅仅包含位置属性。Godot可以灵活地支持各种各样顶点属性的组合,对每种组合(顶点格式)动态计算每种属性的偏移量,创建顶点数组对象(VAO)。当某种顶点属性缺失时(比如着色器中使用了法线但顶点并不包含此属性),Godot会自动生成新的VAO并且使用默认值填充缺少属性,在渲染时通过vertex_input_mask查找符合着色器所需输入的VAO。 2. 支持多线程并发操作 (目前Godot在使用OpenGL作为图形API时对分离线程渲染的支持还有问题,启动就崩溃) 古老的OpenGL并不支持多线程,所有的OpenGL函数必须在唯一一个关联了OpenGL上下文的线程执行。但Godot允许我们在任意线程创建网格体,在任意线程写入和读取网格体数据,不用管线程。Godot也是使用了任务队列,将所有图形相关操作提交到任务队列,由渲染线程延迟执行。同时结合RID,在创建资源时并不立即创建资源,仅仅分配一个RID,然后把真正创建资源的命令加入任务队列。在读取数据时,则需要阻塞并等待渲染线程执行完所有命令(之前的命令可能包含对资源的写入)。 3. 支持蒙皮和形态键 天书,为了防掉san暂时略过了 链接到点评
推荐贴
创建帐号或登入才能点评
您必须成为用户才能点评
创建帐号
在我们社区注册个新的帐号。非常简单!
注册新帐号登入
已有帐号? 登入
现在登入