Direct3D 11.2 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ

рд╡рд┐рдВрдбреЛрдЬ 8.1 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 11.2 рдореЗрдВ рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореБрдЦреНрдп рдирдП рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рд┐рджреГрд╢реНрдп рднреАред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд╡рд╛рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред

рдЦрдмрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред


рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдп рдЬреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 11.2 рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рджрдХреНрд╖рддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕реАрдзреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреЗрдЬреА рд╕реЗ рдЪрд▓реЗрдВрдЧреЗ рдФрд░ рдХрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, Direct3D 11.2 API рдореЗрдВ рдХрдИ рдирдП API рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  1. рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди : рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЯреВрд▓ред
  2. рд╕рдВрдХрд▓рди рдФрд░ рдПрдЪрдПрд▓рдПрд╕рдПрд▓ рд╢реЗрдбреНрд╕ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ : рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╢реЗрдбреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
  3. рдмрдлрд╝рд░реНрд╕ рдиреЗ рдореЗрдореЛрд░реА рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ : рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛ GPU рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреЙрдкреА рдСрдкрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреА рд╣реИ
  4. рдЗрдирдкреБрдЯ рджреЗрд░реА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ : рдПрдХ рддрдВрддреНрд░ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмреАрдЪ рджреЗрд░реА рдХреЗ рд╕рдордп рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд╛рдлреА рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  5. рдЯрд╛рдЗрд▓ рд╕рдВрд╕рд╛рдзрди : рдмрдирд╛рд╡рдЯ рдХреЗ рдирдХреНрд╢реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ред

рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред


рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЖрдзреБрдирд┐рдХ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рддреНрд╡рд░рдХ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рд╕рд╕реНрддрд╛ рдСрдкрд░реЗрд╢рди рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдРрд╕реЗ рдХрдИ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рд╣реИ рдпрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рдЧрддрд┐ рдХрдо рд╣реИред


рдЬреИрд╕рд╛ рдХрд┐ рддрд╕реНрд╡реАрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдУрд╡рд░рд▓реЗ рдмрдлрд░ рдХреЛ рдХрдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд╕рд╛рде рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рддрдХ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдЕрд▓реНрдлрд╛ рдорд╛рд╕реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдлрд╝рд░реНрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рддрд╛ рд╣реИред рдЦреЗрд▓ рдХрдо рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдУрд╡рд░рд▓реЗ рдореЗрдВ рдПрдХ 3 рдбреА рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдЪрдпреВрдбреА рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдиреНрдп рдЧреНрд░рд╛рдлрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЛ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реА рд╕рдордп, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдУрд╡рд░рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдореБрдЦреНрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ред

рд╕реНрдереИрддрд┐рдХ рдУрд╡рд░рд▓реЗред

рдЗрд╕ рддрд░рд╣ рдХрд╛ рдУрд╡рд░рд▓реЗ рдмрд╕ рдмрдлрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдЬрд╝реВрдо рд╕реНрддрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ DXGI_SCALING_STRETCH рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {0}; swapChainDesc.Width = screenWidth / 1.5f; swapChainDesc.Height = screenHeight / 1.5f; swapChainDesc.Scaling = DXGI_SCALING_STRETCH; ... dxgiFactory->CreateSwapChainForCoreWindow( m_d3dDevice.Get(), reinterpret_cast<IUnknown*>(m_window.Get()), &swapChainDesc, nullptr, &swapChain ); 


рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдЙрди рдорд╛рдорд▓реЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╝реВрдо рд╕реНрддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдЧрддрд┐рд╢реАрд▓ рдУрд╡рд░рд▓реЗред

рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк, рдЬрд┐рд╕рдореЗрдВ рдЬрд╝реВрдо рд╕реНрддрд░ рдордХреНрдЦреА рдкрд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдмрдлрд╝рд░реНрд╕ (рд╕реНрд╡реЗрдкрдЪреИрди) рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ред рдЖрдкрдХреЛ рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдЯрд╕реЛрд░реНрд╕ рд╕реЛрд░реНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ :

 DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {0}; swapChainDesc.Width = screenWidth; swapChainDesc.Height = screenHeight; swapChainDesc.Scaling = DXGI_SCALING_STRETCH; dxgiFactory->CreateSwapChainForCoreWindow( ... ); ... if (fps_low == true) { swapChain->SetSourceSize(screenWidth * 0.8f, screenHeight * 0.8f); } // . ... swapChain->Present(1, 0); 


рдЧрддрд┐рд╢реАрд▓ рдУрд╡рд░рд▓реЗ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рд╡рд░реНрддрдорд╛рди рднрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдлрдкреАрдПрд╕ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд┐рдП рдмрд┐рдирд╛ рддреБрд░рдВрдд рддрд╕реНрд╡реАрд░ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдХреЗ рд╕рдВрдХрд▓реНрдк рдореЗрдВ 10% рдХреА рдХрдореА рднреА рдХрдИ рдмрд╛рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рд▓реЛрдб рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧреАред рдЦрд┐рд▓рд╛рдбрд╝реА рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ "рдмреНрд░реЗрдХ" рдХреА рднрд╛рд╡рдирд╛ рдЦреЛ рджреЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдмрд╣реБрдд рд╕реА рд╡рд╕реНрддреБрдПрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВред

рд╕рдВрдХрд▓рдиреЛрдВ рдХрд╛ рд╕рдВрдХрд▓рди рдФрд░ рд▓рд┐рдВрдХред


