{"id":74,"date":"2009-02-12T01:00:48","date_gmt":"2009-02-12T00:00:48","guid":{"rendered":"http:\/\/netrix.org.pl\/index.php\/2009\/02\/12\/interfejs-imesh-klasa-mesh-i-loadery\/"},"modified":"2009-12-11T23:27:40","modified_gmt":"2009-12-11T22:27:40","slug":"interfejs-imesh-klasa-mesh-i-loadery","status":"publish","type":"post","link":"https:\/\/netrix.org.pl\/index.php\/2009\/02\/12\/interfejs-imesh-klasa-mesh-i-loadery\/","title":{"rendered":"Interfejs IMesh, klasa Mesh i loadery."},"content":{"rendered":"<p>Nawi\u0105zuj\u0105c do poprzedniej notki chc\u0119 tylko zamie\u015bci\u0107 jak wygl\u0105daj\u0105 klasy, kt\u00f3re napisa\u0142em i czemu s\u0105 takie fajne:<\/p>\n<pre lang=\"cpp\">\r\n\/\/ Interfejs\r\nclass IMesh\r\n{\r\npublic:\r\n\t\/*\r\n\t...\r\n\t*\/\r\n\t\/\/ Funkcja aktualizuj\u0105ca mesha\r\n\tvirtual void SetMesh(LPD3DXMESH mesh) = 0;\r\n\t\/\/ Funkcja dodaj\u0105ca materia\u0142 do wektora\r\n\tvirtual void AddMaterial(const Material&amp; mat) = 0;\r\n\t\/\/ Funkcja zwraca materia\u0142 o podanym indeksie\r\n\tvirtual Material GetMaterial(Dword index) = 0;\r\n\t\/*\r\n\t...\r\n\t*\/\r\n};\r\n\r\n\/\/ G\u0142\u00f3wna klasa Mesh\r\nclass Mesh : public IMesh\r\n{\r\npublic:\r\n\t\/\/ Konstruktor\r\n\tMesh();\r\n\t\/\/ Destruktor\r\n\t~Mesh();\r\n\r\npublic:\r\n\t\/* Funkcje u\u017cywane do rysowania modelu\r\n\t...\r\n\t*\/\r\n\r\nprotected:\r\n\t\/*\r\n\t...\r\n\t*\/\r\n\t\/\/ Funkcja aktualizuj\u0105ca mesha\r\n\tvirtual void SetMesh(LPD3DXMESH mesh) = 0;\r\n\t\/\/ Funkcja dodaj\u0105ca materia\u0142 do wektora\r\n\tvirtual void AddMaterial(const Material&amp; mat) = 0;\r\n\t\/\/ Funkcja zwraca materia\u0142 o podanym indeksie\r\n\tvirtual Material GetMaterial(Dword index) = 0;\r\n\t\/*\r\n\t...\r\n\t*\/\r\n};\r\n\r\n\/\/ Przyk\u0142ad loadera\r\nclass X_file\r\n{\r\npublic:\r\n\t\/\/ Konstruktor\r\n\tX_file(IMesh* mesh) { m_mesh = mesh; }\r\n\t\/\/ Funkcja \u0142aduj\u0105ca\r\n\tRESULT LoadMesh(String filename)\r\n\t{\r\n\t\tLPD3DXMESH mesh;\r\n\t\t\/*\r\n\t\t... cuda-niewidy...\r\n\t\t*\/\r\n\t\tm_mesh->AddMesh(mesh); \/\/ Wywo\u0142anie funkcji interfejsu\r\n\t}\r\n\r\nprivate:\r\n\t\/\/ Obiekt na kt\u00f3rym dzia\u0142am\r\n\tIMesh* m_mesh;\r\n};<\/pre>\n<p>Nie lubi\u0119 si\u0119 rozpisywa\u0107. Jak mo\u017cna zauwa\u017cy\u0107 dzi\u0119ki interfejsowi IMesh mo\u017cna za\u0142adowa\u0107 dowolny model do klasy Mesh, poniewa\u017c s\u0105 publiczne wszystkie funkcje umo\u017cliwiaj\u0105ce to zadanie, natomiast klasa Mesh posiada publiczne funkcje s\u0142u\u017c\u0105ce tylko i wy\u0142\u0105cznie do rysowania modelu. Dzi\u0119ki takiemu rozwi\u0105zaniu kod jest przejrzysty.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nawi\u0105zuj\u0105c do poprzedniej notki chc\u0119 tylko zamie\u015bci\u0107 jak wygl\u0105daj\u0105 klasy, kt\u00f3re napisa\u0142em i czemu s\u0105 takie fajne: \/\/ Interfejs class IMesh { public: \/* &#8230; *\/ \/\/ Funkcja aktualizuj\u0105ca mesha virtual void SetMesh(LPD3DXMESH mesh) = 0; \/\/ Funkcja dodaj\u0105ca materia\u0142 do wektora virtual void AddMaterial(const Material&amp; mat) = 0; \/\/ Funkcja zwraca materia\u0142 o podanym [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[179,10,87,180],"_links":{"self":[{"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/posts\/74"}],"collection":[{"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/comments?post=74"}],"version-history":[{"count":1,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/posts\/74\/revisions"}],"predecessor-version":[{"id":352,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/posts\/74\/revisions\/352"}],"wp:attachment":[{"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/media?parent=74"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/categories?post=74"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netrix.org.pl\/index.php\/wp-json\/wp\/v2\/tags?post=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}