typedef enum _D3DTEXTURESTAGESTATETYPE {
D3DTSS_COLOROP = 1,
D3DTSS_COLORARG1 = 2,
D3DTSS_COLORARG2 = 3,
D3DTSS_ALPHAOP = 4,
D3DTSS_ALPHAARG1 = 5,
D3DTSS_ALPHAARG2 = 6,
D3DTSS_BUMPENVMAT00 = 7,
D3DTSS_BUMPENVMAT01 = 8,
D3DTSS_BUMPENVMAT10 = 9,
D3DTSS_BUMPENVMAT11 = 10,
D3DTSS_TEXCOORDINDEX = 11,
D3DTSS_BUMPENVLSCALE = 22,
D3DTSS_BUMPENVLOFFSET = 23,
D3DTSS_TEXTURETRANSFORMFLAGS = 24,
D3DTSS_COLORARG0 = 26,
D3DTSS_ALPHAARG0 = 27,
D3DTSS_RESULTARG = 28,
D3DTSS_CONSTANT = 32,
D3DTSS_FORCE_DWORD = 0x7fffffff
} D3DTEXTURESTAGESTATETYPE;
D3DTSS_COLOROP
텍스처 스테이지 스테이트는 텍스처 컬러 혼합 처리이며,D3DTEXTUREOP 열거형의 멤버에 의해 식별된다. 최초의 텍스처 스테이지 (스테이지 0)의 디폴트값은 D3DTOP_MODULATE 이며, 그 이외의 모든 스테이지의 디폴트값은 D3DTOP_DISABLE 이다.
typedef enum _D3DTEXTUREOP {
D3DTOP_DISABLE = 1,
D3DTOP_SELECTARG1 = 2,
D3DTOP_SELECTARG2 = 3,
D3DTOP_MODULATE = 4,
D3DTOP_MODULATE2X = 5,
D3DTOP_MODULATE4X = 6,
D3DTOP_ADD = 7,
D3DTOP_ADDSIGNED = 8,
D3DTOP_ADDSIGNED2X = 9,
D3DTOP_SUBTRACT = 10,
D3DTOP_ADDSMOOTH = 11,
D3DTOP_BLENDDIFFUSEALPHA = 12,
D3DTOP_BLENDTEXTUREALPHA = 13,
D3DTOP_BLENDFACTORALPHA = 14,
D3DTOP_BLENDTEXTUREALPHAPM = 15,
D3DTOP_BLENDCURRENTALPHA = 16,
D3DTOP_PREMODULATE = 17,
D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
D3DTOP_MODULATECOLOR_ADDALPHA = 19,
D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
D3DTOP_BUMPENVMAP = 22,
D3DTOP_BUMPENVMAPLUMINANCE = 23,
D3DTOP_DOTPRODUCT3 = 24,
D3DTOP_MULTIPLYADD = 25,
D3DTOP_LERP = 26,
D3DTOP_FORCE_DWORD = 0x7fffffff
} D3DTEXTUREOP;
D3DTSS_COLORARG1
텍스처 스테이지 스테이트는, 그 스테이지에 대한 최초의 색인수이며,D3DTA 의 어느 쪽인가에보다 나타난다. 디폴트의 인수는 D3DTA_TEXTURE 이다.
읽고 쓰기용의 임시 레지스터의 색을 선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는
경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTA_CURRENT
텍스처 인수는 전의 혼합 스테이지의 결과이다. 최초의 텍스처 스테이지 (스테이지 0)에서는, 이 인수는 D3DTA_DIFFUSE 와 같다. 전의 혼합 스테이지가 범프 맵 텍스처 (D3DTOP_BUMPENVMAP 처리)를 사용하고 있는 경우는, 범프 맵 텍스처의 전의 스테이지로부터 텍스처가 선택된다. s 가 현재의 텍스처 스테이지를 나타내,s - 1 에 범프 맵 텍스처가 있는 경우, 이 인수는 텍스처 스테이지 s - 2 로부터의 결과 출력이 된다. 읽고 쓰기가 허가된다.
D3DTA_DIFFUSE
텍스처 인수는, gouraud shading 처리중에 정점의 성분으로부터 보간 해 얻을 수 있던 디퓨즈색이다. 정점이 디퓨즈색을 포함하지 않는 경우의 디폴트색은 0xFFFFFFFF 이다. 허가는 읽기 전용이다.
D3DTA_SELECTMASK
모든 인수에 대응하는 마스크값. 텍스처 인수의 설정에는 사용하지 않는다.
D3DTA_SPECULAR
텍스처 인수는, gouraud shading 처리중에 정점의 성분으로부터 보간 된 스펙큐러색이다. 정점이 스펙큐러색을 포함하지 않은 경우, 디폴트색은 0xFFFFFFFF 이다. 허가는 읽기 전용이다.
D3DTA_TEMP
이 텍스처 인수는, 읽고 쓰기용의 임시 레지스터의 색이다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다. 허가는 읽고 쓰기이다.
D3DTA_TEXTURE
텍스처 인수는, 이 텍스처 스테이지의 텍스처 컬러이다. 허가는 읽기 전용이다.
D3DTA_TFACTOR
텍스처 인수는, 전회 D3DRENDERSTATETYPE 렌더링 스테이트값을 사용해 IDirect3DDevice9::SetRenderState 를 호출했을 때의 텍스처 계수 세트이다. 허가는 읽기 전용이다.
D3DTSS_COLORARG2
텍스처 스테이지 스테이트는, 그 스테이지에 대한 2 번째의 색인수이며,D3DTA 에 의해 식별된다. 디폴트의 인수는 D3DTA_CURRENT 이다.
읽고 쓰기용의 임시 레지스터의 색을 선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는
경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_ALPHAOP
텍스처 스테이지 스테이트는, 텍스처 알파 혼합 처리이며,D3DTEXTUREOP 열거형의 멤버에 의해 식별된다. 최초의 텍스처 스테이지
(스테이지 0)의 디폴트값은 D3DTOP_SELECTARG1 이며, 그 이외의 모든 스테이지의 디폴트값은 D3DTOP_DISABLE 이다.
D3DTSS_ALPHAARG1
텍스처 스테이지 스테이트는, 그 스테이지에 대한 최초의 알파 인수이며,D3DTA 에 의해 식별된다. 디폴트의 인수는 D3DTA_TEXTURE 이다.
그 스테이지에 텍스처가 설정되어 있지 않은 경우는, D3DTA_DIFFUSE 가 디폴트의 인수가 된다. 읽고 쓰기용의 임시 레지스터의 색을 선택하려면
, D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_ALPHAARG2
텍스처 스테이지 스테이트는, 스테이지의 2 번째의 알파 인수이며,D3DTA 에 의해 식별된다. 디폴트의 인수는 D3DTA_CURRENT 이다.
읽고 쓰기용의 임시 레지스터의 색을 선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는
경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_BUMPENVMAT00
텍스처 스테이지 스테이트는, 범프 맵핑 행렬의 [0][0] 계수에 대한 부동 소수점값이다. 디폴트값은 0.0 이다.
D3DTSS_BUMPENVMAT01
텍스처 스테이지 스테이트는, 범프 맵핑 행렬의 [0][1] 계수에 대한 부동 소수점값이다. 디폴트값은 0.0 이다.
D3DTSS_BUMPENVMAT10
텍스처 스테이지 스테이트는, 범프 맵핑 행렬의 [1][0] 계수에 대한 부동 소수점값이다. 디폴트값은 0.0 이다.
D3DTSS_BUMPENVMAT11
텍스처 스테이지 스테이트는, 범프 맵핑 행렬의 [1][1] 계수에 대한 부동 소수점값이다. 디폴트값은 0.0 이다.
D3DTSS_TEXCOORDINDEX
이 텍스처 스테이지에서 사용하기 위해서(때문에) 설정된 텍스처 좌표의 인덱스. 정점 1 개에 대해서 최대 8 세트까지의 텍스처 좌표를 설정할 수 있다. 정점이, 지정된 인덱스의 텍스처 좌표 세트를 포함하지 않은 경우는, u 및 v 좌표 (0,0)가 디폴트로 사용된다.
이 플래그는, 고정 기능 정점 처리에서만 사용한다. 예를 들어, 정점 셰이더에서는 사용하지 않는다. 정점 셰이더를 사용해 렌더링 할 때는, 각 스테이지의 텍스처 인덱스를 디폴트값으로 설정할 필요가 있다. 각 스테이지의 디폴트의 인덱스는, 스테이지 인덱스와 같다.
이 스테이트에는, 이 텍스처 스테이지에서 사용하는 각 정점에 대한 좌표 세트의 제로로부터 시작되는 인덱스를 설정한다. 또, 애플리케이션에서는, 설정하는 인덱스와의 논리화로서 몇개의 정수를 설정해, 텍스처 변환용의 입력 텍스처 좌표를 자동적으로 생성하도록(듯이) Microsoft® Direct3D® 에 요구할 수 있다. 모든 정수의 일람에 대해서는, 「D3DTSS_TCI 」를 참조할것.
제로에 해결되는 D3DTSS_TCI_PASSTHRU 를 제외해, 설정되는 인덱스와 이하의 플래그의 어느쪽이든을 사용하면 텍스처 랩핑 모드의 결정에 인덱스가 엄밀하게 사용된다. 이 플래그는 환경 맵핑을 실시하는 경우는 특히 유효하다.
D3DTSS_BUMPENVLSCALE
범프 맵 휘도(Luminance)에 사용하는 부동 소수점수(실수)의 스케일값. 디폴트값은 0.0 이다.
D3DTSS_BUMPENVLOFFSET
범프 맵 휘도(Luminance)에 사용하는 부동 소수점수(실수)의 오프셋(offset). 디폴트값은 0.0 이다.
D3DTSS_TEXTURETRANSFORMFLAGS
D3DTEXTURETRANSFORMFLAGS 열거형의 멤버. 이 텍스처 스테이지의 텍스처 좌표의 변환을 제어한다. 디폴트값은, D3DTTFF_DISABLE 이다.
D3DTSS_COLORARG0
3항연산 (적화와 선형 보간)의 3 번째의 색오퍼랜드의 설정. D3DTA 에 의해 식별된다. 이 설정은, D3DTEXOPCAPS_MULTIPLYADD 또는
D3DTEXOPCAPS_LERP 장치 능력이 존재하는 경우에 지원 된다. 디폴트의 인수는 D3DTA_CURRENT 이다. 읽고 쓰기용의 임시 레지스터의 색을
선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 이 레지스터의
디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_ALPHAARG0
3항연산 (적화와 선형 보간)의 알파 채널 실렉터 오퍼랜드의 설정. D3DTA 에 의해 식별된다. 이 설정은, D3DTEXOPCAPS_MULTIPLYADD 또는
D3DTEXOPCAPS_LERP 장치 능력이 존재하는 경우에 지원 된다. 디폴트의 인수는 D3DTA_CURRENT 이다. 읽고 쓰기용의 임시 레지스터의 색을
선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 디폴트의
인수는, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_RESULTARG
이 스테이지의 결과의 출력 레지스터를 선택하기 위한 설정. D3DTA 에 의해 식별된다. 이 값은, D3DTA_CURRENT (디폴트값) 또는 D3DTA_TEMP 로
설정할 수 있다. D3DTA_TEMP 는, 입력 인수로서 이후의 스테이지에 읽어들일 수가 있는 단일의 임시 레지스터이다. 포그(안개:fog)
블렌더 및 frame buffer에게 건네지는 최종적인 색은 D3DTA_CURRENT 로부터 얻어온다의 것으로, 마지막에 액티브한 텍스처 스테이지
스테이트는 현재에의 쓰기로 설정해야 한다. 이 설정은, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다.
D3DTSS_CONSTANT
스테이지마다 정수 컬러. 장치가 스테이지마다 정수 컬러를 지원 할지 어떨지를 확인하려면 ,D3DPMISCCAPS 의 D3DPMISCCAPS_PERSTAGECONSTANT
정수를 조사한다. D3DTSS_CONSTANT 는 D3DTA_CONSTANT 로 사용한다. 「D3DTA 」를 참조할것.
D3DTSS_FORCE_DWORD
이 열거형을 강제적으로 32 비트 사이즈에 컴파일 한다. 이 값은 사용되지 않았다
'Game Programming, DX, 3D Programming' 카테고리의 다른 글
D3D 장치 상태 변경 비용 목록 (0) | 2011.09.07 |
---|---|
GameLoop (0) | 2010.07.15 |
GetAsyncKeyState() 함수와 GetKeyState() 함수의 차이 (0) | 2010.07.14 |