C++ OpenGL3.1和x2B的分层COLLADA加载程序;上下文
哪些层有助于有效地实现这一点?最好是这样,我能够将下面列出的这三个组件与早期的层结合起来,并在运行时对其余部分进行编码 我正在编写一个COLLADA加载库,用于我的图形引擎。当然,我一开始就注意到这似乎是一个相当大的任务。我现在打算编写使用不同层的库 我还不明白科拉达的意思。我假设可能有:C++ OpenGL3.1和x2B的分层COLLADA加载程序;上下文,c++,opengl,3d,collada,C++,Opengl,3d,Collada,哪些层有助于有效地实现这一点?最好是这样,我能够将下面列出的这三个组件与早期的层结合起来,并在运行时对其余部分进行编码 我正在编写一个COLLADA加载库,用于我的图形引擎。当然,我一开始就注意到这似乎是一个相当大的任务。我现在打算编写使用不同层的库 我还不明白科拉达的意思。我假设可能有: 几何层 着色器层 织物层 即使是我不确定的这些,也可能需要成为另一种分层方案的一部分 请注意,除非另有说明,否则我很可能会使用或我刚读到的这个来读取文件。您知道Open Asset Import Libr
- 几何层
- 着色器层
- 织物层
我们也使用它如果你真的要从头开始,不要。使用DOM解析器,例如TinyXML。Collada很复杂,但定义很好,SAX解析器只是加强了工作,因为您必须自己构建文档树(并且您*将**需要一个数据结构来类似于完整的文档-Collada元素是高度互连的。要从中读取有意义的内容,需要解决各种交叉引用).您能为OpenAsset loader与支持全部功能的渲染引擎的接口提供合适的层吗?我听说过这个库,但总是担心我不知道的开销和多线程/流式处理的困难。如果您对此有任何意见,我将不胜感激。将Assimp的输出数据转换为您喜欢的任何表示形式将很容易,无论是OpenCl、OpenGl还是其他。如果它缺乏对您需要支持的某个Collada特性的支持,则需要修改加载程序代码。正如我提到的,您可以简单地将您的工作建立在它的基础上,并将其归属于源代码,这在法律上是可以接受的。关于开销:像Collada文件一样读取复杂的XML文件是开销。ASIMP是开销(内存消耗、图像大小和处理速度方面)。如果你的应用程序开销太大,考虑[Snip ]将导入部分从主应用程序中删除:加载你的CelaDa文件一次(不管你怎么做),将它们转换成你想要的表示,保存到磁盘,让你的应用程序加载这个优化的BLB。(具有一组可选数据流的原始顶点)、网格邻接(场景图、变换层次)、动画通道和材质(它们只是一个键值存储,大致表示从原始文件读取的内容)这些不同的通道或多或少独立,当然它们互相引用,并且不用担心<代码> NoBoooSo/Cord>。如果使用C++接口并创建和使用每个线程的一个导入实例,它将是很好的。没有线程问题。(我不确定文档中是否明确说明了这一点,但请放心,它不会在未来的版本中更改)。