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 |
tbResult tbFont::Exit() { // Textur aus dem Effekt nehmen if(m_pEffect) m_pEffect->GetEffect()->SetTexture("Texture", NULL); //diese zeile // Textur und Effekt freigeben TB_SAFE_RELEASE(m_pTexture); TB_SAFE_DELETE(m_pEffect); // Alles zurücksetzen ZeroMemory(this, sizeof(tbFont)); return TB_OK; } |
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 |
// Initialisierung aus virtuellen Dateien tbResult tbFont::Init(tbVFile* pTGAFile, tbVFile* pTBFFile) { HRESULT hResult; // Die Klasseninstanz zurücksetzen. // Damit wird ermöglicht, dass der Init-Aufruf mehrere Male mit // derselben Instanz funktioniert. Exit(); // Parameter prüfen und sicherstellen, dass tbDirect3D initialisiert wurde if(!pTGAFile) TB_ERROR_NULL_POINTER("pTGAFile", TB_ERROR); if(!pTBFFile) TB_ERROR_NULL_POINTER("pTBFFile", TB_ERROR); if(!tbDirect3D::IsInitialized()) TB_ERROR("Es muss zuerst eine tbDirect3D-Klasseninstanz erstellt werden!", TB_ERROR); // Textur laden if(FAILED(hResult = D3DXCreateTextureFromFileInMemoryEx(tbDirect3D::Instance().GetDevice(), (BYTE*)(pTGAFile->GetBuffer()) + pTGAFile->GetCursor(), pTGAFile->GetSize() - pTGAFile->GetCursor(), D3DX_DEFAULT, D3DX_DEFAULT, 1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &m_pTexture))) { // Fehler! TB_ERROR_DIRECTX("D3DXCreateTextureFromFileInMemoryEx", hResult, TB_ERROR); } // Informationen laden if(pTBFFile->Read(sizeof(tbFontInfo), &m_FontInfo)) { // Fehler! TB_ERROR("Fehler beim Lesen der Schriftinformationen!", TB_ERROR); } // Effekt aus String erstellen m_pEffect = new tbEffect; if(!m_pEffect) TB_ERROR_OUT_OF_MEMORY(TB_ERROR); if(m_pEffect->Init("TEXTURE Texture;\n" "\n" "TECHNIQUE T1\n" "{\n" " PASS P1\n" " {\n" " Texture[0] = <Texture>;\n" " ZEnable = False;\n" " ZWriteEnable = False;\n" " ColorOp[0] = Modulate;\n" " ColorArg1[0] = Texture;\n" " ColorArg2[0] = Current;\n" " ColorOp[1] = Disable;\n" " AlphaOp[0] = Modulate;\n" " AlphaArg1[0] = Texture;\n" " AlphaArg2[0] = Current;\n" " AlphaOp[1] = Disable;\n" " AlphaBlendEnable = True;\n" " SrcBlend = SrcAlpha;\n" " DestBlend = InvSrcAlpha;\n" " }\n" "}\n", -1)) { // Fehler! TB_ERROR("Fehler beim Erstellen des Effekts!", TB_ERROR); } // Textur setzen m_pEffect->GetEffect()->SetTexture("Texture", m_pTexture); return TB_OK; } |
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 |
// Erstellen aus einem String tbResult tbEffect::Init(char* pcCode, int iSize) { HRESULT hResult; // Die Klasseninstanz zurücksetzen. // Damit wird ermöglicht, dass der Init-Aufruf mehrere Male mit // derselben Instanz funktioniert. Exit(); // Parameter prüfen und sicherstellen, dass Direct3D initialisiert wurde if(!pcCode) TB_ERROR_NULL_POINTER("pcCode", TB_ERROR); if(iSize == 0 || iSize < -1) TB_ERROR_INVALID_VALUE("iSize", TB_ERROR); if(!tbDirect3D::IsInitialized()) TB_ERROR("Direct3D wurde noch nicht initialisiert!", TB_ERROR); // Länge anpassen if(iSize == -1) iSize = strlen(pcCode); // Jetzt den Effekt erstellen if(FAILED(hResult = D3DXCreateEffect(tbDirect3D::Instance().GetDevice(), pcCode, iSize, NULL, NULL, 0, tb_g_pEffectPool, &m_pEffect, NULL))) { // Fehler! TB_ERROR_DIRECTX("D3DXCreateEffect", hResult, TB_ERROR); } // Effektbeschreibung abfragen m_pEffect->GetDesc(&m_Desc); // Die erste gültige Technik setzen SetTechnique(-1); return TB_OK; } |
Zitat von »"herzog"«
C-/C++-Quelltext
1 2 3 4 5 6 // Erstellen aus einem String tbResult tbEffect::Init(char* pcCode, int iSize) { ... }
C-/C++-Quelltext |
|
1 2 |
tbResult tbEffect::Init(const char* pcCode, int iSize) |
Werbeanzeige