There are 2 triangles lying not in the same plane, represented by 4 vertices (for example, VertexPositionNormalTexture). The triangles themselves are given by six indices (the triangles have one common face). Two tops of four are common. Normals, as is known, are defined for each vertex. And for adjacent vertices, we need 2 normals each (it is required that there be a clear line between the triangles). How in this case to set for some vertices more than one normal?

    1 answer 1

    A normal is a property of a vertex (as is its location). To get a sharp edge, you need different normals. So - you need 6 vertices.

    Separate the vertices, leave them the same location, make different normals and build a triangle on each triple of vertices.

    Usually everyone does that. Do not worry about the extra geometry, any modern video card, grinding tops by the millions, is not a burden.

    • Of course, the option of displaying faces through TriangleList solves this problem, but I thought that once they thought up to save vertices through indices or through TriangleStrip, there is also some option for normals in this case - Pustota
    • You can still save peaks, for example, if you have a large model with a few sharp edges. Also, the separation of vertices is often necessary when using UV maps with gaps. - Kromster