DirectX11 4

DX9-style assignment syntax is deprecated in technique10 pass blocks in favor of new function call syntax

technique11 Render { pass Pass0 { CULLMODE = NONE; SetVertexShader(CompileShader (vs_5_0, vs())); SetPixelShader(CompileShader (ps_5_0, ps())); } } Shader 마이그레이션 중 위 코드에서 다음과 같은 에러가 발생했다. DX9-style assignment syntax is deprecated in technique10 pass blocks in favor of new function call syntax CULLMODE = NONE 위 구문이 deprecated 된 것이다. technique10 이후부터는 아래와 같이 RasterizerState 를 별도로 선언하고, SetRasteriz..

DirectX11 2021.06.19

DX11 - 셰이더 마이그레이션

다음과 같이 1:1 로 변경하면 된다. ShaderModel 2 (DX9) ShaderModel 5 (DX11) 흩어져 있던 상수들 cbuffer (contant buffer) texture Texture2D 픽셀셰이더로 전달하는 POSITION SV_POSITION (system value position) PS_INPUT VS_OUTPUT 그대로 사용 ps(...) : COLOR0 ps(...) : SV_Target technique technique11 VertexShader = compile vs_2_0 vs(); SetVertexShader(CompileShader (vs_5_0, vs())) PixelShader = compile ps_2_0 ps(); SetPixelShader(Compile..

DirectX11 2021.06.19

DX11 - Encoded Pixel Shader size doesn't match specified size.

DX9 -> DX11 마이그레이션 중 다음 코드에서 에러메세지가 발생했다. // Create the pixel shader hr = GetDevice()->CreatePixelShader( pPSBlob->GetBufferPointer(), pPSBlob->GetBufferSize(), nullptr, &pPixelShader); Encoded Pixel Shader size doesn't match specified size. [ STATE_CREATION ERROR #192: CREATEPIXELSHADER_INVALIDSHADERBYTECODE] 아무리 확인해봐도 코드상으로는 잘못된 부분이 없어보였다. 셰이더 모델이 문제인가 싶어, 픽셀 셰이더 버전을 ps_2_0 에서 ps_4_0 으로 변경했더니 ..

DirectX11 2021.06.18

DX11 - D3D11CreateDeviceAndSwapChain 실패

Dx11 튜토리얼 코드가 D3D11CreateDeviceAndSwapChain() 함수에서 실패하여 DirectX Control Panel 에서 디버그 메세지를 켜보았다. 위와 같이 디버깅 할 프로그램 이름을 입력하면, DirectX 내부의 동작을 좀 더 세밀하게 확인할 수 있다. 위와 같이 설정한 뒤 프로젝트를 실행하면, 출력창에서 다음과 같은 에러메세지를 볼 수 있다. D3D11CreateDevice: Flags (0x2) were specified which require the D3D11 SDK Layers for Windows 10, but they are not present on the system. These flags must be removed, or the Windows 10 SDK ..

DirectX11 2021.05.10