Game Development Reference
In-Depth Information
1.0f, -1.0f, 0.0f,
1.0f, 1.0f, 0.0f
};
const GLfloat vCoords[] = { 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f,
1.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f,
1.0f, 0.0f, 0.0f,
1.0f, 1.0f, 0.0f
};
glUseProgram ( g_ProgramObject );
These attribute variables are declared in a vertex shader. See the value of g_vShaderStr[]
in the preceding code.
GLint Loc1 = glGetAttribLocation(g_ProgramObject,"vPosition");
GLint Loc2 = glGetAttribLocation(g_ProgramObject,"vCoords");
glBindBuffer( GL_ARRAY_BUFFER, 0 );
glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 );
glVertexAttribPointer(
Loc1, 3, GL_FLOAT, GL_FALSE, 0, vVertices );
glVertexAttribPointer(
Loc2, 3, GL_FLOAT, GL_FALSE, 0, vCoords );
glEnableVertexAttribArray( Loc1 );
glEnableVertexAttribArray( Loc2 );
glDisable( GL_DEPTH_TEST );
glDrawArrays( GL_TRIANGLES, 0, 6 );
glUseProgram( 0 );
glDisableVertexAttribArray( Loc1 );
glDisableVertexAttribArray( Loc2 );
We also need a few JNI callbacks. The irst one handles the surface size changes, as seen in
the following code:
JNIEXPORT void JNICALL
Java_com_packtpub_ndkcookbook_app3_App3Activity_SetSurfaceSize(
JNIEnv* env, jclass clazz, int Width, int Height )
{
LOGI( "SurfaceSize: %i x %i", Width, Height );
g_Width = Width;
g_Height = Height;
GLDebug_LoadStaticProgramObject();
 
Search WWH ::




Custom Search