【问题标题】:Drawing a cube in open GL ES1 for the iphone在 iPhone 的 open GL ES1 中绘制一个立方体
【发布时间】:2010-11-04 19:55:02
【问题描述】:

你好友好的计算机人,

我一直在用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++;
    }
}

感谢所有帮助。

【问题讨论】:

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


    【解决方案1】:

    如果您只需要一个 OpenGL ES 1.1 立方体,我创建了这样一个示例应用程序(它具有纹理并允许您使用手指旋转它),您可以获取here 的代码。我在iTunes U 上为我的课程的 OpenGL ES 会话生成了这个示例(我已经修复了您在该课程视频中看到的损坏的纹理渲染)。

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

    【讨论】:

      【解决方案2】:

      在 OpenGLES 1 中,您可能会使用 glVertexPointer 来提交几何图形并使用 glDrawArrays 来绘制立方体来绘制一个幼崽。请参阅这些教程:

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

      OpenGLES 是一个基于 C 的库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多