S
na klar kann ich das.
Hier der code aus der WinProc Funktion und InitWindow für den fullscreen.
Wenn du lust hast kann ich dir auch den ganzen Code per mail schicken.
#include "C_GLWindow.h"
//ACHTUNG WndProc ist eine friend Funktion der C_GLWindow Klasse ACHTUNG//
//definitition of the WindowProcedure//
LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//create object "window" on heap memory//
C_GLWindow *window = new C_GLWindow;
switch (uMsg)
{
case WM_SIZE:
window->setWindowSize(LOWORD (lParam),
HIWORD (lParam)); //if size change, overwrite old velues
window->SetupProjection (); //and reset the Projection
break;
und hier der code von SetupProjection:
//set the projection Matrix//
void C_GLWindow::SetupProjection ()
{
glViewport(0, 0, width, height);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
gluPerspective (50.0, (GLfloat) width / (GLfloat) height, 0.01f, 1000.0f);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}
hier nochmal ein Ausschnitt aus der InitWindow funktion, in diesem abschitt mache ich alle Fullscreen einstellungen.
if(fullscreen != 0)
{
DEVMODE dm;
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm);
dm.dmSize = sizeof(DEVMODE);
dm.dmPelsWidth = width;
dm.dmPelsHeight = height;
dm.dmBitsPerPel = 32;
ChangeDisplaySettings(&dm, CDS_FULLSCREEN);
dwStyle = WS_POPUP;
dwExStyle = WS_EX_APPWINDOW;
}
AdjustWindowRectEx(&WindowRect, dwStyle, false, dwExStyle);
einen Ausschnitt noch... undzwar sind hier die Pixelformateinstellungen, vieleicht fehlt hier ja was für den fullscreen?:
int C_GLWindow::SetupPixelformat (HDC hDC)
{
unsigned int PixelFormat = 0;
PIXELFORMATDESCRIPTOR pfd;
pfd.nSize = sizeof (PIXELFORMATDESCRIPTOR);
pfd.nVersion = 1;
pfd.dwFlags = PFD_SUPPORT_OPENGL|PFD_DRAW_TO_WINDOW|PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 32; //durch member ersetzten
pfd.cBlueBits = 8; //durch member ersetzten
pfd.cGreenBits = 8; //durch member ersetzten
pfd.cRedBits = 8; //durch member ersetzten
pfd.cAlphaBits = 8; //durch member ersetzten
pfd.cAlphaShift = 0; //durch member ersetzten
pfd.cDepthBits = 24; // durch member ersetzen
pfd.iLayerType = PFD_MAIN_PLANE;
pfd.cAccumAlphaBits = 0; //durch member ersetzten
pfd.cAccumBits = 0; //durch member ersetzten
pfd.cAccumBlueBits = 0; //durch member ersetzten
pfd.cAccumGreenBits = 0; //durch member ersetzten
pfd.cAccumRedBits = 0; //durch member ersetzten
pfd.cAlphaShift = 0; //durch member ersetzten
pfd.cAuxBuffers = 0; //durch member ersetzten
pfd.cGreenShift = 0; //durch member ersetzten
pfd.cRedShift = 0; //durch member ersetzten
pfd.cStencilBits = 0; //durch member ersetzten
pfd.dwDamageMask = 0; //durch member ersetzten
pfd.dwLayerMask = 0; //durch member ersetzten
pfd.dwVisibleMask = 0; //durch member ersetzten
pfd.bReserved = 0;
PixelFormat = ChoosePixelFormat(hDC, &pfd);
if(!PixelFormat)
{
MessageBox(mainhWnd, _T("Failed to choose pixel format."), _T("ERROR"), MB_OK);
return 0;
}
SetPixelFormat(hDC, PixelFormat, &pfd);
return 1;
}
einen Hinweis noch: ich kann mit der funktion gl_Translatef die Werte der X und der Y Achse größer als 1.0 Wählen. Komisch ist auch das ein Positiver Z Wert (bis 1.0) das dreieck nicht verschwinden lässt obwohl das Dreieck ja in diesem fall noch vor dem betrachter steht.
Was mir noch aufgefallen ist: Wenn ich gl_Tranlsatef auskommentiere und z.B den oberen Eckpunkt bei glVertex3f (0.0, 1.0, -1.1);setze dann verschwindet nur ein Stück von der oberen Spitze...???
ich dachte es könnte vieleicht irgenwie mit dem Depth Buffer zusammenhängen
aufjedenfall vielen dank für den Zeitaufwand...