Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#ifndef _TEXTUREMANAGER_ #define _TEXTUREMANAGER_ #include "MMBEG.h" class MMBEG_API CTextureManager { public: CTextureManager(); virtual ~CTextureManager(); // Initialisierung des Texturemanagers BOOL Init(LPDIRECT3DDEVICE9 lpD3DDevice); // mit dieser Methode werden Texturen hinzugefügt void AddTexture(LPCSTR lpFileName, int r, int g, int b); void AddTexture(LPCSTR lpFileName); // diese Methode gibt einen Zeiger auf die Textur lpTextureName zurück STexture GetTexture(LPCSTR lpTextureName); protected: // Zeiger auf das Direct3D-Device LPDIRECT3DDEVICE9 m_lpD3DDevice; }; #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
#include "MMBEG.h" // diese Map speichert den Namen und den Zeiger auf die Textur CTextureMap TextureMap; // Konstruktor - Initialisierungen CTextureManager::CTextureManager() { m_lpD3DDevice = NULL; } // Destruktor - Freigabe der Texturen aus der TextMap CTextureManager::~CTextureManager() { TextureMap.DeleteList(); } // Initialisierung des Textmanagers BOOL CTextureManager::Init(LPDIRECT3DDEVICE9 lpD3DDevice) { m_lpD3DDevice = lpD3DDevice; return TRUE; } // Textur suchen und ggf. zurückgeben STexture CTextureManager::GetTexture(LPCSTR lpTextureName) { // die Textur zurückgeben return TextureMap.GetTexture(lpTextureName); } // Textur hinzufügen void CTextureManager::AddTexture(LPCSTR lpFileName, int r, int g, int b) { // testen, ob die Textur bereits vorhanden ist LPDIRECT3DTEXTURE9 lpTexture; STexture Texture; // wenn sie nicht vorhanden ist, wird sie wie // gewohnt erzeugt if(GetTexture(lpFileName).m_Texture == NULL) { D3DXIMAGE_INFO ImageInfo; D3DXGetImageInfoFromFile(lpFileName,&ImageInfo); D3DXCreateTextureFromFileEx(m_lpD3DDevice, lpFileName, ImageInfo.Width, ImageInfo.Height, 1,0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, D3DCOLOR_XRGB(r, g, b),0,0, &lpTexture); Texture.m_TextureName = lpFileName; Texture.m_Texture = lpTexture; Texture.m_Width = ImageInfo.Width; Texture.m_Height = ImageInfo.Height; // und in die Map unter ihrem Namen eingefügt TextureMap.NewTexture(Texture); } } // Textur hinzufügen void CTextureManager::AddTexture(LPCSTR lpFileName) { // testen, ob die Textur bereits vorhanden ist LPDIRECT3DTEXTURE9 lpTexture; STexture Texture; // wenn sie nicht vorhanden ist, wird sie wie // gewohnt erzeugt if(GetTexture(lpFileName).m_Texture == NULL) { D3DXIMAGE_INFO ImageInfo; D3DXGetImageInfoFromFile(lpFileName,&ImageInfo); D3DXCreateTextureFromFileEx(m_lpD3DDevice, lpFileName, ImageInfo.Width, ImageInfo.Height, 1,0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, NULL,0,0, &lpTexture); Texture.m_TextureName = lpFileName; Texture.m_Texture = lpTexture; Texture.m_Width = ImageInfo.Width; Texture.m_Height = ImageInfo.Height; // und in die Map unter ihrem Namen eingefügt TextureMap.NewTexture(Texture); } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#ifndef _TEXTUREMAP_ #define _TEXTUREMAP_ #include "MMBEG.h" struct MMBEG_API STexture { LPCSTR m_TextureName; LPDIRECT3DTEXTURE9 m_Texture; // Breite und Höhe int m_Width; int m_Height; }; class MMBEG_API CTextureMap { public: BOOL NewTexture(STexture NewText); BOOL DeleteList(void); CTextureMap* GetByName(LPCSTR Name); BOOL SetData(LPCSTR Name, LPDIRECT3DTEXTURE9 Texture, int Width, int Height); STexture GetTexture(LPCSTR Name); CTextureMap* GetNachfolger() const {return m_Nachfolger;} CTextureMap* GetVorgaenger() const {return m_Vorgaenger;} void SetNachfolger(CTextureMap* Texture) {m_Nachfolger = Texture;} void SetVorgaenger(CTextureMap* Texture) {m_Vorgaenger = Texture;} LPCSTR m_TextureName; STexture m_STexture; private: CTextureMap* Last(void); CTextureMap* m_Vorgaenger; CTextureMap* m_Nachfolger; }; #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
#include "MMBEG.h" CTextureMap TextureMapHead; BOOL CTextureMap::NewTexture(STexture Texture) { CTextureMap* Segment = new CTextureMap; Segment->SetNachfolger(NULL); Segment->SetVorgaenger(Last()); Last()->SetNachfolger(Segment); Segment->m_STexture.m_TextureName = Texture.m_TextureName; Segment->m_STexture.m_Texture = Texture.m_Texture; Segment->m_STexture.m_Width = Texture.m_Width; Segment->m_STexture.m_Height = Texture.m_Height; return TRUE; } CTextureMap* CTextureMap::GetByName(LPCSTR Name) { CTextureMap* p = &TextureMapHead; while (p != Last()) { p = p->GetNachfolger(); if (p->m_STexture.m_TextureName == Name) { return p; } } return NULL; } BOOL CTextureMap::SetData(LPCSTR Name,LPDIRECT3DTEXTURE9 Texture, int Width, int Height) { GetByName(Name)->m_STexture.m_TextureName = Name; GetByName(Name)->m_STexture.m_Texture = Texture; GetByName(Name)->m_STexture.m_Width = Width; GetByName(Name)->m_STexture.m_Height = Height; return TRUE; } BOOL CTextureMap::DeleteList(void) { while(NULL != TextureMapHead.GetNachfolger()) { CTextureMap* p = Last(); p->GetVorgaenger()->SetNachfolger(NULL); p->SetNachfolger(NULL); p->SetVorgaenger(NULL); // m_Texture freigeben p->m_STexture.m_Texture->Release(); delete p; p = NULL; } return TRUE; } STexture CTextureMap::GetTexture(LPCSTR Name) { CTextureMap* p = GetByName(Name); if (p == NULL) { STexture Texture; Texture.m_Texture = NULL; return Texture; } return p->m_STexture; } CTextureMap* CTextureMap::Last(void) { CTextureMap* p = &TextureMapHead; while(NULL != p->GetNachfolger()) { p=p->GetNachfolger(); } return p; } |
Anonymous
unregistriert
Anonymous
unregistriert
Zitat von »"nix da"«
Wollte ja was antworten, aber da Crossposting? nö
Anonymous
unregistriert
Anonymous
unregistriert
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
// Textur hinzufügen void CTextureManager::AddTexture(LPCSTR lpFileName) { // testen, ob die Textur bereits vorhanden ist LPDIRECT3DTEXTURE9 lpTexture; STexture Texture;// <- is hier der Fehler? // wenn sie nicht vorhanden ist, wird sie wie // gewohnt erzeugt if(GetTexture(lpFileName).m_Texture == NULL) { D3DXIMAGE_INFO ImageInfo; D3DXGetImageInfoFromFile(lpFileName,&ImageInfo); D3DXCreateTextureFromFileEx(m_lpD3DDevice, lpFileName, ImageInfo.Width, ImageInfo.Height, 1,0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, NULL,0,0, &lpTexture); Texture.m_TextureName = lpFileName; Texture.m_Texture = lpTexture; Texture.m_Width = ImageInfo.Width; Texture.m_Height = ImageInfo.Height; // und in die Map unter ihrem Namen eingefügt TextureMap.NewTexture(Texture); } } |
Zitat
(a+b)²=a²+b² YEAH!
Anonymous
unregistriert
Zitat von »"Devil"«
Zitat
(a+b)²=a²+b² YEAH!
:ohoh:
Dofter... über leg dir das nochmal...
(a+b)² = a² + 2ab + b²
(a-b)² = a² - 2ab + b²
(a-b)(a+b) = a² - b²
nur so als Tipp
Werbeanzeige