]> git.cworth.org Git - apitrace-tests/blob - apps/egl/gles1/clear.c
Automate gles tests.
[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 idle(void)
48 {
49    exit(0);
50 }
51
52 static void
53 draw(void)
54 {
55    fn_Clear(GL_COLOR_BUFFER_BIT);
56
57    eglutIdleFunc(idle);
58 }
59
60 static void *
61 get_proc(const char *name)
62 {
63    void *proc;
64
65    proc = (void *) eglGetProcAddress(name);
66    if (!proc) {
67       /*
68        * note that eglGetProcAddress is not required to support non-extension
69        * functions
70        */
71       printf("failed to find %s (not necessarily a bug)\n", name);
72       exit(1);
73    }
74
75    return proc;
76 }
77
78 static void
79 init(void)
80 {
81    fn_ClearColor = (type_ClearColor) get_proc("glClearColor");
82    fn_Clear = (type_Clear) get_proc("glClear");
83
84    fn_ClearColor(1.0, 0.4, 0.4, 0.0);
85 }
86
87 int
88 main(int argc, char *argv[])
89 {
90    eglutInitWindowSize(300, 300);
91    eglutInitAPIMask(EGLUT_OPENGL_ES1_BIT);
92    eglutInit(argc, argv);
93
94    eglutCreateWindow("clear");
95
96    eglutDisplayFunc(draw);
97
98    init();
99
100    eglutMainLoop();
101
102    return 0;
103 }