#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
#include <GL/freeglut/freeglut.h>
#define WIDTH 640
#define HEIGHT 480
bool Change=false;//切り替えフラグ
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glutSwapBuffers();
}
void fullscreen(){
int nMode = 0;
DEVMODE devMode;
HWND hWnd;
hWnd = GetActiveWindow();
if(Change){
glClearColor( 1.0f, 1.0f, 0.0f, 1.0f );
while( EnumDisplaySettings( NULL, nMode++, &devMode )){
//640×480をサポートしているか
if( devMode.dmPelsWidth != WIDTH || devMode.dmPelsHeight !=
HEIGHT)continue;
//32ビットカラーをサポートしているか
if( devMode.dmBitsPerPel != 32 )continue;
//テストして切り替えれるなら
if( ChangeDisplaySettings( &devMode, CDS_TEST ) ==
DISP_CHANGE_SUCCESSFUL )break;
}
ChangeDisplaySettings( &devMode, CDS_FULLSCREEN );
glutFullScreen();
}else{
glClearColor( 0.0f, 1.0f, 0.0f, 1.0f );
ChangeDisplaySettings(NULL, 0);
glutPositionWindow(100,100);
glutReshapeWindow(WIDTH,HEIGHT);
}
}
void key(unsigned char key , int x , int y) {
if(key == ' '){//スペースキーでウインドウモードを切り替え
if(Change == false){Change = true;}else{Change = false;}
fullscreen();
}
}
void idle(void)
{
glutPostRedisplay();
}
int main(int argc, char *argv[])
{
glutInitWindowPosition(100, 100);
glutInitWindowSize(WIDTH, HEIGHT);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutCreateWindow("スペースキーでフルスクリーンとウインドウモード切替");
glutDisplayFunc(display);
glutIdleFunc(idle);
glutKeyboardFunc(key);
glClearColor( 0.0f, 1.0f, 0.0f, 1.0f );
glutMainLoop();
return 0;
}
|