삼각형 움직인 원리
gpu에 VB 설정을 하고 system 메모리 쪽에도 동일하게 유지되는 전역변수로
벡터 정점 3개 짜리를 주었다.
키보드를 움직이면 system 메모리 쪽에 있는 배열이 수정되는 것이다.
map, unmap 이라는 함수를 통해 system 메모리 쪽에서 gpu VB로 보낸다.
버텍스버퍼에 정점을 찍은 이유 ->
현재 삼각형 모형으로 정점을 찍었다. 애초에 NDC 좌표를 기준으로 해서 삼각형 모형이 될 수 있도록..
VB를 훼손시키지 않으면서 정점들을 이동시키려면,
VB는 그대로 IA에서 입력을 받고, 버텍스 쉐이더에서 몬스터 위치값을 받아서 한번에 이동을 시키고
레스터라이저에게 주면된다. (이동량을 별도로 따로 받음)
Constant Buffer (상수버퍼) -> 자잘한 상수값을 전달할 때 사용하는 버퍼
gpu는 최적화를 위해서 16byte단위로 연산을 한다.
상수버퍼는 IA단계에 넣어놓지 않는다.
상수버퍼는 어느 시점에든 쏴질수있게 하게끔 gpu의 레지스터 영역을 사용한다.
Getadressof -> 이중포인터를 전달할 ㄸ ㅐ사용
스마트 포인터가 본인이 들고 있는 멤버의 주소를 주는 것
Get -> 지를 주는거~
호출되는 픽셀의 위치를 감안했을 때, 거리값을 비율로 환산을 해서 보간(interpolation)이 되어 내면이 채워진다.
UV -> 어떤 이미지가 있으면 정규화된 좌표를 대입해서 그 위치에 맞는 좌표값을 sampling 해서 그 색상을 리턴시킨다.
uv좌표계를 쓰는이유는 화면크기와 이미지크기가 다를때 비율값을 써서 크기를 맞춰주기위해 쓰는것이다.
그림으로 간단히 보면 아래처럼 된다.
예를들어 저50짜리 크기의 사각형이 이미지라 생각하고 100짜리 사각형이 화면이라 생각하자.
그럼 저 50짜리 이미지를 100의 크기로 만들어서 화면에 옮겨야할것이다.
그럴러면 저이미지와 화면의 비율값을구해서 옮겨와야한다.
보통 일반적인 이미지는 픽셀을 이용해서 그려준다.
하지만 50짜리 이미지에 있는 픽셀을 그대로 가져온다면 크기가 맞지않을것이다.
그래서 만약 예를들어서 내가픽셀을 가져온다치면 서로 가져오고싶은 위치의 비율값을 구해서 (여기선 0.5정도라 하자)
그비율에 맞춰서 픽셀을 가져온 다음 (이그림은 이미지와 화면의 크기차가 2배니깐) 위아래 2배 2배씩해서 4픽셀로 그려주는것이다.
이런식으로 텍스쳐의 비율값을 계산해서 화면에 입혀주는것이다.