在打开的GL ES1中为iphone绘制一个立方体

时间:2010-11-04 19:55:02

标签: iphone c++ opengl-es 3d

你好友好的电脑人,

我一直在用iPhone 3D programming from O'Reilly一书研究openGL。下面我发布了一个示例,其中显示了如何绘制圆锥体。我仍然试图绕过它,这有点困难,因为我不熟悉C ++。

无论如何,我想做的是画一个立方体。任何人都可以建议用绘制一个简单的立方体来替换以下代码的最佳方法吗?

const float coneRadius = 0.5f;
const float coneHeight = 1.866f;
const int coneSlices = 40;

{
    // Allocate space for the cone vertices.
    m_cone.resize((coneSlices + 1) * 2);

    // Initialize the vertices of the triangle strip.
    vector<Vertex>::iterator vertex = m_cone.begin();
    const float dtheta = TwoPi / coneSlices;
    for (float theta = 0; vertex != m_cone.end(); theta += dtheta) {

        // Grayscale gradient
        float brightness = abs(sin(theta));
        vec4 color(brightness, brightness, brightness, 1);

        // Apex vertex
        vertex->Position = vec3(0, 1, 0);
        vertex->Color = color;
        vertex++;

        // Rim vertex
        vertex->Position.x = coneRadius * cos(theta);
        vertex->Position.y = 1 - coneHeight; 
        vertex->Position.z = coneRadius * sin(theta);
        vertex->Color = color;
        vertex++;
    }
}

感谢所有帮助。

2 个答案:

答案 0 :(得分:1)

如果您想要的只是一个OpenGL ES 1.1多维数据集,我创建了一个示例应用程序(具有纹理并允许您使用手指旋转它),您可以获取here的代码。我在iTunes U上为我的课程的OpenGL ES会话生成了这个示例(我已经修复了你在该类视频中看到的破碎纹理渲染)。

作者在本书中演示如何用C ++构建通用的3-D引擎,因此他的代码比我的代码更多。在这部分代码中,他在与coneSlices对应的多个步骤中循环从0到2 * pi的角度。您可以使用与我的示例应用程序中的顶点相对应的一系列手动顶点添加来替换他的循环,以便绘制立方体而不是他的圆锥。您还需要删除其他地方用于绘制圆锥底部的代码。

答案 1 :(得分:0)

在OpenGLES 1中,你可能会使用glVertexPointer绘制一个cub来提交几何体和glDrawArrays来绘制立方体。请参阅以下教程:

http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html

OpenGLES是一个基于C的库。