{"id":2710,"date":"2015-06-07T17:43:08","date_gmt":"2015-06-07T17:43:08","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=2710"},"modified":"2015-11-20T17:52:19","modified_gmt":"2015-11-20T17:52:19","slug":"un-cube-en-3d-tout-simple","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=2710","title":{"rendered":"Un cube tout simple en 3D"},"content":{"rendered":"<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/06\/cube.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-3917\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/06\/cube.png\" alt=\"cube\" width=\"520\" height=\"358\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/06\/cube.png 1214w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/06\/cube-300x207.png 300w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/06\/cube-1024x705.png 1024w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/06\/cube-624x430.png 624w\" sizes=\"(max-width: 520px) 100vw, 520px\" \/><\/a><\/p>\n<p><strong>Intro :<br \/>\n<\/strong><br \/>\nVoici l&rsquo;impl\u00e9mentation <strong>d&rsquo;un cube tout simple<\/strong> par la d\u00e9finition de ses vertices et indices.<\/p>\n<p>Il peut \u00eatre utilis\u00e9 pour faire des tests ou pour d\u00e9boguer vos jeux.<\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>Dans le fichier Cube.h :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#ifndef CUBE_MESH_H\r\n#define CUBE_MESH_H\r\n\u00a0\r\n#include &lt;d3d10.h&gt;\r\n#include &lt;d3dx10.h&gt;\r\n\r\n#include &quot;Defines.h&quot;\r\n#include &quot;D3D10Renderer.h&quot;\r\n\r\nclass Cube\r\n{\r\npublic:\r\n\u00a0\u00a0\u00a0 struct PTNVertex\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 D3DXVECTOR3 position;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 D3DXVECTOR2 texture;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 D3DXVECTOR3 normal;\r\n\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PTNVertex()\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PTNVertex(D3DXVECTOR3 p, D3DXVECTOR2 t, D3DXVECTOR3 n)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 position = p;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 texture = t;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 normal = n;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 };\r\n\u00a0\r\n\u00a0\u00a0\u00a0 Cube();\r\n\u00a0\u00a0\u00a0 virtual ~Cube();\r\n\u00a0\r\n\u00a0\u00a0\u00a0 bool Initialize();\r\n\u00a0\r\n\u00a0\u00a0\u00a0 void Render(float fTimeSinceLastFrame);\r\n\u00a0\r\nprivate:\r\n\u00a0\u00a0\u00a0 ID3DX10Mesh* m_pMesh;\r\n\u00a0\r\n\u00a0\u00a0\u00a0 D3DXMATRIX m_worldMatrix;\r\n\u00a0\u00a0\u00a0 D3DXMATRIX m_viewMatrix;\r\n\u00a0\u00a0\u00a0 D3DXMATRIX m_projMatrix;\r\n\r\n\u00a0\u00a0\u00a0 ID3D10EffectMatrixVariable* m_pWorldVariable;\r\n\u00a0\u00a0\u00a0 ID3D10EffectMatrixVariable* m_pViewVariable;\r\n\u00a0\u00a0 \u00a0ID3D10EffectMatrixVariable* m_pProjVariable;\r\n\r\n\u00a0\u00a0\u00a0 ID3D10EffectShaderResourceVariable* m_pDiffuseVariable;\r\n\u00a0\u00a0\u00a0 ID3D10ShaderResourceView* m_pDiffuseMap;\r\n\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 ID3D10Effect* m_pEffect;\r\n\u00a0\u00a0\u00a0 ID3D10EffectTechnique* m_pTechnique;\r\n\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 ID3D10InputLayout* m_pVertexLayout;\r\n};\r\n\u00a0\r\n#endif\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Dans le fichier Cube.cpp :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &quot;Cube.h&quot;\r\n\r\nCube::Cube() :\r\nm_pMesh(nullptr),\r\nm_pWorldVariable(nullptr),\r\nm_pDiffuseVariable(nullptr),\r\nm_pDiffuseMap(nullptr),\r\nm_pTechnique(nullptr),\r\nm_pEffect(nullptr),\r\nm_pVertexLayout(nullptr)\r\n{\r\n\u00a0\u00a0\u00a0 D3DXMatrixIdentity(&amp;m_worldMatrix);\r\n\r\n\u00a0\u00a0 \u00a0D3DXVECTOR3 Eye(0.0f, 5.0f, -6.0f);\r\n\u00a0\u00a0 \u00a0D3DXVECTOR3 At(0.0f, 0.0f, 0.0f);\r\n\u00a0\u00a0 \u00a0D3DXVECTOR3 Up(0.0f, 1.0f, 0.0f);\r\n\u00a0\r\n\u00a0\u00a0 \u00a0D3DXMatrixLookAtLH(&amp;m_viewMatrix, &amp;Eye, &amp;At, &amp;Up);\r\n\u00a0\r\n\u00a0\u00a0 \u00a0D3DXMatrixPerspectiveFovLH(&amp;m_projMatrix, D3DX_PI * 0.25f,\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0(float) D3D10_RENDERER-&gt;GetViewportWidth() \/ (float)D3D10_RENDERER-&gt;GetViewportHeight(),\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a00.1f, 100.0f);\r\n}\r\n\u00a0\r\nCube::~Cube()\r\n{\r\n\u00a0\u00a0\u00a0 SAFE_RELEASE(m_pMesh);\r\n}\r\n\u00a0\r\nbool Cube::Initialize()\r\n{\r\n\u00a0\u00a0\u00a0 PTNVertex v[24];\r\n\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 v[0] = PTNVertex( D3DXVECTOR3( -1.0f, 1.0f, -1.0f ), D3DXVECTOR2( 0.0f, 0.0f ), D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[1] = PTNVertex( D3DXVECTOR3( 1.0f, 1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 0.0f ), D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[2] = PTNVertex( D3DXVECTOR3( 1.0f, 1.0f, 1.0f ), D3DXVECTOR2( 1.0f, 1.0f ), D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[3] = PTNVertex( D3DXVECTOR3( -1.0f, 1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 1.0f ), D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) );\r\n\u00a0\r\n\u00a0\u00a0\u00a0 v[4] = PTNVertex( D3DXVECTOR3( -1.0f, -1.0f, -1.0f ), D3DXVECTOR2( 0.0f, 0.0f ), D3DXVECTOR3( 0.0f, -1.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[5] = PTNVertex( D3DXVECTOR3( 1.0f, -1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 0.0f ), D3DXVECTOR3( 0.0f, -1.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[6] = PTNVertex( D3DXVECTOR3( 1.0f, -1.0f, 1.0f ), D3DXVECTOR2( 1.0f, 1.0f ),\u00a0 D3DXVECTOR3( 0.0f, -1.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[7] = PTNVertex( D3DXVECTOR3( -1.0f, -1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 1.0f ),\u00a0 D3DXVECTOR3( 0.0f, -1.0f, 0.0f ));\r\n\u00a0\r\n\u00a0\u00a0\u00a0 v[8] = PTNVertex( D3DXVECTOR3( -1.0f, -1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 0.0f ),\u00a0 D3DXVECTOR3( -1.0f, 0.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[9] = PTNVertex( D3DXVECTOR3( -1.0f, -1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 0.0f ), D3DXVECTOR3( -1.0f, 0.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[10] = PTNVertex( D3DXVECTOR3( -1.0f, 1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 1.0f ),\u00a0 D3DXVECTOR3( -1.0f, 0.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[11] = PTNVertex( D3DXVECTOR3( -1.0f, 1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 1.0f ),\u00a0 D3DXVECTOR3( -1.0f, 0.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 v[12] = PTNVertex( D3DXVECTOR3( 1.0f, -1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 0.0f ), D3DXVECTOR3( 1.0f, 0.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[13] = PTNVertex( D3DXVECTOR3( 1.0f, -1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 0.0f ), D3DXVECTOR3( 1.0f, 0.0f, 0.0f) );\r\n\u00a0\u00a0\u00a0 v[14] = PTNVertex( D3DXVECTOR3( 1.0f, 1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 1.0f ), D3DXVECTOR3( 1.0f, 0.0f, 0.0f ) );\r\n\u00a0\u00a0\u00a0 v[15] = PTNVertex( D3DXVECTOR3( 1.0f, 1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 1.0f ),\u00a0\u00a0\u00a0 D3DXVECTOR3( 1.0f, 0.0f, 0.0f) );\r\n\u00a0\r\n\u00a0\u00a0\u00a0 v[16] = PTNVertex( D3DXVECTOR3( -1.0f, -1.0f, -1.0f ), D3DXVECTOR2( 0.0f, 0.0f ), D3DXVECTOR3( 0.0f, 0.0f, -1.0f) );\r\n\u00a0\u00a0\u00a0 v[17] = PTNVertex( D3DXVECTOR3( 1.0f, -1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 0.0f ),\u00a0 D3DXVECTOR3( 0.0f, 0.0f, -1.0f) );\r\n\u00a0\u00a0\u00a0 v[18] = PTNVertex( D3DXVECTOR3( 1.0f, 1.0f, -1.0f ), D3DXVECTOR2( 1.0f, 1.0f ),\u00a0 D3DXVECTOR3( 0.0f, 0.0f, -1.0f ) );\r\n\u00a0\u00a0\u00a0 v[19] = PTNVertex( D3DXVECTOR3( -1.0f, 1.0f, -1.0f ), D3DXVECTOR2( 0.0f, 1.0f ),\u00a0 D3DXVECTOR3( 0.0f, 0.0f, -1.0f ) );\r\n\u00a0\r\n\u00a0\u00a0\u00a0 v[20] = PTNVertex( D3DXVECTOR3( -1.0f, -1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 0.0f ), D3DXVECTOR3( 0.0f, 0.0f, 1.0f ) );\r\n\u00a0\u00a0\u00a0 v[21] = PTNVertex( D3DXVECTOR3( 1.0f, -1.0f, 1.0f ), D3DXVECTOR2( 1.0f, 0.0f ), D3DXVECTOR3( 0.0f, 0.0f, 1.0f ) );\r\n\u00a0\u00a0\u00a0 v[22] = PTNVertex( D3DXVECTOR3( 1.0f, 1.0f, 1.0f ), D3DXVECTOR2( 1.0f, 1.0f ), D3DXVECTOR3( 0.0f, 0.0f, 1.0f) );\r\n\u00a0\u00a0\u00a0 v[23] = PTNVertex( D3DXVECTOR3( -1.0f, 1.0f, 1.0f ), D3DXVECTOR2( 0.0f, 1.0f ), D3DXVECTOR3( 0.0f, 0.0f, 1.0f ) );\r\n\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 unsigned int i[36] = { 3,1,0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2,1,3,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 6,4,5,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 7,4,6,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 11,9,8,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10,9,11,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 14,12,13,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 15,12,14,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 19,17,16,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 18,17,19,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 22,20,21,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 23,20,22\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 };\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0 D3D10_INPUT_ELEMENT_DESC layout[] =\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 { &quot;POSITION&quot;, 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 },\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 { &quot;TEXCOORD&quot;, 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D10_INPUT_PER_VERTEX_DATA, 0 },\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 { &quot;NORMAL&quot;, 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 20, D3D10_INPUT_PER_VERTEX_DATA, 0 },\r\n\u00a0\u00a0\u00a0 };\r\n\r\n\u00a0\u00a0\u00a0 HRESULT hr;\r\n\u00a0\u00a0\u00a0 hr = D3DX10CreateMesh(D3D10_RENDERER-&gt;GetDevice(), layout,\u00a0 3, &quot;POSITION&quot;, 24, 36\/3, D3DX10_MESH_32_BIT, &amp;m_pMesh);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 hr = m_pMesh-&gt;SetVertexData(0, v);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (FAILED(hr))\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ShowMessageBoxDXError(hr);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 hr = m_pMesh-&gt;SetIndexData(i, 36);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (FAILED(hr))\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ShowMessageBoxDXError(hr);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 hr = m_pMesh-&gt;CommitToDevice();\r\n\u00a0\r\n\u00a0\u00a0\u00a0 if (FAILED(hr))\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ShowMessageBoxDXError(hr);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\r\n\u00a0\u00a0\u00a0 ID3D10Blob* pBlob = nullptr;\r\n\u00a0\r\n\u00a0\u00a0\u00a0 hr = D3DX10CreateEffectFromFile(L&quot;Cube.fx&quot;, nullptr, nullptr, &quot;fx_4_0&quot;,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 D3D10_SHADER_ENABLE_STRICTNESS | D3D10_SHADER_DEBUG, 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 D3D10_RENDERER-&gt;GetDevice(), nullptr, nullptr, &amp;m_pEffect, &amp;pBlob, nullptr);\r\n\u00a0\u00a0 \u00a0if (FAILED(hr))\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (pBlob)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\/\/ Affiche l'erreur de compilation du shader\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0MessageBoxA(nullptr, (PCSTR)pBlob-&gt;GetBufferPointer(), &quot;Erreur dans le fichier shader&quot;, MB_ICONHAND | MB_OK);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0else\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ShowMessageBoxDXError(hr);\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return false;\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_pTechnique = m_pEffect-&gt;GetTechniqueByName(&quot;Render&quot;);\r\n\u00a0\r\n\u00a0\u00a0\u00a0 m_pWorldVariable = m_pEffect-&gt;GetVariableByName(&quot;World&quot;)-&gt;AsMatrix();\r\n\u00a0\u00a0\u00a0 m_pViewVariable = m_pEffect-&gt;GetVariableByName(&quot;View&quot;)-&gt;AsMatrix();\r\n\u00a0\u00a0\u00a0 m_pProjVariable = m_pEffect-&gt;GetVariableByName(&quot;Projection&quot;)-&gt;AsMatrix();\r\n\u00a0\u00a0\u00a0 m_pDiffuseVariable = m_pEffect-&gt;GetVariableByName(&quot;txDiffuse&quot;)-&gt;AsShaderResource();\r\n\u00a0\r\n\u00a0\u00a0\u00a0 D3D10_PASS_DESC PassDesc;\r\n\u00a0\u00a0\u00a0 m_pTechnique-&gt;GetPassByIndex(0)-&gt;GetDesc(&amp;PassDesc);\r\n\u00a0\u00a0\u00a0 hr = D3D10_RENDERER-&gt;GetDevice()-&gt;CreateInputLayout(layout, 3, PassDesc.pIAInputSignature,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PassDesc.IAInputSignatureSize, &amp;m_pVertexLayout);\r\n\u00a0\u00a0\u00a0 if (FAILED(hr))\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ShowMessageBoxDXError(hr);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0 \/\/ On charge la texture\r\n\u00a0\u00a0\u00a0 hr = D3DX10CreateShaderResourceViewFromFile(D3D10_RENDERER-&gt;GetDevice(), L&quot;box.jpg&quot;, nullptr, nullptr, &amp;m_pDiffuseMap, nullptr);\r\n\r\n\u00a0\u00a0\u00a0 if (FAILED(hr))\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ShowMessageBoxDXError(hr);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return false;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 return true;\r\n}\r\n\u00a0\r\nvoid Cube::Render(float fTimeSinceLastFrame)\r\n{\r\n\u00a0\u00a0 \u00a0D3D10_RENDERER-&gt;GetDevice()-&gt;IASetInputLayout(m_pVertexLayout);\r\n\r\n\u00a0\u00a0 \u00a0\/\/ Pour faire tourner le cube autour de l'axe Y\r\n\u00a0\u00a0 \u00a0static float r = 0;\r\n\u00a0\u00a0 \u00a0D3DXMatrixRotationY(&amp;m_worldMatrix, r);\r\n\u00a0\u00a0 \u00a0r += fTimeSinceLastFrame * 0.6f;\r\n\r\n\u00a0\u00a0 \u00a0m_pWorldVariable-&gt;SetMatrix((float*)&amp;m_worldMatrix);\r\n\u00a0\u00a0 \u00a0m_pViewVariable-&gt;SetMatrix((float*)&amp;m_viewMatrix);\r\n\u00a0\u00a0 \u00a0m_pProjVariable-&gt;SetMatrix((float*)&amp;m_projMatrix);\r\n\u00a0\u00a0 \u00a0m_pDiffuseVariable-&gt;SetResource(m_pDiffuseMap);\r\n\r\n\u00a0\u00a0\u00a0 D3D10_TECHNIQUE_DESC techDesc;\r\n\u00a0\u00a0\u00a0 m_pTechnique-&gt;GetDesc(&amp;techDesc);\r\n\r\n\u00a0\u00a0\u00a0 for(uint32 p = 0; p &lt; techDesc.Passes; p++)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_pTechnique-&gt;GetPassByIndex(p)-&gt;Apply(0);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 m_pMesh-&gt;DrawSubset(0);\r\n\u00a0\u00a0\u00a0 }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9sum\u00e9 : <\/strong><\/p>\n<p>Nous avons impl\u00e9menter le code pour afficher un petit cube.<\/p>\n<p>Voici les fichiers sources : <a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/data\/Simple%20Cube.zip\">Simple Cube.zip<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Voici l&rsquo;impl\u00e9mentation d&rsquo;un cube tout simple par la d\u00e9finition de ses vertices et indices. Il peut \u00eatre utilis\u00e9 pour faire des tests ou pour d\u00e9boguer vos jeux. Explications : Dans le fichier Cube.h : &nbsp; Dans le fichier Cube.cpp : &nbsp; R\u00e9sum\u00e9 : Nous avons impl\u00e9menter le code pour afficher un petit cube. [&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\/2710"}],"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=2710"}],"version-history":[{"count":29,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/2710\/revisions"}],"predecessor-version":[{"id":3920,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/2710\/revisions\/3920"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2710"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2710"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}