목록Client/DirectX11 (3)
GeekCoders
object allocated on the heap may not be aligned 16위 경고는 16byte로 정렬되야 하는 데이터를 멤버로 가지거나, 할당할 때 생기는 경고다. 이 경고가 무서운 이유는 경고를 무시하고 실행해도 가끔 실행되고, 가끔 죽는다.운좋게 16바이트로 메모리가 정렬되면 멀쩡하게 돌아가고, 그 반대는 메모리크래쉬로 이어진다. DirectXMath.h 또는 XnaMath.h 가 위 경고를 발생시킨다. __declspec(align(16)) struct XMMATRIX__declspec(align(16)) struct XMFLOAT2A : public XMFLOAT2...위와 같이 16바이트로 정렬된 데이터를 사용한다. 16바이트로 정렬된 데이터를 할당 할 때에는 명시적으로 16바..
DirectX SDK와 Window SDK가 충돌을 일으켜 C4005 경고를 발생한다.VS2012 버전부터 Window SDK에 DirectX가 포함되어 있기에 발생하는 경고다. DirectX SDK를 이용 할 경우 타 플랫폼, 윈도우 상위버전 호환이 안되는 경우가 생길 수 있다.그러므로 왠만하면 Window SDK를 이용하는 것을 추천한다. 호환이 안되는 목록은 함수마다 다르며, MSDN에서 해당함수를 검색해보면 호환여부를 알려주며,호환이 안될 경우 다른 방법을 제시해준다.예를 들어, 쉐이더를 컴파일 하기위해 D3DX11CompileFromFile를 사용했었는데, Window SDK의 D3DCompileFromFile를 이용해서 컴파일 할 경우 Window 8.1과 XBOX360에 호환이 된다.(htt..
DirectX10까지는 D3DX 라이브러리에서 3D Math 를 지원했다.DirectX11부터는 XNAMath 라이브러리를 사용한다. DirectX11 SDK에 포함되어 있으며, 샘플소스코드에서도 XNAMath가 사용되는 걸 볼 수 있다. XNAMath는 DirectX include경로내의 xnamath.h 만 포함시키는 걸로 사용 할 수 있다.모든 내용이 헤더에 포함되어 있다. XNAMath는 SSE2로 연산을 수행한다. - SSE : http://ko.wikipedia.org/wiki/%EC%8A%A4%ED%8A%B8%EB%A6%AC%EB%B0%8D_SIMD_%ED%99%95%EC%9E%A5 - SSE2: http://ko.wikipedia.org/wiki/SSE2 xnamath.h를 열어보면 __m..