{"id":3206,"date":"2015-07-13T09:52:19","date_gmt":"2015-07-13T09:52:19","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=3206"},"modified":"2015-11-24T17:40:46","modified_gmt":"2015-11-24T17:40:46","slug":"une-classe-shadermanager-pour-gerer-vos-fichier-shaders","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=3206","title":{"rendered":"Une classe ShaderManager pour g\u00e9rer vos fichier shaders"},"content":{"rendered":"<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/03\/AMD_6990.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-1364\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/03\/AMD_6990.jpg\" alt=\"AMD_6990\" width=\"346\" height=\"282\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/03\/AMD_6990.jpg 1024w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/03\/AMD_6990-300x244.jpg 300w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/03\/AMD_6990-624x508.jpg 624w\" sizes=\"(max-width: 346px) 100vw, 346px\" \/><\/a><\/p>\n<p><strong>Intro :<\/strong><\/p>\n<p><strong>Pr\u00e9requis :<\/strong><\/p>\n<p>&#8211; Savoir utiliser un peu DirectX 10<\/p>\n<p>&#8211; Savoir utiliser la classe Singleton. Voir cet article.<\/p>\n<p>&#8211; Savoir ce qu&rsquo;est un fichier shader.<\/p>\n<p>&#8211; Savoir utiliser la classe ShaderTechnique.<\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>Voici le fichier ShaderManager.h :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#ifndef SHADERS_MANAGER_H\r\n#define SHADERS_MANAGER_H \r\n\r\nclass ShaderManager : public Singleton&lt;ShaderManager&gt;\r\n{\r\npublic:\r\n\u00a0\u00a0 \u00a0 ShaderManager();\r\n\u00a0\u00a0 \u00a0 virtual ~ShaderManager();\r\n\r\n\u00a0\u00a0 \u00a0 void RegisterShader(ShaderTechnique* pShader, const std::string&amp; sName);\r\n\u00a0\u00a0 \u00a0 void UnRegisterShader(std::string sName);\r\n\r\n\u00a0\u00a0 \u00a0 ShaderTechnique* GetShader(std::string sName);\r\n\r\nprivate:\r\n\u00a0\u00a0 \u00a0std::map&lt;std::string, ShaderTechnique*&gt; m_shaders;\r\n};\r\n\r\n#endif\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Voici le fichier ShaderManager.cpp :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &quot;ShaderManager.h&quot;\r\n\r\ntemplate&lt;&gt; ShaderManager* Singleton&lt;ShaderManager&gt;::ms_instance = nullptr;\r\n\r\nShaderManager::ShaderManager()\r\n{\r\n}\r\n\r\nShaderManager::~ShaderManager()\r\n{\r\n}\r\n\r\nvoid ShaderManager::RegisterShader(ShaderTechnique* pShader, const std::string&amp; sName)\r\n{\r\n\u00a0\u00a0 \u00a0Assert(pShader);\r\n\r\n\u00a0\u00a0 \u00a0m_shaders[sName] = pShader;\r\n}\r\n\r\nvoid ShaderManager::UnRegisterShader(std::string sName)\r\n{\r\n\u00a0\u00a0 \u00a0Assert(m_shaders.count(sName) &gt; 0);\r\n\r\n\u00a0\u00a0 \u00a0delete m_shaders[sName];\r\n\r\n\u00a0\u00a0 \u00a0m_shaders.erase(sName);\r\n\r\n}\r\n\r\nShaderTechnique* ShaderManager::GetShader(std::string sName)\r\n{\r\n\u00a0\u00a0 \u00a0Assert(m_shaders.count(sName) &gt; 0);\r\n\r\n\u00a0\u00a0 \u00a0return m_shaders[sName];\r\n}\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9sum\u00e9 :<\/strong><\/p>\n<p>Voici une classe toute simple qui permettra de rassembler tous vos shaders encapsul\u00e9s dans une collection <em>std::map<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Pr\u00e9requis : &#8211; Savoir utiliser un peu DirectX 10 &#8211; Savoir utiliser la classe Singleton. Voir cet article. &#8211; Savoir ce qu&rsquo;est un fichier shader. &#8211; Savoir utiliser la classe ShaderTechnique. Explications : Voici le fichier ShaderManager.h : &nbsp; Voici le fichier ShaderManager.cpp : &nbsp; R\u00e9sum\u00e9 : Voici une classe toute simple qui [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[13],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/3206"}],"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=3206"}],"version-history":[{"count":10,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/3206\/revisions"}],"predecessor-version":[{"id":4963,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/3206\/revisions\/4963"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}