ZeHa hat geschrieben:Was DarkDragon allerdings meinte, daß man sich das Berechnen beim 2D sparen kann, weiß ich bis jetzt auch noch nicht... aber er könnte es ja einfach mal erklären

Generell im 2D kann man es sich spaaren, da man mit einer Projektionsmatrix so ziemlich alles ganz einfach manipulieren kann.
Hier z.B.
Code: Alles auswählen
void cRenderingContext::set2DMode(bool state, int swidth, int sheight) {
if(state) {
// Falls 2D: TiefenBuffer ausschalten
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
// Orthogonalsichtweise einschalten:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, (double) swidth, (double) (height - sheight), (double) height, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
} else {
// Falls nicht 2D: TiefenBuffer anschalten
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
// Perspektivisch verzerrte Sicht:
setCamera(camX * -1.0, camY * -1.0, camZ * -1.0);
}
}
Diese Zeile ist wichtig:
Code: Alles auswählen
glOrtho(0.0, (double) swidth, (double) (height - sheight), (double) height, -1.0, 1.0);
swidth, sheight = 2D Bildschirmauflösung.
width, height = Normale Bildschirmauflösung.
Sicher gibt es einen weg das selbe zumindest in ähnlicher Weise mit dem PureBasic 2D Screen anzustellen. Z.B. indem man alles zuerst auf ein Sprite malt und dann großskaliert/kleinskaliert. Das ist aber schon overkilled meiner Meinung nach.
Mein swidth, sheight kommt etwa _PB_Screen_Width und _PB_Screen_Height nahe und width, height kommt etwa _PB_Screen_RealWidth und _PB_Screen_RealHeight hier nahe:
...
-----------------------------------------------------------------------
Sprite
------
_PB_Screen_Width ; width of the current buffer selected with UseBuffer()
_PB_Screen_Height ; height of the current buffer selected with UseBuffer()
_PB_Screen_Depth ; depth (in bpp) of the current buffer selected with UseBuffer()
_PB_Screen_RealWidth ; width of the back buffer
_PB_Screen_RealHeight ; height of the back buffer
_PB_Screen_Window ; ScreenID() (HWND)
_PB_Screen_Windowed
...
http://www.purebasic.fr/english/viewtop ... 503#129503
Bei mir wird halt nichts zuerst auf einen dritten Buffer gerendert sondern direkt mit der resultierenden Matrix multipliziert.
[EDIT]
Hier mal die Befehlsbeschreibung zu glOrtho:
http://wiki.delphigl.com/index.php/GlOrtho
Dürfte nun für alle klar sein.
[EDIT2]
Das ganze geht auch mit DirectX sicherlich.