【问题标题】:OpenGL ES OBJ Loading Transparency IssuesOpenGL ES OBJ 加载透明度问题
【发布时间】:2011-09-26 10:29:08
【问题描述】:

您好,我正在开发用于 iOS 编程的 OBJ 加载器,我已经设法加载了顶点和面,但我遇到了面的透明度问题。

对于我现在刚刚制作的顶点的颜色,从0到1不等。所以每个顶点会逐渐从黑色变为白色。问题是白色顶点和面似乎出现在黑色顶点和面之上。顶点越暗,它们看起来覆盖得越多。

有关这方面的说明,请参阅我在此处发布的视频 http://youtu.be/86Sq_NP5jrI> 这里的模型由两个立方体组成,一个大立方体和一个小立方体连接到一个角落。

【问题讨论】:

    标签: objective-c ios opengl-es transparency


    【解决方案1】:

    如何为顶点指定颜色?我假设你有 RGBA 渲染目标。所以你需要像这样设置颜色:

    struct color
    {
        u8 r, g, b, a;
    };
    
    color newColor;
    newColor.a = 255;//opaque vertex, 0 - transparent
    //other colors setup
    

    【讨论】:

    • 嗨,颜色存储在一个大的浮点数组中;所以对于 3 个顶点,我将有一个包含 3 个顶点 * RGBA = 12 个值的数组,然后将其作为“颜色”输入到渲染中 glColorPointer(colorStride, GL_FLOAT, 0, colors); glEnableClientState(GL_COLOR_ARRAY);每个第 4 个值 (Alpha) 设置为 1.0 以实现零透明度。
    • 只是一个提示 - 如果您将 4 个无符号字节用于颜色(4 个字节)与 4 个浮点数(12 个字节)的空间减少 3 倍,那么您可以节省大量空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多