请问OpenGL绘制球面不完整如何解决

#include<GL/glut.h>
#include<math.h>
#include<iostream>
#define DEPTH 4
using namespace std;

GLfloat tetrahedron_vertex[][3] = {
	 0.0f,		 0.0f,		 1.0f,
	 1.0f,		 0.0f,		 0.0f,
	-1.0f,		 0.0f,		 0.0f,
	 0.0f,	   -1.0f,		 0.0f,
	 0.0f,		 1.0f,		 0.0f,
	 0.0f,		 0.0f,		 -1.0f
};

void normalize(GLfloat* v)
{
	GLfloat d = sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
	v[0] /= d; v[1] /= d; v[2] /= d;
}

void divide_triangle(GLfloat* a, GLfloat* b, GLfloat* c, int depth)
{
	if (depth > 0) {
		GLfloat ab[3], ac[3], bc[3];
		for (unsigned int i = 0; i < 3; i++)
			ab[i] = a[i] + b[i];
		normalize(ab);
		for (unsigned int i = 0; i < 3; i++)
			ac[i] = a[i] + c[i];
		normalize(ac);
		for (unsigned int i = 0; i < 3; i++)
			bc[i] = b[i] + c[i];
		normalize(bc);
		divide_triangle(a, ab, ac, depth - 1);
		divide_triangle(b, bc, ab, depth - 1);
		divide_triangle(c, ac, bc, depth - 1);
		divide_triangle(ab, bc, ac, depth - 1);
	}
	else {
		glBegin(GL_LINE_LOOP);
		glColor3f(sqrt(a[0] * a[0]), sqrt(a[1] * a[1]), sqrt(a[2] * a[2]));
		glVertex3fv(a);
		glVertex3fv(b);
		glVertex3fv(c);
		glEnd();
	}
}

void display()
{
	// 设置逆时针排列的点围成的平面为正面
	glFrontFace(GL_CCW);
	// 设置不绘制背面,节省算力同时不会出现背面覆盖正面的情况
	glCullFace(GL_BACK);
	glEnable(GL_CULL_FACE);
	// 设置背景为白色
	glClearColor(1.0, 1.0, 1.0, 1.0);
	glClear(GL_COLOR_BUFFER_BIT);
	// 加载单位阵
	glLoadIdentity();
	// 设置相机的位置和视角
	// 有关gluLookAt:https://blog.csdn.net/Augusdi/article/details/20470813
	gluLookAt(2, 2, 2, 0.0, 0.0, 0.0, -1, -1, 1);
	divide_triangle(tetrahedron_vertex[0], tetrahedron_vertex[2], tetrahedron_vertex[1], DEPTH);
	divide_triangle(tetrahedron_vertex[0], tetrahedron_vertex[3], tetrahedron_vertex[2], DEPTH);
	divide_triangle(tetrahedron_vertex[0], tetrahedron_vertex[1], tetrahedron_vertex[4], DEPTH);
	divide_triangle(tetrahedron_vertex[0], tetrahedron_vertex[4], tetrahedron_vertex[3], DEPTH);
	divide_triangle(tetrahedron_vertex[5], tetrahedron_vertex[2], tetrahedron_vertex[1], DEPTH);
	divide_triangle(tetrahedron_vertex[5], tetrahedron_vertex[3], tetrahedron_vertex[2], DEPTH);
	divide_triangle(tetrahedron_vertex[5], tetrahedron_vertex[1], tetrahedron_vertex[4], DEPTH);
	divide_triangle(tetrahedron_vertex[5], tetrahedron_vertex[4], tetrahedron_vertex[3], DEPTH);
	
	
	glutSwapBuffers();
}

// 窗口大小自适应函数,使得窗口大小改变时仍保持图形的比例不变
// 有关窗口自适应函数:http://blog.sina.com.cn/s/blog_5497dc110102w8qh.html
void reshape(int w, int h)
{
	glViewport(0, 0, (GLsizei)w, (GLsizei)h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	gluLookAt(3, 3, 3, 0.0, 0.0, 0.0, -1, -1, 1);
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	// 设置双缓冲和RGB颜色模式
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
	// 设置窗口大小、位置和名称
	glutInitWindowSize(500, 500);
	glutInitWindowPosition(100, 100);
	glutCreateWindow("sphere");
	// 设置绘制函数、窗口大小自适应函数
	glutDisplayFunc(display);
	glutReshapeFunc(reshape);
	// 进入主循环
	glutMainLoop();
	return 0;
}

开始基于:

https://blog.csdn.net/JeremyZhao1998/article/details/107032447/?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-4&spm=1001.2101.3001.4242

这位大佬的代码,改动了两处,一个是初始多面体选择了正八面体,后面的三角形也因此添加了4个,但是最后生成的球面却只有一半,请问这是什么原因导致的,是我添的代码逻辑有问题还是其他原因(左图为原贴展示,右图为我自己改完后生成的结果

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^