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

Unified Diff: third_party/gles2_book/Chapter_8/Simple_VertexShader/Simple_VertexShader.c

Issue 543015: Added simple vertex shader 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 side-by-side diff with in-line comments
Download patch
Index: third_party/gles2_book/Chapter_8/Simple_VertexShader/Simple_VertexShader.c
===================================================================
--- third_party/gles2_book/Chapter_8/Simple_VertexShader/Simple_VertexShader.c (revision 36016)
+++ third_party/gles2_book/Chapter_8/Simple_VertexShader/Simple_VertexShader.c (working copy)
@@ -23,6 +23,10 @@
int svsInit ( ESContext *esContext )
{
SVSUserData *userData = esContext->userData;
+ int numVertices = 24;
+ GLfloat *vertices = NULL;
+ GLushort *indices = NULL;
+
GLbyte vShaderStr[] =
"uniform mat4 u_mvpMatrix; \n"
"attribute vec4 a_position; \n"
@@ -41,6 +45,7 @@
// Load the shaders and get a linked program object
userData->programObject = esLoadProgram ( vShaderStr, fShaderStr );
+ if ( userData->programObject == 0 ) return FALSE;
// Get the attribute locations
userData->positionLoc = glGetAttribLocation ( userData->programObject, "a_position" );
@@ -49,9 +54,17 @@
userData->mvpLoc = glGetUniformLocation( userData->programObject, "u_mvpMatrix" );
// Generate the vertex data
- userData->numIndices = esGenCube( 1.0, &userData->vertices,
- NULL, NULL, &userData->indices );
-
+ userData->numIndices = esGenCube( 1.0, &vertices, NULL, NULL, &indices );
+ glGenBuffers ( 2, userData->vboIds );
+ glBindBuffer ( GL_ARRAY_BUFFER, userData->vboIds[0] );
+ glBufferData ( GL_ARRAY_BUFFER, 3 * numVertices * sizeof(GLfloat),
+ vertices, GL_STATIC_DRAW );
+ glBindBuffer ( GL_ELEMENT_ARRAY_BUFFER, userData->vboIds[1] );
+ glBufferData ( GL_ELEMENT_ARRAY_BUFFER, userData->numIndices * sizeof(GL_UNSIGNED_SHORT),
+ indices, GL_STATIC_DRAW );
+ if ( vertices != NULL ) free ( vertices );
+ if ( indices != NULL ) free ( indices );
+
// Starting rotation angle for the cube
userData->angle = 45.0f;
@@ -105,7 +118,6 @@
// Set the viewport
glViewport ( 0, 0, esContext->width, esContext->height );
-
// Clear the color buffer
glClear ( GL_COLOR_BUFFER_BIT );
@@ -113,17 +125,15 @@
glUseProgram ( userData->programObject );
// Load the vertex position
+ glEnableVertexAttribArray ( userData->positionLoc );
greggman 2010/01/13 03:10:43 Any particular reason you switched the order of th
alokp 2010/01/13 03:52:59 no particular reason. does it matter?
glVertexAttribPointer ( userData->positionLoc, 3, GL_FLOAT,
- GL_FALSE, 3 * sizeof(GLfloat), userData->vertices );
-
- glEnableVertexAttribArray ( userData->positionLoc );
-
-
+ GL_FALSE, 3 * sizeof(GLfloat), 0 );
+
// Load the MVP matrix
glUniformMatrix4fv( userData->mvpLoc, 1, GL_FALSE, (GLfloat*) &userData->mvpMatrix.m[0][0] );
// Draw the cube
- glDrawElements ( GL_TRIANGLES, userData->numIndices, GL_UNSIGNED_INT, userData->indices );
+ glDrawElements ( GL_TRIANGLES, userData->numIndices, GL_UNSIGNED_SHORT, 0 );
// TODO(alokp): glFlush should not be necessary with SwapBuffers.
glFlush();
@@ -136,16 +146,9 @@
{
SVSUserData *userData = esContext->userData;
- if ( userData->vertices != NULL )
- {
- free ( userData->vertices );
- }
+ // Delete program object
+ glDeleteBuffers ( 2, userData->vboIds );
- if ( userData->indices != NULL )
- {
- free ( userData->indices );
- }
-
// Delete program object
glDeleteProgram ( userData->programObject );
}

Powered by Google App Engine
This is Rietveld 408576698