Hey guys, I'm learning DirectX and I've recently come across a problem that I would like some insight on. I have a cube class that creates a vertex buffer of vertices containing a 3D vector for position and a 3D vector for normals and a 2D vector for textures coordinates.
vec3 position
vec3 normal
vec2 texcoords
I'm using an index buffer as well so that I only need to have 8 vertices instead of 36. The problem with this is when texturing, the same vertex (for example the front face top left corner) would need to have different texture coordinates depending on which triangle it is part of during rendering (as each vertex will be part of 4 triangles). For instance the front face - top left vertex would have texture coordinates of 0,0 for the two triangles of the front face, but for the top face I would want that vertex to have texture coordinates of 0,1, and for the left face I would want that vertex to have texture coordinates of 1,0.
To try and solve this problem I just decided to create another vertex buffer to hold the 4 different texture coordinates and setup the input layout to read the texture coordinates from that buffer. Then I saw that you could only bind one index buffer...The only compromise I see right now is to create 24 vertices instead of 8, where each vertex has 3 permutations of texture coordinates depending on which face of the cube it is being rendered from.
So I'm curious as to whether there is a better way to structure your buffers so that you wouldn't need one large buffer of 24 vertices for a textured cube which really only has 8 vertices?
Thanks for the help.