# How to calculate vertex normals for a mesh in Java in OpenGL ES?

Can some one point me to Java code ( in Java not C or C++) that calculates all the normals for all the vertices of a mesh for OpenGL ES application. I need this for lighting. Lets say I have a cube with following vertices and indices:

float vertices[] = { -width, -height, -depth, // 0
width, -height, -depth, // 1
width,  height, -depth, // 2
-width,  height, -depth, // 3
-width, -height,  depth, // 4
width, -height,  depth, // 5
width,  height,  depth, // 6
-width,  height,  depth  // 7
};
short indices[] = { 0, 2, 1,
0, 3, 2,
1,2,6,
6,5,1,
4,5,6,
6,7,4,
2,3,6,
6,3,7,
0,7,3,
0,4,7,
0,1,5,
0,5,4
};


In above specific example how many normals we need?

• You need one normal per triangle. Calculating normals is covered here: gamedev.stackexchange.com/questions/8191/… – bummzack Feb 16 '11 at 12:18
• @bummzack Is there a way in OpenGL-ES to only specify one normal per triangle? I thought you could only pass them in as a vertex attribute to your Vertex Shader (and do per vertex lighting). Right? – Chris Smith Feb 16 '11 at 15:28
• Yeah, you'll have to set the normal per vertex. For a cube, all vertices of one side share the same normal though. Therefore you can calculate the normal once per side and then pass that to all vertices belonging to that side. – bummzack Feb 16 '11 at 16:44