只有一半的球体画

时间:2015-10-26 01:01:43

标签: c++ opengl

我正在尝试画一个球体,我是OpenGL的首发,我正在关注一个网站,并试图根据我的需要转换东西,但它甚至不到一半的范围。我写的代码是

for(unsigned int stackNumber = 0; stackNumber <= stacks; ++stackNumber)
{
    for (unsigned int sliceNumber = 0; sliceNumber < slices; ++sliceNumber)
    {
        float theta = stackNumber * PI / stacks;
        float phi = sliceNumber * 2 * PI / slices;
        float sinTheta = std::sin(theta);
        float sinPhi = std::sin(phi);
        float cosTheta = std::cos(theta);
        float cosPhi = std::cos(phi);
        vertex.xyzw[0] = radius * cosPhi * sinTheta;
        vertex.xyzw[1] = radius * sinPhi * sinTheta;
        vertex.xyzw[2] = radius * cosTheta;
        //vertex.xyzw[3] = 0.0f;

        vertices.push_back(vertex);
    }
}
int n = 0;
//int x = stacks*(slices + 1)*2;

//index = new GLuint[x];

for (unsigned int stackNumber = 0; stackNumber < stacks; ++stackNumber)
{   
    for (unsigned int sliceNumber = 0; sliceNumber <= slices; ++sliceNumber)
    {
        index.push_back((stackNumber * slices) + (sliceNumber % slices));
        index.push_back(((stackNumber + 1) * slices) + (sliceNumber % slices));
    }
}   

但是它只绘制了球体的一半,但是当我运行导师制作的代码时,它会绘制完整的球体,我应该添加什么以使它成为完整的球体。

目前我没有使用GL深度测试或投影,视图等任何东西。尽量让它尽可能简单,因为我只是一个启动器。想逐步增加所有内容。我在glDrawElements中绘制元素直到index.size()。

另外我想提一下我正在使用TRIANGLE_STRIP

glVertexPointer(3, GL_FLOAT, 0, (char*)NULL + 0);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawElements(GL_TRIANGLE_STRIP, index.size(), GL_UNSIGNED_SHORT, (char*)NULL + 0);

这就是我所得到的 enter image description here

0 个答案:

没有答案