рд╢реЗрдбреНрд╕ рдХрд╛ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЕрдиреБрдХреВрд▓рди рдЙрдкрдХрд░рдг рд╣реИ, рдЬрдмрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓ рд░рд╣рд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд┐рдВрдбреЛрдЬ 8.0 рдореЗрдВ, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереА, рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╢реЗрдб рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдирд░реА рдмреНрд▓рдмреНрд╕ рдмрдирд╛рдиреЗ рдереЗред рд╡рд┐рдВрдбреЛрдЬ 8.1 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢реЗрдбреНрд╕ 'lib_5_0' рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬреЛ рд╢реЗрдбрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рд╢реЗрдбреНрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рдлреА shader рдХрдиреЗрдХреНрд╢рди рд╕рдордп рдмрдврд╝рд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдорд╣рдВрдЧреЗ рд╕рдВрдХрд▓рди рдСрдкрд░реЗрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИред

рдореИрдк рдХрд┐рдП рдЧрдП рдмрдлрд╝рд░реНрд╕ред


рд╡рд┐рдВрдбреЛрдЬ 8.0 рдореЗрдВ, рдХрдВрдкреНрдпреВрдЯ рд╢реЗрдбрд░реНрд╕ рдХреЗ рд▓рд┐рдП GPU рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдмрдлрд╝рд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдХреБрдЫ рд▓рд╛рдЧрддреЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╢реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реА рдорд╣рдВрдЧрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдпрджрд┐ рдЖрдк Windows 8.1 рдФрд░ DirectX 11.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ CPU_ACCESS рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рд╕рд╣рд╛рдпрдХ рдСрдкрд░реЗрд╢рди рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рддрдм рддрд╕реНрд╡реАрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢реЗрдб рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛ рд╣реБрдЖ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдм рддрдХ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдмрдирд╛рд╡рдЯ (Texture1D / 2D / 3D) рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд╣рд╛рдпрдХ рдмрдлрд░ рдХреЛ рд╕реАрдзреЗ рдЬрд╛рдБрдЪрдиреЗ рдпрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИ:

 D3D11_FEATURE_DATA_D3D11_OPTIONS1 featureOptions; m_deviceResources->GetD3DDevice()->CheckFeatureSupport( D3D11_FEATURE_D3D11_OPTIONS1, &featureOptions, sizeof(featureOptions) ); ... If (featureOptions.MapDefaultBuffers) { deviceContext->Map(defaultBuffer, ...); } else { deviceContext->CopyResource(stagingBuffer, defaultBuffer); deviceContext->Map(stagingBuffer, ...); } 


рдЗрдирдкреБрдЯ рджреЗрд░реА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ


рдЗрдирдкреБрдЯ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЦреЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рдордп рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ, рддреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ "рдмреНрд░реЗрдХ" рдФрд░ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдПрдХ рд╢реНрд░рдорд╕рд╛рдзреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ 11.2 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рдирдпрд╛ API IDXGISwapChain2 :: GetFrameLatencyWaitableObject рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ WAIT HANDLE рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕рдмрд╕реЗ рд╕рдлрд▓ рдХреНрд╖рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WaitForMultipleObjectEx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {0}; ... swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT; dxgiFactory->CreateSwapChainForCoreWindow( ... ); HANDLE frameLatencyWaitableObject = swapChain->GetFrameLatencyWaitableObject(); while (m_windowVisible) { WaitForSingleObjectEx( frameLatencyWaitableObject, INFINITE, true ); Render(); swapChain->Present(1, 0); } 


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рд░рдлреЗрд╕ рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд▓рдВрдмрддрд╛ рдореЗрдВ рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИ, 46 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗ 20 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рддрдХред

рдЯрд╛рдЗрд▓ рд╕рдВрд╕рд╛рдзрди



рдЖрдзреБрдирд┐рдХ рдЦреЗрд▓реЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрдирд╛рд╡рдЯ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╕реАрдзреЗ рдмрдирд╛рд╡рдЯ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдХрд▓реНрдк рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЯрд╛рдЗрд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдПрдХреНрд╕ 11.2 (рдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрди) рддрдВрддреНрд░ рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐ рдмрд┐рд▓реНрдб рдкреНрд▓реЗрдирд░реА рд░рд┐рдкреЛрд░реНрдЯ рд╕реЗ рддреАрди рдорд┐рдирдЯ рдХрд╛ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рд▓рд┐рдВрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг


  1. рд╡рд┐рдВрдбреЛрдЬ 8.1 рдХреЗ рд▓рд┐рдП C ++ / DirectX 11.2 рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдирдпрд╛
  2. рдЯрд╛рдЗрд▓ рд╕рдВрд╕рд╛рдзрди - Build'13 рд╕рдореНрдореЗрд▓рди рд░рд┐рдкреЛрд░реНрдЯ
  3. DirectX рдлреЛрд░рдЧреНрд░рд╛рдЙрдВрдб рд╕реНрд╡реЗрдкрдЪреИрди рдирдореВрдирд╛
  4. HLSL Shader рд╕рдВрдХрд▓рдХ рдирдореВрдирд╛
  5. DirectX рд╡рд┐рд▓рдВрдмрддрд╛ рдирдореВрдирд╛
  6. рдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдирдореВрдирд╛

Source: https://habr.com/ru/post/In199380/


All Articles