Ich bin gerade dabei mal ein kleines Spiel von Grund auf mit der SDL zu erstellen, dabei habe ich jetzt bei einem kleinen Test feststellen müssen, dass mein Code zwar in der Debug-Version funktioniert, bei der Release jedoch Anzeigefehler passieren. Entweder es erscheint gar keine Anzeige (Wenn ich die Ausgabe der Positionen nicht auskommentiere) oder die Oberste Reihe Blöcke wird nicht angezeigt. (Siehe anhängende Bilder)
Nach einigem Probieren habe ich herausgefunden, dass die Inlinefunktionserweiterung schuld an dem ganzen Schlamassel ist, sobald die eingeschaltet ist, passieren die Fehler.
Hier mal der Render-Kern, irgend wo hier scheint es Probleme zu geben:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
EMG_Error CSurface::blitSurface(SDL_Surface * src, sPosition pos){
SDL_Rect src_pos, dst_pos;
dst_pos.x = static_cast<Sint16> ( static_cast<float> (m_pScreen->w) * pos.x);
dst_pos.y = static_cast<Sint16> ( static_cast<float> (m_pScreen->h) * pos.y);
src_pos.x = 0;
src_pos.y = 0;
//std::cout << "Renderpos x:" << static_cast<Sint16> ( m_pScreen->w * pos.x) << " y:" << static_cast<Sint16> ( m_pScreen->h * pos.y) << std::endl;
if (SDL_BlitSurface(src, &src_pos, m_pScreen, &dst_pos) == 0){
return E_OK;
}else{
return E_SDLERROR;
}
}
|
Technischen Infos:
VS 2010 Prof
SDL 1.2.14 mit SDL_gfx-2.0.23
Hat jemand eine Idee, ob es sich hierbei um einen Bug im MS-Compiler handelt, oder ob mein Code "fehlerhaft" ist.