구조체 내에 행렬을 저장하려고 시도하는 중에 XMLoadFloat4X4()
을 사용하여 구조체에서 XMFLOAT4x4*
유형을 호출 할 때 런타임에 어설 션 오류가 발생합니다. DirectX 11 : XMLoadFloat4X4()를 사용하는 런타임 어설 션 오류
XMFLOAT4X4 *f4x4_Scale;
XMFLOAT4X4 *f4x4_Rotation;
XMFLOAT4X4 *f4x4_Translate;
XMFLOAT4X4 *f4x4_ObjectViewSpace;
는 아마도 구조체의 내부
XMFLOAT4x4*
위치에서의 실제 값을로드 :
값은 간단히 저장된다.
XMMATRIX Entity::Scale(float x, float y, float z){
XMMATRIX m_Scale = XMLoadFloat4x4(e_Asset.Asset.FileDesc.matrixTransformation.f4x4_Scale);
m_Scale = XMMatrixScaling(x, y, z);
return m_Scale;
}
디스 어셈블리는 XMLoadFloat4x4()
함수 자체 내부에서 휴식을 나타내고 있지만 실제로 이해할 수
는 I과 같은 변환 기능, 구조의 내부 XMLoadFloat4X4()
전화.
XMLoadFloat()
과 관련하여 어설 션 오류 문제를 해결하는 데 사용할 수있는 방법이 있습니까? (또는 어설 션 오류에 관한 정말 좋은 자료) 그리고/또는 나는 잘못된 것을하고 있습니까?
업데이트 :
척 Walbourn 제안으로 XMLoadFloat4X4()
에 대한 (XMFLOAT4X4)*pSource
포인터가 함수에 대한 어설 조건을 만족 NULL
했다. 건네지는 포인터는 처음에는 초기화되지 않았고 포인터를 설정하려고 시도했다.
시계가 설정되었고, XMFLOAT4X4
값은 XMStoreFloat4X4()
을 사용하여 매트릭스 동일성으로 초기화되었다.
XMMATRIX Identity = XMMatrixIdentity();
XMStoreFloat4x4(&e_Asset.Asset.FileDesc.matrixTransformation.f4x4_Scale, Identity);
마지막 범인
는 변환 기능이 너무 많은 과부하를하였습니다 단지 사실이었고, 나는 이전부터 길 잃은 디버깅 단계를 (필자는 기능 중 하나에 새로운XMFLOAT4X4
변수를 설정하고 초기화되지 않습니다) 놓쳤다. 문제가 해결되었습니다.
생성자'Entity() {e_Asset ... sformation.f4x4Scale = new XMFLOAT4X4 (...)}'에 값을 설정하려고했습니다 (단위 매트릭스를 수동으로 입력). 나는 다른 방법을 시도 할 수 있습니다. –
& psource **는 런타임시 ** NULL입니다. –
왜 힙이 개별적인''XMFLOAT4X4'' 인스턴스를 할당할까요? Entity 클래스에 값 멤버로 넣기 만하면됩니다. –