Cuda 如何通过optix示例在obj模型上绘制纹理

Cuda 如何通过optix示例在obj模型上绘制纹理,cuda,textures,optix,Cuda,Textures,Optix,我对optix和cuda很陌生。 我正在尝试修改optix SDK示例,以呈现具有光线跟踪的三维模型。我修改了“progressivePhotonMap”示例。由于缺乏optix/cuda知识,我不知道如何在3D模型上绘制纹理,熟悉SDK示例的人能帮我吗 我阅读了其他绘制纹理的例子,如“swimmingShark”或“cook”,并试图找出使用的线索。然而,这些例子似乎有不同的方式来绘制纹理 从现在起,我知道我必须在cpp文件中加载纹理 GeometryInstance instance = m

我对optix和cuda很陌生。 我正在尝试修改optix SDK示例,以呈现具有光线跟踪的三维模型。我修改了“progressivePhotonMap”示例。由于缺乏optix/cuda知识,我不知道如何在3D模型上绘制纹理,熟悉SDK示例的人能帮我吗

我阅读了其他绘制纹理的例子,如“swimmingShark”或“cook”,并试图找出使用的线索。然而,这些例子似乎有不同的方式来绘制纹理

从现在起,我知道我必须在cpp文件中加载纹理

GeometryInstance instance = m_context->createGeometryInstance( mesh, &m_material, &m_material+1 );
instance["diffuse_map"]->setTextureSampler(loadTexture( m_context, ... );
并在cuda文件中创建TextureSampler

rtTextureSampler<float4, 2>      diffuse_map; // Corresponds to OBJ mtl params
但是,我找不到texcoord在cuda文件中获取纹理坐标数据的位置。 在.cpp文件中似乎应该有这样的代码

GI["texcoord"]->setBuffer(texcoord)
有谁能教我texcoord从哪里获得纹理坐标数据,以及如何匹配坐标数据和纹理,以显示具有光线跟踪的三维模型? 我在谷歌找不到教程,我真的需要帮助或指导才能达到我的目标。谢谢。

你应该先读一遍。特别是关于属性变量的段落

IIRC
texcoord
变量是表单的一个属性

rtDeclareVariable( float3, texcoord, attribute texcoord );
在交叉点程序中计算并传递到最近的命中程序(属性用于将数据从交叉点传递到着色点)

简短回答:它被设置到另一个CUDA函数中,从概念上讲,该函数计算该行所需的一些数据

rtDeclareVariable( float3, texcoord, attribute texcoord );