Den folgenden Code aus dem FAQ habe ich bereits übernommen und danach kamen die Fehler Meldungen s.o. :
Beitrag FAQ :
Verfasst am: 11. Juli 2003, 13:48 Titel:
--------------------------------------------------------------------------------
Du hast recht! Sorry! Keine Ahnung, was ich da gemacht habe...
So geht's: Ändere tbGUIImage::ReceiveMessage in tbGUIImage.cpp so um:
Code:
// ******************************************************************
// Nachrichtenfunktion für ein Bild
tbResult tbGUIImage::ReceiveMessage(const tbGUIMessage* pMsg)
{
tbGUIVertex aVertex[4];
switch(pMsg->Type)
{
case TB_GMT_RENDER:
// Wenn das Element unsichtbar ist, wird es nicht gerendert.
if(!m_bVisible) break;
if(pMsg->aiInt[0] == 2)
{
// Bild zeichnen
m_pGUI->AddRect(m_vPosition * m_pGUI->m_vScaling, m_vSize * m_pGUI->m_vScaling,
m_Color, m_vTopLeftTex, m_vBottomRightTex - m_vTopLeftTex,
aVertex);
// Textur setzen
tbDirect3D& D3D = tbDirect3D::Instance();
D3D.SetTexture(0, m_pTexture);
// Vertexformat und Render-States
D3D.SetFVF(tbGUIVertex::dwFVF);
D3D.SetRS(D3DRS_ZENABLE, FALSE);
D3D.SetRS(D3DRS_ZWRITEENABLE, FALSE);
D3D.SetRS(D3DRS_COLORVERTEX, TRUE);
D3D.SetRS(D3DRS_ALPHABLENDENABLE, TRUE);
D3D.SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
D3D.SetRS(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
D3D.SetTSS(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
D3D.SetTSS(0, D3DTSS_COLORARG1, D3DTA_CURRENT);
D3D.SetTSS(0, D3DTSS_COLORARG2, D3DTA_TEXTURE);
D3D.SetTSS(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
D3D.SetTSS(0, D3DTSS_ALPHAARG1, D3DTA_CURRENT);
D3D.SetTSS(0, D3DTSS_ALPHAARG2, D3DTA_TEXTURE);
// Dreiecke zeichnen
D3D->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex,
sizeof(tbGUIVertex));
}
break;
}
return TB_OK;
}
Edit: Ups, das ist die neue Schreibweise (für Auflage 2). Bei Dir ist tbDirect3D noch eine statische Klasse, und Du müsst überall tbDirect3D:: anstatt D3D. hinschreiben. Und bei DrawPrimitiveUP: tbDirect3D::GetDevice()->DrawPrimitiveUP(...).
_________________
MfG,
David Scherfgen
"Wer Brot backt, der backt Brot." (Johann Wolfgang Goethe)