| Index: third_party/gles_book_examples/Chapter_8/Simple_VertexShader/Simple_VertexShader.c
|
| ===================================================================
|
| --- third_party/gles_book_examples/Chapter_8/Simple_VertexShader/Simple_VertexShader.c (revision 35821)
|
| +++ third_party/gles_book_examples/Chapter_8/Simple_VertexShader/Simple_VertexShader.c (working copy)
|
| @@ -13,38 +13,16 @@
|
| // This is a simple example that draws a rotating cube in perspective
|
| // using a vertex shader to transform the object
|
| //
|
| +
|
| +#include "Simple_VertexShader.h"
|
| #include <stdlib.h>
|
| -#include "esUtil.h"
|
|
|
| -typedef struct
|
| -{
|
| - // Handle to a program object
|
| - GLuint programObject;
|
| -
|
| - // Attribute locations
|
| - GLint positionLoc;
|
| -
|
| - // Uniform locations
|
| - GLint mvpLoc;
|
| -
|
| - // Vertex daata
|
| - GLfloat *vertices;
|
| - GLuint *indices;
|
| - int numIndices;
|
| -
|
| - // Rotation angle
|
| - GLfloat angle;
|
| -
|
| - // MVP matrix
|
| - ESMatrix mvpMatrix;
|
| -} UserData;
|
| -
|
| ///
|
| // Initialize the shader and program object
|
| //
|
| -int Init ( ESContext *esContext )
|
| +int svsInit ( ESContext *esContext )
|
| {
|
| - UserData *userData = esContext->userData;
|
| + SVSUserData *userData = esContext->userData;
|
| GLbyte vShaderStr[] =
|
| "uniform mat4 u_mvpMatrix; \n"
|
| "attribute vec4 a_position; \n"
|
| @@ -53,8 +31,9 @@
|
| " gl_Position = u_mvpMatrix * a_position; \n"
|
| "} \n";
|
|
|
| + // TODO(alokp): Shaders containing "precision" do not compile.
|
| GLbyte fShaderStr[] =
|
| - "precision mediump float; \n"
|
| + "//precision mediump float; \n"
|
| "void main() \n"
|
| "{ \n"
|
| " gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 ); \n"
|
| @@ -80,13 +59,12 @@
|
| return TRUE;
|
| }
|
|
|
| -
|
| ///
|
| // Update MVP matrix based on time
|
| //
|
| -void Update ( ESContext *esContext, float deltaTime )
|
| +void svsUpdate ( ESContext *esContext, float deltaTime )
|
| {
|
| - UserData *userData = (UserData*) esContext->userData;
|
| + SVSUserData *userData = (SVSUserData*) esContext->userData;
|
| ESMatrix perspective;
|
| ESMatrix modelview;
|
| float aspect;
|
| @@ -120,9 +98,9 @@
|
| ///
|
| // Draw a triangle using the shader pair created in Init()
|
| //
|
| -void Draw ( ESContext *esContext )
|
| +void svsDraw ( ESContext *esContext )
|
| {
|
| - UserData *userData = esContext->userData;
|
| + SVSUserData *userData = esContext->userData;
|
|
|
| // Set the viewport
|
| glViewport ( 0, 0, esContext->width, esContext->height );
|
| @@ -147,15 +125,16 @@
|
| // Draw the cube
|
| glDrawElements ( GL_TRIANGLES, userData->numIndices, GL_UNSIGNED_INT, userData->indices );
|
|
|
| - eglSwapBuffers ( esContext->eglDisplay, esContext->eglSurface );
|
| + // TODO(alokp): glFlush should not be necessary with SwapBuffers.
|
| + glFlush();
|
| }
|
|
|
| ///
|
| // Cleanup
|
| //
|
| -void ShutDown ( ESContext *esContext )
|
| +void svsShutDown ( ESContext *esContext )
|
| {
|
| - UserData *userData = esContext->userData;
|
| + SVSUserData *userData = esContext->userData;
|
|
|
| if ( userData->vertices != NULL )
|
| {
|
| @@ -170,25 +149,3 @@
|
| // Delete program object
|
| glDeleteProgram ( userData->programObject );
|
| }
|
| -
|
| -
|
| -int main ( int argc, char *argv[] )
|
| -{
|
| - ESContext esContext;
|
| - UserData userData;
|
| -
|
| - esInitContext ( &esContext );
|
| - esContext.userData = &userData;
|
| -
|
| - esCreateWindow ( &esContext, "Simple Texture 2D", 320, 240, ES_WINDOW_RGB );
|
| -
|
| - if ( !Init ( &esContext ) )
|
| - return 0;
|
| -
|
| - esRegisterDrawFunc ( &esContext, Draw );
|
| - esRegisterUpdateFunc ( &esContext, Update );
|
| -
|
| - esMainLoop ( &esContext );
|
| -
|
| - ShutDown ( &esContext );
|
| -}
|
|
|