{
  "implementation": "GL Lab fixed-function WebGL compatibility layer",
  "compiler": "Clang 8.0.1, WASI, C11/C++17",
  "completeDesktopOpenGL": false,
  "documentation": "compatibility.html",
  "api": {
    "OpenGL": [
      "glArrayElement",
      "glBegin",
      "glBlendFunc",
      "glCallList",
      "glClear",
      "glClearColor",
      "glClearDepth",
      "glColor3b",
      "glColor3d",
      "glColor3dv",
      "glColor3f",
      "glColor3fv",
      "glColor3i",
      "glColor3iv",
      "glColor3s",
      "glColor3sv",
      "glColor3ub",
      "glColor4b",
      "glColor4d",
      "glColor4dv",
      "glColor4f",
      "glColor4fv",
      "glColor4i",
      "glColor4iv",
      "glColor4s",
      "glColor4sv",
      "glColor4ub",
      "glColorMaterial",
      "glColorPointer",
      "glCullFace",
      "glDeleteLists",
      "glDepthFunc",
      "glDepthMask",
      "glDisable",
      "glDisableClientState",
      "glDrawArrays",
      "glDrawElements",
      "glEnable",
      "glEnableClientState",
      "glEnd",
      "glEndList",
      "glFinish",
      "glFlush",
      "glFrontFace",
      "glFrustum",
      "glGenLists",
      "glGetDoublev",
      "glGetError",
      "glGetFloatv",
      "glGetIntegerv",
      "glIsEnabled",
      "glIsList",
      "glLightModelfv",
      "glLightModeli",
      "glLightf",
      "glLightfv",
      "glLineStipple",
      "glLineWidth",
      "glLoadIdentity",
      "glLoadMatrixd",
      "glLoadMatrixf",
      "glMaterialf",
      "glMaterialfv",
      "glMateriali",
      "glMatrixMode",
      "glMultMatrixd",
      "glMultMatrixf",
      "glNewList",
      "glNormal3d",
      "glNormal3dv",
      "glNormal3f",
      "glNormal3fv",
      "glNormal3i",
      "glNormal3iv",
      "glNormal3s",
      "glNormal3sv",
      "glNormalPointer",
      "glOrtho",
      "glPointSize",
      "glPolygonMode",
      "glPopMatrix",
      "glPushMatrix",
      "glRasterPos2d",
      "glRasterPos2f",
      "glRasterPos2i",
      "glRasterPos2s",
      "glRasterPos3d",
      "glRasterPos3f",
      "glRasterPos3i",
      "glRasterPos3s",
      "glRasterPos4d",
      "glRasterPos4f",
      "glRasterPos4i",
      "glRasterPos4s",
      "glRectf",
      "glRecti",
      "glRotated",
      "glRotatef",
      "glScaled",
      "glScalef",
      "glScissor",
      "glShadeModel",
      "glTranslated",
      "glTranslatef",
      "glVertex2d",
      "glVertex2dv",
      "glVertex2f",
      "glVertex2fv",
      "glVertex2i",
      "glVertex2iv",
      "glVertex2s",
      "glVertex2sv",
      "glVertex3d",
      "glVertex3dv",
      "glVertex3f",
      "glVertex3fv",
      "glVertex3i",
      "glVertex3iv",
      "glVertex3s",
      "glVertex3sv",
      "glVertex4d",
      "glVertex4dv",
      "glVertex4f",
      "glVertex4fv",
      "glVertex4i",
      "glVertex4iv",
      "glVertex4s",
      "glVertex4sv",
      "glVertexPointer",
      "glViewport",
      "glWindowPos2d",
      "glWindowPos2f",
      "glWindowPos2i"
    ],
    "GLU": [
      "gluCylinder",
      "gluDeleteQuadric",
      "gluDisk",
      "gluLookAt",
      "gluNewQuadric",
      "gluOrtho2D",
      "gluPartialDisk",
      "gluPerspective",
      "gluQuadricDrawStyle",
      "gluQuadricNormals",
      "gluQuadricOrientation",
      "gluQuadricTexture",
      "gluSphere"
    ],
    "GLUT": [
      "glutAddMenuEntry",
      "glutAddSubMenu",
      "glutAttachMenu",
      "glutBitmapCharacter",
      "glutBitmapHeight",
      "glutBitmapLength",
      "glutBitmapString",
      "glutBitmapWidth",
      "glutCreateMenu",
      "glutCreateWindow",
      "glutDestroyMenu",
      "glutDetachMenu",
      "glutDisplayFunc",
      "glutGet",
      "glutGetMenu",
      "glutGetModifiers",
      "glutGetWindow",
      "glutIdleFunc",
      "glutInit",
      "glutInitDisplayMode",
      "glutInitWindowPosition",
      "glutInitWindowSize",
      "glutKeyboardFunc",
      "glutKeyboardUpFunc",
      "glutLeaveMainLoop",
      "glutMainLoop",
      "glutMotionFunc",
      "glutMouseFunc",
      "glutPassiveMotionFunc",
      "glutPostRedisplay",
      "glutReshapeFunc",
      "glutSetMenu",
      "glutSetWindowTitle",
      "glutSolidCone",
      "glutSolidCube",
      "glutSolidSphere",
      "glutSolidTeapot",
      "glutSolidTorus",
      "glutSpecialFunc",
      "glutSpecialUpFunc",
      "glutSwapBuffers",
      "glutTimerFunc",
      "glutWireCone",
      "glutWireCube",
      "glutWireSphere",
      "glutWireTeapot",
      "glutWireTorus"
    ],
    "GLFW": [
      "glfwCreateWindow",
      "glfwDestroyWindow",
      "glfwGetCurrentContext",
      "glfwGetCursorPos",
      "glfwGetFramebufferSize",
      "glfwGetKey",
      "glfwGetMouseButton",
      "glfwGetTime",
      "glfwGetWindowSize",
      "glfwGetWindowUserPointer",
      "glfwInit",
      "glfwMakeContextCurrent",
      "glfwPollEvents",
      "glfwSetCharCallback",
      "glfwSetCursorPosCallback",
      "glfwSetFramebufferSizeCallback",
      "glfwSetKeyCallback",
      "glfwSetMouseButtonCallback",
      "glfwSetTime",
      "glfwSetWindowShouldClose",
      "glfwSetWindowSize",
      "glfwSetWindowSizeCallback",
      "glfwSetWindowTitle",
      "glfwSetWindowUserPointer",
      "glfwSwapBuffers",
      "glfwSwapInterval",
      "glfwTerminate",
      "glfwWindowHint",
      "glfwWindowShouldClose"
    ],
    "browserLoop": [
      "emscripten_cancel_main_loop",
      "emscripten_set_main_loop",
      "emscripten_set_main_loop_arg"
    ]
  },
  "limits": {
    "windowCount": 1,
    "quadricSlices": [
      3,
      200
    ],
    "quadricStacks": [
      1,
      200
    ],
    "displayListRecursion": 64,
    "bitmapFonts": "Browser-backed approximation; pixel coverage thresholded",
    "glfwLoop": "Callback with fps=0 or 60 and simulateInfiniteLoop=1; desktop while loops rejected",
    "displayLists": "Supported scalar commands, vertex/color/normal vectors, matrix copies, array draws and GLUT shapes. Pointer-based lighting/material commands in a list rejected.",
    "omitted": [
      "textures",
      "VBOs",
      "VAOs",
      "programmable shaders",
      "compute/geometry shaders",
      "FBOs",
      "desktop driver extensions",
      "multiple windows",
      "GLU tessellation/NURBS",
      "stroke fonts",
      "stencil/accumulation/stereo/color-index buffers"
    ]
  }
}
