【问题标题】:How to link .obj Files into an opengl program and use them?如何将 .obj 文件链接到 opengl 程序并使用它们?
【发布时间】:2014-06-22 21:37:01
【问题描述】:

我的问题的目的是,我希望 .obj 文件(来自搅拌机)在我的(opengl)程序中可用,而这些文件在我的硬盘上不可见。所以,我想可以将这些 .obj 文件链接到我的程序文件中并从中读取。这怎么可能做到或不可能?我还能做什么?

备注:.obj 文件包含用户不可编辑的 3d 网格,我不想将这些 .obj 文件硬编码为 .cpp 文件。在 osx mavericks + eclipse 上工作。

【问题讨论】:

  • 因为它可能会被标记为仅链接的答案,所以这里有一个脚本可以满足您的要求:heikobehrens.net/2009/08/27/obj2opengl。我相信有各种文件格式转换器可以生成 C 头文件。这只是我通过快速搜索遇到的第一个。

标签: c++ opengl osx-mavericks blender


【解决方案1】:

在 Windows 上,您可以将文件嵌入到资源中,然后从您的软件中加载它们。

【讨论】:

  • 我忘了补充说我是在 Mac 上开发的。在我的问题中更新。
  • 好的,您可以将资源中的 obj 文件放入包中。如果您不希望内容可见,有一些方法可以加密内容,看看这个:aptogo.co.uk/2010/07/protecting-resources,它适用于 Iphone,但也适用于 OSX。
  • 好的,所以我必须从我的项目中制作一个捆绑包,其中我有一个资源文件夹,我可以将我的 .obj 文件放入其中。谢谢!
  • 如果您使用的是简单的可执行文件,您应该认真考虑将 obj 转换为 cpp/h 文件,在这种情况下,您甚至可以打乱里面的数据并避免捆绑
  • 我的目标是获得一个用户友好的应用程序。所以,我认为在这种情况下,建议创建一个捆绑包,而且创建起来并不难。因为我对此有点挣扎,所以我想进一步阅读:从this question 获取说明。启动捆绑包所需的示例 Info.plist 如下:Info.plist example
【解决方案2】:

我的问题的目的是,我希望 .obj 文件(来自搅拌机)在我的 (opengl) 程序中可用,而不会在我的硬盘上显示这些文件。

这通常不是一个好主意。图片您正在发布该程序的新版本,您有一个 Internet 更新程序。如果将数据与程序分开,则只需传输一个小的可执行二进制文件。如果您将所有数据嵌入到可执行文件中,则每次更新都会迫使您分发一个大包。

当然,如果这是您的程序强烈依赖的一些数据,并且可能会在版本之间发生变化,那么嵌入它是有意义的;例如连接到微控制器内存接口的 FPGA 配置图像,其中微控制器程序使用内存映射 I/O 到 FPGA 中,因此 FPGA 图像必须与程序匹配。

所以,我想可以将这些 .obj 文件链接到我的程序文件中并从中读取。

是的,这当然是可能的。通常的方法是使用bin2c 之类的工具将文件转换为C 数组,然后将生成的文件与您的程序一起编译。但是请记住,C 编译器可能对数组初始值设定项的大小有上限。

我还能做什么?

不要无理取闹。如果用户可以更改.obj 文件,那么事情就会中断并且用户向您抱怨,您可以告诉他,在他做出更改之后,这是他或她自己的责任。用户不是你的敌人。

【讨论】:

  • 然而改变模型可能会使游戏中的作弊变得更容易
  • 另外,他想保留他的模特的版权吗?
  • @LeonardoBernardini:模型是否在单独的文件中并不重要,这对版权没有任何影响。从可执行文件中提取数据也很简单;只需转储.data 部分的内容。
  • 我不想涉及法律方面,但事实上他想隐藏他的模型以不让用户撕毁它们..我认为保护他的作品没有什么奇怪的。
  • @LeonardoBernardini:只是它不起作用;这是徒劳的。
猜你喜欢
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
  • 2015-02-21
  • 2016-11-07
  • 1970-01-01
相关资源
最近更新 更多