A naive approach to creating a mesh from a heightmap can lead to inconsistent results.

If we consider the 4 adjacent points around one pixel of the heightmap, they cannot be formed into a quad because they will not necessarily fit on the same plane.

We need to split the quad into two triangles, and there are two different ways to do this, by splitting along either of the two diagonals:

If we always pick the same diagonal, this creates inconsistent looking results on smaller heightmaps.

I think OpenGL works this way if you use GL_QUADS. There is no "correct" diagonal to pick.

In order to resolve this, you could place an extra vertex at the center of the quad, and then draw 4 triangles instead of 2.

Delaunay triangulation is another potential solution to this problem by getting rid of the pixel grid entirely.