{"id":3792,"date":"2015-11-18T10:34:41","date_gmt":"2015-11-18T10:34:41","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=3792"},"modified":"2016-07-28T11:01:29","modified_gmt":"2016-07-28T11:01:29","slug":"les-principaux-objets-pour-initialiser-directx-11","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=3792","title":{"rendered":"Les principaux objets utilis\u00e9s pour initialiser DirectX 11"},"content":{"rendered":"<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/11\/objects.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-3801\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/11\/objects.png\" alt=\"objects\" width=\"256\" height=\"256\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/11\/objects.png 256w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/11\/objects-150x150.png 150w\" sizes=\"(max-width: 256px) 100vw, 256px\" \/><\/a><\/p>\n<p><strong>Intro : <\/strong><\/p>\n<p>Il est n\u00e9cessaire de manipuler une bonne <strong>dizaine<\/strong> d&rsquo;objets ou d&rsquo;interfaces pour initialiser DirectX 11 avant de commencer tout affichage 3D.<\/p>\n<p><strong>Pr\u00e9requis : <\/strong><\/p>\n<p>&#8211; Avoir d\u00e9j\u00e0 lu le code pour <em>initialiser DirectX 10 ou 11<\/em><\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>Les-voici \u00e9num\u00e9r\u00e9s ci-dessous.<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\/* Objets n\u00e9cessaires pour afficher du rendu 3D \u00e0 l'\u00e9cran *\/\r\nIDXGISwapChain* m_pSwapChain = nullptr;\r\nID3D11Device* m_pDevice = nullptr;\r\nID3D11DeviceContext* m_pDeviceContext = nullptr;\r\nID3D11RenderTargetView* m_pRenderTargetView = nullptr;\r\nID3D11Texture2D* m_pDepthStencilBuffer = nullptr;\r\nID3D11DepthStencilState* m_pDepthStencilState = nullptr;\r\nID3D11DepthStencilView* m_pDepthStencilView = nullptr;\r\nID3D11RasterizerState* m_pRasterState = nullptr;\r\n\r\n\/* Objets pour effectuer des requ\u00eates \u00e0 la carte graphique *\/\r\nIDXGIFactory* pDXGIFactory = nullptr;\r\nIDXGIAdapter* pDXGIAdapter = nullptr;\r\nIDXGIOutput* pDXGIAdapterOutput = nullptr;\r\n\r\nID3D11Texture2D* pBackBuffer = nullptr;\r\n\r\n\/* Objets de description de donn\u00e9es pour les objets n\u00e9cessaires au rendu *\/\r\nDXGI_SWAP_CHAIN_DESC swapChainDesc;\r\nD3D11_TEXTURE2D_DESC depthBufferDesc;\r\nD3D11_DEPTH_STENCIL_DESC depthStencilDesc;\r\nD3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc;\r\nD3D11_RASTERIZER_DESC rasterDesc;\r\nDXGI_ADAPTER_DESC adapterDesc;\r\nDXGI_MODE_DESC DisplayModeList;\r\nD3D11_VIEWPORT viewport;\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p><em><strong>Afficher du rendu 3D :<\/strong> <\/em><\/p>\n<p><em>IDXGISwapChain<\/em> : interface qui stocke une ou plusieurs surfaces ant\u00e9rieures de rendu avant d&rsquo;effectuer l&rsquo;affichage \u00e0 l&rsquo;\u00e9cran.<\/p>\n<p>Voici ses <strong>m\u00e9thodes<\/strong> principales :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\/* Acc\u00e8de \u00e0 une surface de back buffer *\/\r\nHRESULT GetBuffer(\r\n\u00a0 [in]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 UINT Buffer,\r\n\u00a0 [in]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 REFIID riid,\r\n\u00a0 [in, out]\u00a0 void **ppSurface\r\n);\r\n\r\n\/* Obtient les donn\u00e9es descriptives de la swap chain *\/\r\nHRESULT GetDesc(\r\n\u00a0 [out]\u00a0 DXGI_SWAP_CHAIN_DESC *pDesc\r\n);\r\n\r\n\/* Affiche une image \u00e0 l'\u00e9cran de l'utilisateur *\/\r\nHRESULT Present(\r\n\u00a0 [in]\u00a0 UINT SyncInterval,\r\n\u00a0 [in]\u00a0 UINT Flags\r\n);\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><em>ID3D11Device<\/em> : interface qui repr\u00e9sente un afficheur vid\u00e9o. Elle est utilis\u00e9e soit pour afficher du rendu 3D soit pour cr\u00e9er des ressources.<\/p>\n<p>Voici ses <strong>m\u00e9thodes<\/strong> principales :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\/* Cr\u00e9\u00e9 un buffer quelconque qui peut \u00eatre un vertex buffer,\r\n\u00a0\u00a0 un index buffer ou un shader-constant buffer *\/\r\nHRESULT CreateBuffer(\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_BUFFER_DESC *pDesc,\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_SUBRESOURCE_DATA *pInitialData,\r\n\u00a0 [out]\u00a0 ID3D11Buffer **ppBuffer\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 une &quot;depth stencil view&quot; pour acc\u00e9der aux\r\n\u00a0\u00a0 donn\u00e9es des ressources *\/\r\nHRESULT CreateDepthStencilView(\r\n\u00a0 [in]\u00a0\u00a0 ID3D11Resource *pResource,\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc,\r\n\u00a0 [out]\u00a0 ID3D11DepthStencilView **ppDepthStencilView\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 un objet &quot;input-layout&quot; qui servira \u00e0 l'\u00e9tape de rendu Input Assembler *\/\r\nHRESULT CreateInputLayout(\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_INPUT_ELEMENT_DESC *pInputElementDescs,\r\n\u00a0 [in]\u00a0\u00a0 UINT NumElements,\r\n\u00a0 [in]\u00a0\u00a0 const void *pShaderBytecodeWithInputSignature,\r\n\u00a0 [in]\u00a0\u00a0 SIZE_T BytecodeLength,\r\n\u00a0 [out]\u00a0 ID3D11InputLayout **ppInputLayout\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 un pixel shader *\/\r\nHRESULT CreatePixelShader(\r\n\u00a0 [in]\u00a0\u00a0 const void *pShaderBytecode,\r\n\u00a0 [in]\u00a0\u00a0 SIZE_T BytecodeLength,\r\n\u00a0 [in]\u00a0\u00a0 ID3D11ClassLinkage *pClassLinkage,\r\n\u00a0 [out]\u00a0 ID3D11PixelShader **ppPixelShader\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 un vertex shader *\/\r\nHRESULT CreateVertexShader(\r\n\u00a0 [in]\u00a0\u00a0 const void *pShaderBytecode,\r\n\u00a0 [in]\u00a0\u00a0 SIZE_T BytecodeLength,\r\n\u00a0 [in]\u00a0\u00a0 ID3D11ClassLinkage *pClassLinkage,\r\n\u00a0 [out]\u00a0 ID3D11VertexShader **ppVertexShader\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 les donn\u00e9es descriptives sur comment doit r\u00e9agir l'\u00e9tape\r\n\u00a0\u00a0 de rendu Razterizer *\/\r\nHRESULT CreateRasterizerState(\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_RASTERIZER_DESC *pRasterizerDesc,\r\n\u00a0 [out]\u00a0 ID3D11RasterizerState **ppRasterizerState\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 une render-target *\/\r\nHRESULT CreateRenderTargetView(\r\n\u00a0 [in]\u00a0\u00a0 ID3D11Resource *pResource,\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_RENDER_TARGET_VIEW_DESC *pDesc,\r\n\u00a0 [out]\u00a0 ID3D11RenderTargetView **ppRTView\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 un \u00e9tat depth-stencil\u00a0 *\/\r\nHRESULT CreateDepthStencilState(\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_DEPTH_STENCIL_DESC *pDepthStencilDesc,\r\n\u00a0 [out]\u00a0 ID3D11DepthStencilState **ppDepthStencilState\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 une ressource shader *\/\r\nHRESULT CreateShaderResourceView(\r\n\u00a0 [in]\u00a0\u00a0 ID3D11Resource *pResource,\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_SHADER_RESOURCE_VIEW_DESC *pDesc,\r\n\u00a0 [out]\u00a0 ID3D11ShaderResourceView **ppSRView\r\n);\r\n\r\n\/* Cr\u00e9\u00e9 une texture 2D *\/\r\nHRESULT CreateTexture2D(\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_TEXTURE2D_DESC *pDesc,\r\n\u00a0 [in]\u00a0\u00a0 const D3D11_SUBRESOURCE_DATA *pInitialData,\r\n\u00a0 [out]\u00a0 ID3D11Texture2D **ppTexture2D\r\n);\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><em>ID3D11DeviceContext<\/em> : une interface qui repr\u00e9sente un contexte d&rsquo;affichage (<em>device context<\/em>) g\u00e9n\u00e9rant des commandes de rendu.<\/p>\n<p>Voici ses <strong>m\u00e9thodes<\/strong> principales :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n\r\n\/* Marque le d\u00e9but d'une s\u00e9rie de commandes graphiques *\/\r\nvoid Begin(\r\n\u00a0\u00a0\u00a0 ID3D11Asynchronous *pAsync\r\n);\r\n\r\n\/* Efface le depth stencil *\/\r\nvoid ClearDepthStencilView(\r\n\u00a0 [in]\u00a0 ID3D11DepthStencilView *pDepthStencilView,\r\n\u00a0 [in]\u00a0 UINT ClearFlags,\r\n\u00a0 [in]\u00a0 FLOAT Depth,\r\n\u00a0 [in]\u00a0 UINT8 Stencil\r\n);\r\n\r\n\/* Reinitialise tous les \u00e9lements de la render target \u00e0 1 *\/\r\nvoid ClearRenderTargetView(\r\n\u00a0 [in]\u00a0 ID3D11RenderTargetView *pRenderTargetView,\r\n\u00a0 [in]\u00a0 const FLOAT ColorRGBA\r\n);\r\n\r\n\/* Affiche des primitives non index\u00e9es *\/\r\nvoid Draw(\r\n\u00a0 [in]\u00a0 UINT VertexCount,\r\n\u00a0 [in]\u00a0 UINT StartVertexLocation\r\n);\r\n\r\n\/* Affiche des primitives index\u00e9es *\/\r\nvoid DrawIndexed(\r\n\u00a0 [in]\u00a0 UINT IndexCount,\r\n\u00a0 [in]\u00a0 UINT StartIndexLocation,\r\n\u00a0 [in]\u00a0 INT BaseVertexLocation\r\n);\r\n\r\n\/* Relie un index buffer \u00e0 l'\u00e9tape de rendu Input Assembler *\/\r\nvoid IASetIndexBuffer(\r\n\u00a0 [in]\u00a0 ID3D11Buffer *pIndexBuffer,\r\n\u00a0 [in]\u00a0 DXGI_FORMAT Format,\r\n\u00a0 [in]\u00a0 UINT Offset\r\n);\r\n\r\n\/* Relie un Vertex Input Layout \u00e0 l'\u00e9tape de rendu Input Assembler *\/\r\nvoid IASetInputLayout(\r\n\u00a0 [in]\u00a0 ID3D11InputLayout *pInputLayout\r\n);\r\n\r\n\/* Relie le type de primitive \u00e0 l'\u00e9tape de rendu Input Assembler *\/\r\nvoid IASetPrimitiveTopology(\r\n\u00a0 [in]\u00a0 D3D11_PRIMITIVE_TOPOLOGY Topology\r\n);\r\n\r\n\/* Obtient un pointeur sur la ressource dans la m\u00e9moire du GPU,\r\n\u00a0\u00a0 ceci empeche la CG d'acc\u00e9der \u00e0 la ressource *\/\r\nHRESULT Map(\r\n\u00a0\u00a0\u00a0 ID3D11Resource *pResource,\r\n\u00a0\u00a0\u00a0 UINT Subresource,\r\n\u00a0\u00a0\u00a0 D3D11_MAP MapType,\r\n\u00a0\u00a0\u00a0 UINT MapFlags,\r\n\u00a0\u00a0\u00a0 D3D11_MAPPED_SUBRESOURCE *pMappedResource\r\n);\r\n\r\n\/* Invalide le pointeur de la ressource dans la m\u00e9moire du GPU,\r\n\u00a0\u00a0 redonne l'acc\u00e8s \u00e0 la ressource par la CG *\/\r\nvoid Unmap(\r\n\u00a0\u00a0\u00a0 ID3D11Resource *pResource,\r\n\u00a0\u00a0\u00a0 UINT Subresource\r\n);\r\n\r\n\/* Configure l'\u00e9tat du depth-stencil \u00e0 l'\u00e9tape de rendu Output Merger*\/\r\nvoid OMSetDepthStencilState(\r\n\u00a0 [in]\u00a0 ID3D11DepthStencilState *pDepthStencilState,\r\n\u00a0 [in]\u00a0 UINT StencilRef\r\n);\r\n\r\n\/* Relie une ou plusieurs render target automatiquement et\r\n\u00a0\u00a0 en m\u00eame temps le buffer depth-stencil \u00e0 l'\u00e9tape de rendu Output Merger *\/\r\nvoid OMSetRenderTargets(\r\n\u00a0 [in]\u00a0 UINT NumViews,\r\n\u00a0 [in]\u00a0 ID3D11RenderTargetView *const **ppRenderTargetViews,\r\n\u00a0 [in]\u00a0 ID3D11DepthStencilView *pDepthStencilView\r\n);\r\n\r\n\/* Configure l'\u00e9tape de rendu Rasterizer *\/\r\nvoid RSSetState(\r\n\u00a0 [in]\u00a0 ID3D11RasterizerState *pRasterizerState\r\n);\r\n\r\n\/* Relie un tablea de viewport \u00e0 l'\u00e9tape de rendu Rasterizer *\/\r\nvoid RSSetViewports(\r\n\u00a0 [in]\u00a0 UINT NumViewports,\r\n\u00a0 [in]\u00a0 const D3D11_VIEWPORT *pViewports\r\n);\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>ID3D11RenderTargetView : une interface qui repr\u00e9sente une render-target (voir lexique) qui peut \u00eatre acc\u00e9d\u00e9e lors du rendu.<\/p>\n<p>Elle poss\u00e8de la m\u00e9thode principale :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nGetDesc(D3D11_RENDER_TARGET_VIEW_DESC *pDesc)\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>ID3D11Texture2D : une interface qui repr\u00e9sente une texture constitu\u00e9e de donn\u00e9es texel qui<br \/>\nsont stock\u00e9es dans la m\u00e9moire.<\/p>\n<p>Elle poss\u00e8de la m\u00e9thode principale :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nGetDesc(D3D11_TEXTURE2D_DESC *pDesc)\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>ID3D11DepthStencilState : une interface qui repr\u00e9sente l\u2019\u00e9tat du depth-stencil pour que celui-ci<br \/>\nop\u00e8re des tests \u00e0 l\u2019\u00e9tape output-merger.<\/p>\n<p>Elle poss\u00e8de la m\u00e9thode principale :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nGetDesc(D3D11_DEPTH_STENCIL_DESC *pDesc)\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>ID3D11DepthStencilView : une interface qui peut acc\u00e9der \u00e0 une texture param\u00e9tr\u00e9e durant le test du depth-stencil.<\/p>\n<p>Elle poss\u00e8de la m\u00e9thode principale :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nGetDesc(D3D11_DEPTH_STENCIL_VIEW_DESC *pDesc)\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Cette structure nomm\u00e9e <em>D3D11_DEPTH_STENCIL_VIEW_DESC <\/em>est d\u00e9crite ci-dessous :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nstruct D3D11_DEPTH_STENCIL_VIEW_DESC {\r\n\u00a0 DXGI_FORMAT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Format;\r\n\u00a0 D3D11_DSV_DIMENSION ViewDimension;\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Flags;\r\n\u00a0 union {\r\n\u00a0\u00a0\u00a0 D3D11_TEX1D_DSV\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Texture1D;\r\n\u00a0\u00a0\u00a0 D3D11_TEX1D_ARRAY_DSV\u00a0\u00a0 Texture1DArray;\r\n\u00a0\u00a0\u00a0 D3D11_TEX2D_DSV\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Texture2D;\r\n\u00a0\u00a0\u00a0 D3D11_TEX2D_ARRAY_DSV\u00a0\u00a0 Texture2DArray;\r\n\u00a0\u00a0\u00a0 D3D11_TEX2DMS_DSV\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Texture2DMS;\r\n\u00a0\u00a0\u00a0 D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray;\r\n\u00a0 } ;\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><em>ID3D11RasterizerState<\/em> : une interface qui permet de configurer l&rsquo;\u00e9tat du Rasterzizer pour l&rsquo;\u00e9tape de rendu Rasterzizer.<\/p>\n<p>Elle poss\u00e8de la m\u00e9thode principale GetDesc(D3D11_RASTERIZER_DESC *pDesc).<br \/>\nCette structure nomm\u00e9e D3D11_RASTERIZER_DESC est d\u00e9crite ci-dessous :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nstruct D3D11_RASTERIZER_DESC {\r\n\u00a0 D3D11_FILL_MODE FillMode;\r\n\u00a0 D3D11_CULL_MODE CullMode;\r\n\u00a0 BOOL\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FrontCounterClockwise;\r\n\u00a0 INT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 DepthBias;\r\n\u00a0 FLOAT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 DepthBiasClamp;\r\n\u00a0 FLOAT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SlopeScaledDepthBias;\r\n\u00a0 BOOL\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 DepthClipEnable;\r\n\u00a0 BOOL\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ScissorEnable;\r\n\u00a0 BOOL\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 MultisampleEnable;\r\n\u00a0 BOOL\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 AntialiasedLineEnable;\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><em><strong>Objets de description de donn\u00e9es :<\/strong> <\/em><\/p>\n<p>Une structure nomm\u00e9e DXGI_SWAP_CHAIN_DESC est d\u00e9crite ci-dessous :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\ntypedef struct DXGI_SWAP_CHAIN_DESC {\r\n\u00a0 DXGI_MODE_DESC\u00a0\u00a0 BufferDesc; \/\/ D\u00e9crit le mode d'affiche du backbuffer\r\n\u00a0 DXGI_SAMPLE_DESC SampleDesc; \/\/ Sp\u00e9cifie le super-\u00e9chantillonnage\r\n\u00a0 DXGI_USAGE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferUsage; \/\/ D\u00e9crit le mode d'utilisation du backbuffer\r\n                                \/\/ par le CPU\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BufferCount; \/\/ Sp\u00e9cifie le nombre de surface de tampon\r\n\u00a0 HWND\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 OutputWindow; \/\/ Sp\u00e9cifie l'handle de la fen\u00eatre\r\n                                 \/\/ Windows \u00e0 utiliser\r\n\u00a0 BOOL\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Windowed;     \/\/ Mode fen\u00eatr\u00e9 ou non\r\n\u00a0 DXGI_SWAP_EFFECT SwapEffect;   \/\/ Sp\u00e9cifie la fa\u00e7on dont le contenu est affich\u00e9\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Flags;      \r\n} DXGI_SWAP_CHAIN_DESC;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Une structure nomm\u00e9e D3D11_TEXTURE2D_DESC est d\u00e9crite ci-dessous :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\ntypedef struct D3D11_TEXTURE2D_DESC {\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Width;\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Height;\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 MipLevels;\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ArraySize;\r\n\u00a0 DXGI_FORMAT\u00a0\u00a0\u00a0\u00a0\u00a0 Format;\r\n\u00a0 DXGI_SAMPLE_DESC SampleDesc;\r\n\u00a0 D3D11_USAGE\u00a0\u00a0\u00a0\u00a0\u00a0 Usage;\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BindFlags;\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 CPUAccessFlags;\r\n\u00a0 UINT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 MiscFlags;\r\n} D3D11_TEXTURE2D_DESC\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Une structure nomm\u00e9e D3D11_VIEWPORT est d\u00e9crite ci-dessous :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\ntypedef struct D3D11_VIEWPORT {\r\n\u00a0 FLOAT TopLeftX;\r\n\u00a0 FLOAT TopLeftY;\r\n\u00a0 FLOAT Width;\r\n\u00a0 FLOAT Height;\r\n\u00a0 FLOAT MinDepth;\r\n\u00a0 FLOAT MaxDepth;\r\n} D3D11_VIEWPORT;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9sum\u00e9 :<\/strong><\/p>\n<p>L&rsquo;initialisation de DirectX 11 est assez d\u00e9licate \u00e0 mettre en \u0153uvre car elle n\u00e9cessite la manipulation de <strong>nombreux d&rsquo;objets et interfaces associ\u00e9s.<\/strong><\/p>\n<p><strong>R\u00e9f\u00e9rences :<\/strong><\/p>\n<p>&#8211; Documentation &#8211; DirectX SDK &#8211; June 2010<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Il est n\u00e9cessaire de manipuler une bonne dizaine d&rsquo;objets ou d&rsquo;interfaces pour initialiser DirectX 11 avant de commencer tout affichage 3D. Pr\u00e9requis : &#8211; Avoir d\u00e9j\u00e0 lu le code pour initialiser DirectX 10 ou 11 Explications : Les-voici \u00e9num\u00e9r\u00e9s ci-dessous. &nbsp; &nbsp; Afficher du rendu 3D : IDXGISwapChain : interface qui stocke une [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/3792"}],"collection":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3792"}],"version-history":[{"count":108,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/3792\/revisions"}],"predecessor-version":[{"id":5265,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/3792\/revisions\/5265"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}