"GL_INDEX_LOGIC_OP": false,
"GL_COLOR_LOGIC_OP": false,
// Some implementations return more GL_AUX_BUFFERS than requested
- "GL_DRAW_BUFFER": "GL_BACK",
- "GL_READ_BUFFER": "GL_BACK",
+ // GL_DRAW_BUFFER and GL_READ_BUFFER vary with visual
// GL_SCISSOR_BOX depends on the drawable
"GL_SCISSOR_TEST": false,
"GL_INDEX_CLEAR_VALUE": 0,
"GL_COLOR_WRITEMASK": [true, true, true, true],
"GL_INDEX_MODE": false,
"GL_RGBA_MODE": true,
- "GL_DOUBLEBUFFER": true,
+ // GL_DOUBLEBUFFER varies with visual
"GL_STEREO": false,
"GL_RENDER_MODE": "GL_RENDER",
"GL_PERSPECTIVE_CORRECTION_HINT": "GL_DONT_CARE",
"GL_STENCIL_BACK_FAIL": "GL_KEEP",
"GL_STENCIL_BACK_PASS_DEPTH_FAIL": "GL_KEEP",
"GL_STENCIL_BACK_PASS_DEPTH_PASS": "GL_KEEP",
- "GL_DRAW_BUFFER0": "GL_BACK",
+ // GL_DRAW_BUFFER0 varies with visual
"GL_DRAW_BUFFER1": "GL_ZERO",
"GL_DRAW_BUFFER2": "GL_ZERO",
"GL_DRAW_BUFFER3": "GL_ZERO",
--- /dev/null
+{
+ "parameters": {
+ "GL_DRAW_BUFFER": "GL_BACK",
+ "GL_DRAW_BUFFER0": "GL_BACK",
+ "GL_READ_BUFFER": "GL_BACK",
+ "GL_DOUBLEBUFFER": true
+ }
+}
--- /dev/null
+{
+ "parameters": {
+ "GL_DRAW_BUFFER": "GL_FRONT",
+ "GL_DRAW_BUFFER0": "GL_FRONT",
+ "GL_READ_BUFFER": "GL_FRONT",
+ "GL_DOUBLEBUFFER": false
+ }
+}
static GLboolean doubleBuffer = GL_TRUE;
static int win;
+static void parseArgs(int argc, char** argv)
+{
+ int i;
+
+ for (i = 1; i < argc; ++i) {
+ const char *arg = argv[i];
+ if (strcmp(arg, "-sb") == 0) {
+ doubleBuffer = GL_FALSE;
+ } else if (strcmp(arg, "-db") == 0) {
+ doubleBuffer = GL_TRUE;
+ } else {
+ fprintf(stderr, "error: unknown arg %s\n", arg);
+ exit(1);
+ }
+ }
+}
+
static void Init(void)
{
glClearColor(0.3, 0.1, 0.3, 1.0);
{
GLenum type;
+ parseArgs(argc, argv);
+
glutInit(&argc, argv);
glutInitWindowSize(250, 250);