float4에 마지막 w의 값...1이냐 0이냐....

반응형

오늘도 역시나 개삽질을했다.
position값을 버텍스버퍼를 생성해서 셰이더에 넘겨줄때를 생각해 보자.
position값은 물론 원래라면 x,y,z,w를 고려한 d3dxvector4가 디폴트 지만 보통은
그냥 귀찮아서 d3dxvector3으로 설정을 해서 넘긴다.
그러면 우리의 위대한 셰이더 님은 입력으로 들어오는 vector가 3짜리이고
셰이더 내의 입력 구조체의 vector가 4짜리라면 마지막 값은 자동으로 1로 채워준다.

그런데 너무나 당연하지만 전역변수는 0으로 값이 채워진다.
이 사실을 간과한 것이 커다란 삽질의 시초였다.
버텍스버퍼로 락, 언락을 걸어서 넣는 방식이 아니라 셰이더 파일 내에 전역변수 어레이를 두어서
이곳에서 찾아서 쓰게 하는 구조로 만들고 있었다.

그런데 이아이가 항상 화면의 정중앙에 위치해 있는게 아닌가...씹팔!!!!!!!!!!
아놔~ 이것땜에 pix와 퍼프드로 초낸 분석하다가......발견..
정점의 마지막 값이 십할 0이야...ㅜㅜ..

결론.
float4짜리 전역 변수에 float3짜리를 넣으면 마지막값은 0이다.
하지만 float4짜리 입력구조체에 float3짜리를 버퍼로 넘겨주면 마지막값은 알아서 1로 바뀐다...

'Study > Graphics ' 카테고리의 다른 글

not use lock, unlock version font system  (0) 2009.08.24
shader에서의 dword  (0) 2009.08.15
shader SetValue  (0) 2009.08.08
Directx9 셰이더 프로그래밍 예제 수정방법.  (4) 2009.07.13
HDR Cube Map Sample  (0) 2009.06.25
TAGS.

Comments