DX10 이후로 백버퍼의 크기가 변경되면 백버퍼, 렌더타겟, 깊이 스텐실 버퍼 이외의 메모리는 특별히 신경쓰지 않아도 됨
WM_SIZE 메시지 검출
RenderTarget View, Depth-Stencil Buffer 해제 및 소멸
Back Buffer 크기 조정
RenderTarget View, Depth-Stencil Buffer 생성 및 적용
뷰포트 재지정
-> SwapChain과 직접적으로 연관되어있지 것 외에는 굳이 해제 및 재생성할 필요는 없음
-> SwapChain을 통해 직접 생성하는 것 이외에는 해제 및 재생성할 필요는 없음
QueryPerformanceFrequency는 1초당 진동수를 반환, 단 최신 운영체제에서는 보정된 값을 반환하는 듯
1 QueryPerformanceCounter = 100 nano second
IME(Input Method Editor)는 한정된 Qwerty 자판에서 그보다 많은 문자를 표현하기 위한 방법
Direct Write는 GPU를 통해 문자를 화면에 출력하는 API
IME를 통해 입력받은 문자를 Direct Write를 통해 출력하는 방식인듯
DirectX의 공식문서에서는 Resource, SubResource를 GPU Memory라고 언급하지는 않음
이는 그래픽카드가 없는 상황에서도 DirectX를 통해 Draw를 할 수 있도록 한 부분 때문인 것으로 보임
이러한 관점에서 DX에서의 Resource는 Data PipeLine에서 접근할 수 있는 데이터의 부류로서 언급 됨
다만 ID3DBuffer류의 객체를 생성할 때 GPU Memory로 데이터가 넘어가는 것으로 확인됨
ID3D11DeviceContext::Map()함수를 통해 DX의 SubResource객체에 직접 접근할 수 있음
pointer형식을 통한 값 접근, 변경 가능
UnMap전까지 GPU에서는 접근 불가능
Resource의 생성 flag에 따라 D3D11_MAP MapType 지정이 제한적임
기존 구현 방식인 ID3D11DeviceContext::UpdateSubresource()는 Subresource의 전체를 갱신하는 함수
CPU와 GPU는 데이터 전송에 많은 자원을 소모하므로 가능하면 서로간의 메모리를 건드리지 않는것이 성능에 좋음
ResourceBuffer를 생성할 때 D3D11_CPU_ACCESS_FLAG를 설정하지 않거나, D3D11_USAGE를 D3D11_USAGE_IMMUTABLE한 방식으로 생성하는 것이 가장 좋음
또한 Map을 통해 데이터에 접근할 경우에도 D3D11_MAP을 D3D11_MAP_WRITE_DISCARD나 D3D11_MAP_WRITE_NO_OVERWRITE로 설정할 경우 더 빠른 성능을 얻을 수 있을 듯
교환법칙 성립, 분배법칙 성립
벡터의 정규화여부에 상관없이 계산 가능
투영을 통한 계산
분해된 수직 성분을 통해 직선과 한 점 사이의 거리를 구할 수 있음
예각 :
직각 :
둔각 :
이 사이각은 항상 충돌함을 보장함
분배법칙 성립
두 벡터의 외적의 크기는 두 벡터를 통해 표현되는 평행사변형의 넓이와 같음
두 벡터의 외적을 통해 표현된 벡터는 두 벡터를 포함하는 평면의 방정식을 의미
d = (0, 0, 0)과의 거리
평면 앞에 위치 :
평면 뒤에 위치 :
DirectX는 왼손좌표계를 사용하므로 시계방향으로 감겨야한다
평면 법선 벡터와 한 점 사이의 내적을 이용하면 점과 평면 사이의 거리를 구할 수 있음