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
Alter Hase
Zitat von »"David_pb"«
Weiß ich, ist aber trotzdem kein Teil der STL!
Zitat
Debug Assertion Failed!
Program: D:\Eigene Dateien\Programmieren\C++\MeshConv\Debug\MeshConv.exe
File: f:\rtm\vctools\vc7libs\ship\atlmfc\include\cstringt.h
Expression: strFormat.LoadStringA(nFormatID)
For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
(Press retry to debug application)
Quellcode |
|
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 |
void CMeshConvDlg::OnUebern() { //Veränderungen Wirksam machen UpdateData(TRUE); WORD i = m_SubSetChoice.GetCurSel(); //Materialien Übertragen d3d->SubSet_I[i].material.Ambient.a = (FLOAT)m_ambient_a / 255.0f; d3d->SubSet_I[i].material.Ambient.r = (FLOAT)m_ambient_r / 255.0f; d3d->SubSet_I[i].material.Ambient.g = (FLOAT)m_ambient_g / 255.0f; d3d->SubSet_I[i].material.Ambient.b = (FLOAT)m_ambient_b / 255.0f; d3d->SubSet_I[i].material.Diffuse.a = (FLOAT)m_diffuse_a / 255.0f; d3d->SubSet_I[i].material.Diffuse.r = (FLOAT)m_diffuse_r / 255.0f; d3d->SubSet_I[i].material.Diffuse.g = (FLOAT)m_diffuse_g / 255.0f; d3d->SubSet_I[i].material.Diffuse.b = (FLOAT)m_diffuse_b / 255.0f; d3d->SubSet_I[i].material.Specular.a = (FLOAT)m_specular_a / 255.0f; d3d->SubSet_I[i].material.Specular.r = (FLOAT)m_specular_r / 255.0f; d3d->SubSet_I[i].material.Specular.g = (FLOAT)m_specular_g / 255.0f; d3d->SubSet_I[i].material.Specular.b = (FLOAT)m_specular_b / 255.0f; d3d->SubSet_I[i].material.Emissive.a = (FLOAT)m_emissive_a / 255.0f; d3d->SubSet_I[i].material.Emissive.r = (FLOAT)m_emissive_r / 255.0f; d3d->SubSet_I[i].material.Emissive.g = (FLOAT)m_emissive_g / 255.0f; d3d->SubSet_I[i].material.Emissive.b = (FLOAT)m_emissive_b / 255.0f; //Textur updaten if( d3d->SubSet_I[i].file != m_Texture) { //m_Texture is die Member Variable von Typ CString if(!d3d->ChangeTexture(i,(LPCSTR)m_Texture)) { AfxMessageBox("Konnte Textur nicht umstellen!"); } } } |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
BOOL direct3d::ChangeTexture(WORD Subset,const char* DateiName) { //Wenn noch Textur da ist, freigeben, hab ich ma festgelegt heißt //keine Textur if( SubSet_I[Subset].file != "notex") { Textures[Subset]->Release(); } //Neue Laden, vermute hieran liegts, weil ja LPSTR erwartet wird und nicht cString if(FAILED(D3DXCreateTextureFromFileEx(lpDevice,DateiName,D3DX_DEFAULT,D3DX_DEFAULT, D3DX_DEFAULT,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_FILTER_TRIANGLE,D3DX_FILTER_TRIANGLE, 0xff000000,NULL,NULL,&Textures[Subset]))) { return FALSE; } SubSet_I[Subset].file.Format('%s',DateiName); return TRUE; } |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 |
struct MeshSubSets_Import { LPDIRECT3DVERTEXBUFFER9 lpVB; //Vertexbufferdaten LPDIRECT3DINDEXBUFFER9 lpIB; //IndexBufferdaten für SubSet D3DMATERIAL9 material; //material des SubSets CString file; //Datei wo Textur liegt -> KEIN Problem BOOL cullbackfaces; //ob Rückseite gecullt werden soll BOOL alphablending; //ob alphablending für dieses Subset verwendet werden soll BOOL alphatesting; //ob alphatesting für dieses Subset verwendet werden soll }; |
C-/C++-Quelltext |
|
1 2 3 4 5 |
char buf[255] = {0}; for (WORD j=0;j<m_Texture.Length();j++) Buf[j] := m_Texture[j]; Buf[m_Texture.Length()] = 0; //NUll-zeichen /*... wie vorher*/ |
Werbeanzeige