【发布时间】:2010-10-04 05:28:10
【问题描述】:
我开始为 iOS 构建实时光线追踪器。我是这个光线追踪的新手,到目前为止我所做的只是在 ObjC 中编写一个基本的。在我看来,基于 C 的光线追踪器会比用 ObjC 编写的更快,但 ObjC 会简单得多,因为对象层次结构非常方便。不过,速度非常重要,因为我希望它是实时的,比如 30 fps。
您对 C 语言的加速是否值得额外的复杂性有什么看法?我可以预见 C 代码会花费更长的时间,并且会因为很多错误而让我头疼(尽管我对 C 并不陌生),但最初追求更快的速度是很诱人的。
有没有用 C 语言编写的光线追踪器的例子?我在谷歌上搜索这些东西时被很多 C++ 和 C# 的结果污染了。
【问题讨论】:
-
为什么选择 C 或 ObjC?在我看来,如果 OO 特性和性能都很重要,并且你想要一种 C 系列语言,我会选择 C++。
-
你应该用真实的尺寸来描述你的容器。我怀疑 Objective C 比直接 C 慢得多,但我可能是错的,在你测量它之前你不会知道。
-
@xscott:可以。如果您花费大量时间发送消息,则发送消息而不是调用函数的开销会很大。但是对于任何特定的应用程序,正如您所说,直到您对其进行分析才能知道。
-
硬件将在这项工作中发挥重要作用。你更有可能在 iPad 和 iPhone4(iPod 4G) 上获得成功,因为图形处理要好得多。我认为 Jerry Coffin 可能是对的,OpenCL 将为您提供更接近您所追求的速度,但是我认为 30 fps 的实时光线追踪在 iOS 设备上将是一个困难的目标。
-
我没有意识到 OpenCL 可以在 iOS 上使用,谢谢。
标签: objective-c c ios real-time raytracing