Sprite unter MS 2005 EE nicht angezeigt (2D)
-
Hi!
Ich hab ein neues Projekt mit Express erstellt aber die Sprites werden nicht angezeigt obwohl es damals (auf meinem alten rechner mit MSVS 6.0) funktioniert hat...Laden
CSprite sp; sp.Create(Direct3D.GetDevice(),"particle.BMP",255,0,255); sp.SetPosition(40,40,1);Zeichnen
RECT r; r.left=0; r.right=ImgInfo.Width; r.top=0; r.bottom=ImgInfo.Height; sp.Draw(&r,127);Die Methoden der Klasse CSprite:
void CSprite::Create(LPDIRECT3DDEVICE9 lpDevice, LPCSTR lpFileName, BYTE red, BYTE green, BYTE blue) { m_lpDevice = lpDevice; // Sprite anlegen D3DXCreateSprite(m_lpDevice,&m_lpSprite); // Inforationen über die Textur holen D3DXIMAGE_INFO ImgInfo; D3DXGetImageInfoFromFile(lpFileName,&ImgInfo); // Textur anlegen D3DXCreateTextureFromFileEx(m_lpDevice, lpFileName, ImgInfo.Width, ImgInfo.Height, 1,0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, RGB(red,green,blue),0,0, &m_lpTexture); // Breite und Höhe speichern m_Width = ImgInfo.Width; m_Height = ImgInfo.Height; // m_vRotationCenter = D3DXVECTOR2((float)m_Width/2,(float)m_Height/2); m_vRotationCenter = D3DXVECTOR3((float)1,(float)1,1); m_Rotation=D3DXVECTOR3(0,0,0); // Skalierung und Schrittweite setzen m_vScale = D3DXVECTOR3(1.0f,1.0f,1); m_vPosition.x=0; m_vPosition.y=0; m_vPosition.z=0; // Schrittweite des Sprites bei Bewegung m_StepX = 10.0f; m_StepY = 10.0f; } void CSprite::Draw(const RECT *source, BYTE visibility) { if(!source) m_lpSprite->Draw(m_lpTexture, source, // &m_vScale, &m_vRotationCenter, // m_Rotation, &m_vPosition, D3DCOLOR_ARGB(visibility, 255, 255, 255) ); else{ RECT altSource={0,0,m_Width,m_Height}; m_lpSprite->Draw(m_lpTexture, &altSource, // &m_vScale, &m_vRotationCenter, // m_Rotation, &m_vPosition, D3DCOLOR_ARGB(visibility, 255, 255, 255) ); } }ALLERDINGS musste ich einiges an der Klasse verändern.
Anscheinend muss die Draw Methode einen Positionsvektor mit x,y UND z übergeben bekommen...obwohl es eine 2D Anwendung ist...
Zumindest hat es bisher so geklappt...
Ich nehme an dass ich entweder keine korrekte Kameraposition habe oder etwas anderes nicht stimmt, das bei der alten DX Version anders funktioniert hat!
Die Pfade der Bilder die geladen werden, hab ich mit nem Filepointer überprüft und es sie werden trotzdem nicht angezeigt!
Hab auch schon einige mögliche Positionen für das Sprite (SetPosition) ausprobiert, und x,y,z verändert aber das Ergebnis war das gleiche!
Die Draw Methode hat sich insgesamt bei den Parametern geändert, deshalb könnte da auch der Fehler sein aber ich komm ned dahinter
Seht ihr da den Fehler?
-
Jemand ne Idee?