这个问题旨在帮助 NVIDIA OptiX 的初学者(很像我自己)
发生了什么
使用 OptiX 编译示例(随 OptiX 安装提供)时,我试图从其中一个计算机内核打印到控制台,但我不断收到以下错误:
error: cannot convert ‘optix::Context {aka optix::Handle<optix::ContextObj>}’ to ‘RTcontext’ for argument ‘1’ to ‘RTresult rtContextSetPrintEnabled(RTcontext, int)’
error: cannot convert ‘optix::Context {aka optix::Handle<optix::ContextObj>}’ to ‘RTcontext’ for argument ‘1’ to ‘RTresult rtContextSetPrintBufferSize(RTcontext, RTsize)’
尝试的解决方案
在createContext()
函数内部,在创建上下文的地方,我添加了几行代码来打开调试打印。我添加的代码行是:
rtContextSetPrintEnabled(context, 1);
rtContextSetPrintBufferSize(context, 4096);
这些是产生上述错误的两行。我在上下文对象的实例化之后添加了这些代码行,由下面的代码提供 - 来自原始的 nvidia 示例:
context = Context::create();
context->setRayTypeCount( 2 );
context->setEntryPointCount( 1 );
context->setStackSize( 2800 );
因此,完整的中断代码如下所示:
// Set up context
context = Context::create();
context->setRayTypeCount( 2 );
context->setEntryPointCount( 1 );
context->setStackSize( 2800 );
// Setup debug printing
rtContextSetPrintEnabled(context, 1);
rtContextSetPrintBufferSize(context, 4096);
一些背景资料
我正在尝试修改 optixWhitted 项目,在使用 Eclipse 的 NSight 版本的 CentOS 计算机上工作。
问题
在使用 optixWhitted 代码时,并尝试维护已经布置的代码样式和对象用法......我该如何解决这个问题?