我正在尝试在我正在进行的一个小项目中实现牛顿物理。我写了一个解析器来在Half-Life 1中实现它。
当我尝试在地图中使用它时,会抛出Access违规错误。它的位置是0xFFFFFFF0。
当我尝试在Visual Studio 2015中使用Debug时,它指向了我。
bmodels[ modelNum ] = NewtonCreateConvexHull( m_pWorld, numVerts, ( float* )&verts[ 0 ][ 0 ], 12, NULL );
所以我很茫然。完整功能可在http://pastebin.com/W6NAs2hM上找到。
答案 0 :(得分:0)
基于您的代码非常快速并基于您描述的错误,看起来您正在访问您的阵列超出范围。
您开始索引为1的初始for循环,即modelNum = 1
for( int modelNum = 1; modelNum < m_iNumModels; modelNum++ )
然后在行
bmodels[ modelNum ] = NewtonCreateConvexHull( m_pWorld, numVerts, ( float* )&verts[ 0 ][ 0 ], 12, NULL );
您尝试访问bmodels[1]
,但实际上它应该是bmodels[0]
,因为0始终是数组的第一个索引。