C++ 在 for 循环中访问违规写入位置
C++ Access violation writing location in for loop
我试图使边界框工作,以便在我的引擎中实现视锥剔除。但是,一旦我运行解决方案,边界框的转换函数中就会出现访问冲突运行时错误。
void BoundingBox::Transform(D3DXVECTOR3 pos, D3DXVECTOR3 rot, D3DXVECTOR3 sca) {
D3DXQUATERNION rotationQuaternion;
D3DXMatrixTransformation(&mat, NULL, NULL, &sca, NULL,
D3DXQuaternionRotationYawPitchRoll(&rotationQuaternion,
D3DXToRadian(rot.x), D3DXToRadian(rot.y), D3DXToRadian(rot.z)), &pos);
for (int k = 0; k < 8; k++)
{
D3DXVec3Transform(&transVertex[k], &vertexes[k], &mat);
/*this->*/xMin = min(transVertex->x, /*this->*/xMin);
/*this->*/yMin = min(transVertex->y, /*this->*/yMin);
/*this->*/zMin = min(transVertex->z, /*this->*/zMin);
/*this->*/xMax = max(transVertex->x, /*this->*/xMax);
/*this->*/yMax = max(transVertex->y, /*this->*/yMax);
/*this->*/zMax = max(transVertex->z, /*this->*/zMax);
}}
有人知道为什么会这样吗?
以下是错误的内容:"在 bushRanger.exe 中向0x0F5E20E6 (D3DX9_43.dll( 抛出异常: 0xC0000005:访问违规写入位置0x00000038。
我发现了发生了什么,相机制作了视锥体,但它没有边界框,它仍然使用与其他合成相同的 Move(( 函数。
void Composite::Move(D3DXVECTOR3 trasl, D3DXVECTOR3 escal, D3DXVECTOR3 rot)
{
Component::Move(trasl, escal, rot);
/*D3DXMATRIX rotMat = rotXMat * rotYMat * rotZMat;
thyMatrix = scaMat * rotMat * transMat;*/
D3DXQUATERNION rotationQuaternion;
D3DXMatrixTransformation(&thyMatrix, NULL, NULL, &escal, NULL, D3DXQuaternionRotationYawPitchRoll(&rotationQuaternion, D3DXToRadian(rot.x), D3DXToRadian(rot.y), D3DXToRadian(rot.z)), &trasl);
laCajita->Transform(_trasl, _escal, _rot); // and here is a non existant bounding box
UpdateBoundingBox();
}
在这里,当它触摸摄像机的移动函数时,摄像机是一个复合体,它调用了一个不存在的边界框。
好吧,人们,感谢您在评论中的帮助,从现在开始,在发布问题之前,我会更加关注 debbugger。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 使用迭代器时如何访问对象在向量中的位置?
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- Cuda:访问违规写入位置0x0000000000000000
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 访问特定阵列位置/索引时出现分段错误
- 创建一个类来访问和指定向量类型,并构建一个获取位置并为其分配区域的类
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 0xC0000005:读取位置0xCDCDCDC1时发生访问冲突
- 0xC0000005:读取位置0xCDCDCDCD时发生访问冲突
- 读取类的析构函数中的位置时发生访问冲突
- C++ std::map 如何按索引位置访问密钥
- 为什么要在内存位置访问违规写入
- 在构造函数以外的任何其他位置访问相机时,我的相机指针返回 null
- 在 65536 位置访问迭代器的指针运算符会导致段错误
- 0xC0000005:在位置访问违规写作
- 当从不同位置访问类方法时,类成员的位置会发生变化
- 从STL列表的任何位置访问头
- 未处理的异常.在该位置访问违规.在c++中运行kinect应用程序时