Buckets:
| /* | |
| * Copyright 2013 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. | |
| */ | |
| static void die(const char *msg) { | |
| printf("%s\n", msg); | |
| abort(); | |
| } | |
| static void create_context(void) { | |
| EGLint num_config; | |
| EGLContext g_egl_ctx; | |
| EGLDisplay g_egl_dpy; | |
| EGLConfig g_config; | |
| static const EGLint attribute_list[] = { | |
| EGL_RED_SIZE, 8, | |
| EGL_GREEN_SIZE, 8, | |
| EGL_BLUE_SIZE, 8, | |
| EGL_ALPHA_SIZE, 8, | |
| EGL_SURFACE_TYPE, EGL_WINDOW_BIT, | |
| EGL_NONE | |
| }; | |
| static const EGLint context_attributes[] = { | |
| EGL_CONTEXT_CLIENT_VERSION, 2, | |
| EGL_NONE | |
| }; | |
| g_egl_dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); | |
| if (!g_egl_dpy) | |
| die("failed to create display"); | |
| if (!eglInitialize(g_egl_dpy, NULL, NULL)) | |
| die("failed to initialize egl"); | |
| if (!eglChooseConfig(g_egl_dpy, attribute_list, &g_config, 1, &num_config)) | |
| die("failed to choose config"); | |
| g_egl_ctx = eglCreateContext(g_egl_dpy, g_config, EGL_NO_CONTEXT, context_attributes); | |
| if (!g_egl_ctx) | |
| die("failed to create context"); | |
| EGLNativeWindowType dummyWindow; | |
| EGLSurface surface = eglCreateWindowSurface(g_egl_dpy, g_config, dummyWindow, NULL); | |
| if (!surface) | |
| die("failed to create window surface"); | |
| if (!eglMakeCurrent(g_egl_dpy, surface, surface, g_egl_ctx)) | |
| die("failed to activate context"); | |
| } | |
| int main(int argc, char *argv[]) { | |
| unsigned i; | |
| create_context(); | |
| GLuint prog = glCreateProgram(); | |
| if (glGetError()) | |
| die("failed to create program"); | |
| GLuint vertex = glCreateShader(GL_VERTEX_SHADER); | |
| if (glGetError()) | |
| die("failed to create vertex shader"); | |
| glAttachShader(prog, vertex); | |
| GLuint fragment = glCreateShader(GL_FRAGMENT_SHADER); | |
| if (glGetError()) | |
| die("failed to create fragment shader"); | |
| glAttachShader(prog, fragment); | |
| GLuint shaders[2]; | |
| GLsizei count; | |
| glGetAttachedShaders(prog, 2, &count, shaders); | |
| if (glGetError()) | |
| die("failed to get attached shaders"); | |
| if (count != 2) | |
| die("unknown number of shaders returned"); | |
| if (shaders[0] == shaders[1]) | |
| die("returned identical shaders"); | |
| for (i = 0; i < count; i++) { | |
| if (shaders[i] == 0) | |
| die("returned 0"); | |
| if (shaders[i] != vertex && shaders[i] != fragment) | |
| die("unknown shader returned"); | |
| } | |
| REPORT_RESULT(1); | |
| return 0; | |
| } | |
Xet Storage Details
- Size:
- 2.55 kB
- Xet hash:
- 64fdf12a42d119b9fd4cd72f4af28830623d7f1e2c4cec179c983cdc0a445489
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.