]> git.cworth.org Git - apitrace-tests/blob - apps/egl/gles1/clear.c
Add egl apps.
[apitrace-tests] / apps / egl / gles1 / clear.c
1 /*
2  * Mesa 3-D graphics library
3  * Version:  7.9
4  *
5  * Copyright (C) 2010 LunarG Inc.
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a
8  * copy of this software and associated documentation files (the "Software"),
9  * to deal in the Software without restriction, including without limitation
10  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11  * and/or sell copies of the Software, and to permit persons to whom the
12  * Software is furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included
15  * in all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23  * DEALINGS IN THE SOFTWARE.
24  *
25  * Authors:
26  *    Chia-I Wu <olv@lunarg.com>
27  */
28
29 /*
30  * This demo tests eglGetProcAddress and glClear.
31  */
32
33 #include <stdlib.h>
34 #include <stdio.h>
35 #include <EGL/egl.h>
36 #include <GLES/gl.h>
37
38 #include "eglut.h"
39
40 typedef void (GL_APIENTRY *type_ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
41 typedef void (GL_APIENTRY *type_Clear)(GLbitfield mask);
42
43 static type_ClearColor fn_ClearColor;
44 static type_Clear fn_Clear;
45
46 static void
47 draw(void)
48 {
49    fn_Clear(GL_COLOR_BUFFER_BIT);
50 }
51
52 static void *
53 get_proc(const char *name)
54 {
55    void *proc;
56
57    proc = (void *) eglGetProcAddress(name);
58    if (!proc) {
59       /*
60        * note that eglGetProcAddress is not required to support non-extension
61        * functions
62        */
63       printf("failed to find %s (not necessarily a bug)\n", name);
64       exit(1);
65    }
66
67    return proc;
68 }
69
70 static void
71 init(void)
72 {
73    fn_ClearColor = (type_ClearColor) get_proc("glClearColor");
74    fn_Clear = (type_Clear) get_proc("glClear");
75
76    fn_ClearColor(1.0, 0.4, 0.4, 0.0);
77 }
78
79 int
80 main(int argc, char *argv[])
81 {
82    eglutInitWindowSize(300, 300);
83    eglutInitAPIMask(EGLUT_OPENGL_ES1_BIT);
84    eglutInit(argc, argv);
85
86    eglutCreateWindow("clear");
87
88    eglutDisplayFunc(draw);
89
90    init();
91
92    eglutMainLoop();
93
94    return 0;
95 }