我解析了一个txt文件以获取场景描述,并尝试为文件中的每个三角形添加Optix Prime RTPmodel
。这适用于第一个三角形,但是第二个模型在初始化后仍然以某种方式仍为NULL引用。程序将模型推入向量时抛出以下错误:Exception thrown at 0x00007FFB608640D0 (optix_prime.6.0.0.dll) in CustomEngine.exe: 0xC0000005: Access violation reading location 0x0000000000000020
。
我在Visual Studio和Optix 6.0中使用VC ++
我试图用一个函数来完成整个RTPmodel的创建,但无济于事。由于它仅影响它解析的第二个模型,因此可能是一些我忘记的关闭函数调用,但我确实调用了rtpModelUpdate()
并尝试了rtpModelFinish()
,但是随后出现错误而不是在{{1 }}。锁定一个不相关的缓冲区(命中缓冲区)的缓冲区似乎可以解决它,但是在创建RTPquery时抛出相同的异常。
push_back
// Parses a triangle definition
void SceneParser::parseTriangle(const char* line)
{
//
// [...] This is where I parse the vertices
//
std::vector<float> vertices({ v0.x, v0.y, v0.z, v1.x, v1.y, v1.z, v2.x, v2.y, v2.z });
std::vector<uint> indices({ 0, 1, 2 });
RTPmodel triangle;
rtpModelCreate(m_scene->getContext(), &triangle); // after this call, the second parsed triangle is still NULL, whereas the first had an adress
m_scene->addObject(triangle, vertices, indices, TransformMatrix(vec3(0.0f), 0.0f)); // Dummy transform, since the vertices are already in place
}