मैं डायरेक्टएक्स एसडीके में ट्यूटोरियल देख रहा था। ट्यूटोरियल 5 ठीक काम करता है, लेकिन जब मैंने अपनी खुद की कक्षाओं में कोड कॉपी और अलग किया है, तो मुझे अपने आवेदन को लॉन्च करने के दौरान अजीब त्रुटि मिली।m = XMMatrixIdentity() के बाद क्रैश - कक्षाओं में संरेखण स्मृति?
लाइन है:
g_World1 = XMMatrixIdentity();
क्योंकि यह की
, मैं xnamathmatrix.int ऑपरेटर में त्रुटि = जो कि तरह लग रहा है मिल गया:
XMFINLINE _XMMATRIX& _XMMATRIX::operator=
(
CONST _XMMATRIX& M
)
{
r[0] = M.r[0];
r[1] = M.r[1];
r[2] = M.r[2];
r[3] = M.r[3];
return *this;
}
और त्रुटि संदेश है:
Access violation reading location 0xffffffff
मैंने कहीं पढ़ा है कि यह XMFLOAT4X4/XMMATRIX से जुड़े किसी चीज़ के कारण हो सकता है:
क्या आपने मैट्रिक्स को स्टोर करने के लिए XMFLOAT4X4 का उपयोग करने और केवल XMMATRIX का उपयोग करने पर विचार किया है?
लेकिन मुझे लगता है कि मैं पहले से ही एक्सएममैट्रिक्स का उपयोग करता हूं।
MyClass.h:
private:
XMMATRIX g_World1;
MyClass.cpp:
void init(){
g_World1 = XMMatrixIdentity();
}
मुझे नहीं लगता कि मैं XMMATRIX g_World1 बदलना चाहिए है,
त्रुटि C2679: XMFLOAT4X4 g_World1 है, क्योंकि ऐसा लगता है कि त्रुटियों का उत्पादन बाइनरी '=': कोई ऑपरेटर पाया किस प्रकार की 'XMMATRIX' एक दायां संकार्य लेता है (या कोई स्वीकार्य रूपांतरण है)
तो, समस्या क्या है?
शायद यह एक बेवकूफ सवाल है लेकिन इसे कैसे प्राप्त करें? मैंने एक स्ट्रक्चर मैट्रिक्स बनाया है जिसमें चार मैट्रिक्स (व्यू, वर्ल्ड इत्यादि) शामिल हैं लेकिन इसके लिए '16 सदस्य' द्वारा संरचना सदस्य संरेखण को कैसे सक्षम किया जाए? – PolGraphic
VStudio के लिए: प्रोजेक्ट गुण -> कॉन्फ़िगरेशन गुण -> सी/सी ++ -> कोड जनरेशन -> स्ट्रक्चर मेमबर संरेखण -> 16 का चयन करें –
जीसीसी के लिए "__attribute__ ((गठबंधन (16))" है "structs –