blob: ba6b69fb99ac71f2de570188d716b25936e22aba [file] [log] [blame] [edit]
// Copyright 2018 The Emscripten Authors. All rights reserved.
// Emscripten is available under two separate licenses, the MIT license and the
// University of Illinois/NCSA Open Source License. Both these licenses can be
// found in the LICENSE file.
#include <stdio.h>
#include <stdbool.h>
#include <GL/gl.h>
#include <GL/glut.h>
#ifndef REPORT_RESULT
#define REPORT_RESULT(x) printf("%d\n", result)
#endif
int main(int argc, char* argv[]) {
bool stencilActivated = false;
bool depthActivated = false;
bool alphaActivated = false;
bool antiAliasingActivated = false;
unsigned int mode = GLUT_RGBA | GLUT_DOUBLE;
#ifdef STENCIL_ACTIVATED
stencilActivated = true;
mode |= GLUT_STENCIL;
#endif
#ifdef DEPTH_ACTIVATED
depthActivated = true;
mode |= GLUT_DEPTH;
#endif
#ifdef ALPHA_ACTIVATED
alphaActivated = true;
mode |= GLUT_ALPHA;
#endif
#ifdef AA_ACTIVATED
antiAliasingActivated = true;
mode |= GLUT_MULTISAMPLE;
#endif
glutInit(&argc, argv);
glutInitWindowSize(640, 480);
glutInitDisplayMode(mode);
glutCreateWindow(__FILE__);
printf("stencil: %d\n", glutGet(GLUT_WINDOW_STENCIL_SIZE));
printf("depth: %d\n", glutGet(GLUT_WINDOW_DEPTH_SIZE));
printf("alpha: %d\n", glutGet(GLUT_WINDOW_ALPHA_SIZE));
printf("antialias: %d\n", glutGet(GLUT_WINDOW_NUM_SAMPLES));
int result = (
(!stencilActivated || glutGet(GLUT_WINDOW_STENCIL_SIZE) > 0) &&
(!depthActivated || glutGet(GLUT_WINDOW_DEPTH_SIZE) > 0) &&
(!alphaActivated || glutGet(GLUT_WINDOW_ALPHA_SIZE) > 0) &&
(!antiAliasingActivated || glutGet(GLUT_WINDOW_NUM_SAMPLES) > 0)
);
// fix-up "ReferenceError: GL is not defined,createContext" due to
// overzealous JS stripping
glClear(0);
REPORT_RESULT(result);
}