旋转球体与纹理iOS

时间:2012-04-23 19:47:14

标签: iphone ios opengl-es

我知道它的基本问题,但我找不到我要找的答案。基本上我必须在相机覆盖上显示旋转的3D球体。除了将纹理应用于该球体外,我得到了所有东西。这是我生成三角形条带的代码。

int createSphere (GLfloat spherePoints[], GLfloat fRadius, GLfloat step){   
    int points = 0;

    GLfloat uStep = DEGREES_TO_RADIANS (step);
    GLfloat vStep = uStep;

    for (GLfloat u = 0.0f; u <= (2 * M_PI); u += uStep) {
      for (GLfloat v = -M_PI_2; v <= M_PI_2; v += vStep) {

        points++;
        spherePoints[(points - 1) * 3] = fRadius * cosf(v) * cosf(u);             // x
        spherePoints[((points - 1) * 3) + 1] = fRadius * cosf(v) * sinf(u);       // y
        spherePoints[((points - 1) * 3) + 2] = fRadius * sinf(v);                 // z

        points++;
        spherePoints[(points - 1) * 3] = fRadius * cosf(v) * cosf(u + uStep);             // x
        spherePoints[((points - 1) * 3) + 1] = fRadius * cosf(v) * sinf(u + uStep);       // y
        spherePoints[((points - 1) * 3) + 2] = fRadius * sinf(v);                         // z

        points++;
        spherePoints[(points - 1) * 3] = fRadius * cosf(v + vStep) * cosf(u);                  // x
        spherePoints[((points - 1) * 3) + 1] = fRadius * cosf(v + vStep) * sinf(u);            // y
        spherePoints[((points - 1) * 3) + 2] = fRadius * sinf(v + vStep);                      // z

        points++;
        spherePoints[(points - 1) * 3] = fRadius * cosf(v + vStep) * cosf(u + uStep);           // x
        spherePoints[((points - 1) * 3) + 1] = fRadius * cosf(v + vStep) * sinf(u + uStep);     // y
        spherePoints[((points - 1) * 3) + 2] = fRadius * sinf(v + vStep);                       // z
      }
    }
    return points; 
}

有人可以解释如何生成纹理坐标和法线吗?

0 个答案:

没有答案