Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(405)

Side by Side Diff: third_party/gles2_book/Chapter_11/Stencil_Test/Stencil_Test.c

Issue 545092: Added stencil-test demo.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // 1 //
2 // Book: OpenGL(R) ES 2.0 Programming Guide 2 // Book: OpenGL(R) ES 2.0 Programming Guide
3 // Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner 3 // Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner
4 // ISBN-10: 0321502795 4 // ISBN-10: 0321502795
5 // ISBN-13: 9780321502797 5 // ISBN-13: 9780321502797
6 // Publisher: Addison-Wesley Professional 6 // Publisher: Addison-Wesley Professional
7 // URLs: http://safari.informit.com/9780321563835 7 // URLs: http://safari.informit.com/9780321563835
8 // http://www.opengles-book.com 8 // http://www.opengles-book.com
9 // 9 //
10 10
11 // Stencil_Test.c 11 // Stencil_Test.c
12 // 12 //
13 // This example shows various stencil buffer 13 // This example shows various stencil buffer
14 // operations. 14 // operations.
15 // 15 //
16 #include <stdlib.h> 16 #include <stdlib.h>
17 #include "esUtil.h" 17 #include "Stencil_Test.h"
18
19 typedef struct
20 {
21 // Handle to a program object
22 GLuint programObject;
23
24 // Attribute locations
25 GLint positionLoc;
26
27 // Uniform locations
28 GLint colorLoc;
29
30 // Vertex buffer object handles
31 GLuint vboIds[2];
32
33 } UserData;
34 18
35 /// 19 ///
36 // Initialize the shader and program object 20 // Initialize the shader and program object
37 // 21 //
38 int Init ( ESContext *esContext ) 22 int stInit ( ESContext *esContext )
39 { 23 {
40 UserData *userData = esContext->userData; 24 STUserData *userData = esContext->userData;
41 GLbyte vShaderStr[] = 25 GLbyte vShaderStr[] =
42 "attribute vec4 a_position; \n" 26 "attribute vec4 a_position; \n"
43 "void main() \n" 27 "void main() \n"
44 "{ \n" 28 "{ \n"
45 " gl_Position = a_position; \n" 29 " gl_Position = a_position; \n"
46 "} \n"; 30 "} \n";
47 31
48 GLbyte fShaderStr[] = 32 GLbyte fShaderStr[] =
49 "precision mediump float; \n" 33 "precision mediump float; \n"
50 "uniform vec4 u_color; \n" 34 "uniform vec4 u_color; \n"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 glEnable( GL_DEPTH_TEST ); 99 glEnable( GL_DEPTH_TEST );
116 glEnable( GL_STENCIL_TEST ); 100 glEnable( GL_STENCIL_TEST );
117 101
118 return TRUE; 102 return TRUE;
119 } 103 }
120 104
121 /// 105 ///
122 // Initialize the stencil buffer values, and then use those 106 // Initialize the stencil buffer values, and then use those
123 // values to control rendering 107 // values to control rendering
124 // 108 //
125 void Draw ( ESContext *esContext ) 109 void stDraw ( ESContext *esContext )
126 { 110 {
127 int i; 111 int i;
128 GLubyte *offset = NULL; 112 GLubyte *offset = NULL;
129 113
130 UserData *userData = esContext->userData; 114 STUserData *userData = esContext->userData;
131 115
132 #define NumTests 4 116 #define NumTests 4
133 GLfloat colors[NumTests][4] = { 117 GLfloat colors[NumTests][4] = {
134 { 1.0f, 0.0f, 0.0f, 1.0f }, 118 { 1.0f, 0.0f, 0.0f, 1.0f },
135 { 0.0f, 1.0f, 0.0f, 1.0f }, 119 { 0.0f, 1.0f, 0.0f, 1.0f },
136 { 0.0f, 0.0f, 1.0f, 1.0f }, 120 { 0.0f, 0.0f, 1.0f, 1.0f },
137 { 1.0f, 1.0f, 0.0f, 0.0f } 121 { 1.0f, 1.0f, 0.0f, 0.0f }
138 }; 122 };
139 123
140 GLint numStencilBits; 124 GLint numStencilBits;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 // can test against them without modifying the values we 228 // can test against them without modifying the values we
245 // generated. 229 // generated.
246 glStencilMask( 0x0 ); 230 glStencilMask( 0x0 );
247 offset += 6; 231 offset += 6;
248 for ( i = 0; i < NumTests; ++i ) 232 for ( i = 0; i < NumTests; ++i )
249 { 233 {
250 glStencilFunc( GL_EQUAL, stencilValues[i], 0xff ); 234 glStencilFunc( GL_EQUAL, stencilValues[i], 0xff );
251 glUniform4fv( userData->colorLoc, 1, colors[i] ); 235 glUniform4fv( userData->colorLoc, 1, colors[i] );
252 glDrawElements( GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, offset ); 236 glDrawElements( GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, offset );
253 } 237 }
254
255 eglSwapBuffers ( esContext->eglDisplay, esContext->eglSurface );
256 } 238 }
257 239
258 /// 240 ///
259 // Cleanup 241 // Cleanup
260 // 242 //
261 void ShutDown ( ESContext *esContext ) 243 void stShutDown ( ESContext *esContext )
262 { 244 {
263 UserData *userData = esContext->userData; 245 STUserData *userData = esContext->userData;
264 246
265 // Delete program object 247 // Delete program object
266 glDeleteProgram ( userData->programObject ); 248 glDeleteProgram ( userData->programObject );
267 249
268 // Delete vertex buffer objects 250 // Delete vertex buffer objects
269 glDeleteBuffers ( 2, userData->vboIds ); 251 glDeleteBuffers ( 2, userData->vboIds );
270 } 252 }
271
272
273 int main ( int argc, char *argv[] )
274 {
275 ESContext esContext;
276 UserData userData;
277
278 esInitContext ( &esContext );
279 esContext.userData = &userData;
280
281 esCreateWindow ( &esContext, "Stencil Test", 320, 240,
282 ES_WINDOW_RGB | ES_WINDOW_DEPTH | ES_WINDOW_STENCIL );
283
284 if ( !Init ( &esContext ) )
285 return 0;
286
287 esRegisterDrawFunc ( &esContext, Draw );
288
289 esMainLoop ( &esContext );
290
291 ShutDown ( &esContext );
292 }
OLDNEW
« no previous file with comments | « third_party/gles2_book/Chapter_11/Stencil_Test/Stencil_Test.h ('k') | third_party/gles2_book/gles2_book.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698