[原][osg]Geometry详解

        //geometry成员变量
        PrimitiveSetList                _primitives;
        osg::ref_ptr<Array>             _vertexArray;    //顶点
        osg::ref_ptr<Array>             _normalArray;    //法线
        osg::ref_ptr<Array>             _colorArray;  //
        osg::ref_ptr<Array>             _secondaryColorArray;  //
        osg::ref_ptr<Array>             _fogCoordArray;  //
        ArrayList                       _texCoordList;  //纹理UV
        ArrayList                       _vertexAttribList;  //

        bool                            _containsDeprecatedData;    //

osgt文件中保存的格式:

osg::Geometry {
    UniqueID 2
    DataVariance STATIC
    StateSet TRUE {
        osg::StateSet {
            UniqueID 3
            DataVariance STATIC
            AttributeList 1 {
                osg::Material {
                    UniqueID 4
                    Ambient TRUE Front 1 1 1 1 Back 1 1 1 1
                    Diffuse TRUE Front 1 1 1 1 Back 1 1 1 1
                    Specular TRUE Front 0 0 0 1 Back 0 0 0 1
                    Emission TRUE Front 0 0 0 1 Back 0 0 0 1
                    Shininess TRUE Front 0 Back 0
                }
                Value OFF
            }
            TextureModeList 1 {
                Data 1 {
                    GL_TEXTURE_2D ON
                }
            }
            TextureAttributeList 1 {
                Data 1 {
                    osg::Texture2D {
                        UniqueID 5
                        DataVariance STATIC
                        WRAP_S CLAMP
                        WRAP_T CLAMP
                        WRAP_R CLAMP
                        MIN_FILTER LINEAR
                        MAG_FILTER LINEAR
                        UnRefImageDataAfterApply TRUE
                        Swizzle RGBA
                        Image TRUE {
                            ClassName osg::Image
                            UniqueID 6
                            FileName "Tile_1_L23_000001001000_0.dds"
                            WriteHint 2 2
                            DataVariance STATIC
                        }
                        TextureWidth 1024
                        TextureHeight 1024
                    }
                    Value OFF
                }
            }
        }
    }
    PrimitiveSetList 1 {
        osg::DrawElementsUInt {
            UniqueID 7
            Mode TRIANGLES
            vector 30450 {
                ........
            }
        }
    }
    VertexArray TRUE {
        osg::Vec3Array {
            UniqueID 8
            Binding BIND_PER_VERTEX
            vector 6681 {
                ........
            }
        }
    }
    TexCoordArrayList 1 {
        osg::Vec2Array {
            UniqueID 9
            Binding BIND_PER_VERTEX
            vector 6681 {
                ........
            }
        }
    }
}
View Code

 大致分析一下:

一个geometry包含:

  一个stateset

  一个primitive列表

  一个顶点数组

  一个纹理数组列表

stateset包含:attribute数组,纹理数组

primitive包含:绘制的图元信息:(绘制格式,顶点索引)

顶点数组包含:三维顶点位置信息

纹理数组包含:二维顶点UV信息

原文地址:https://www.cnblogs.com/lyggqm/p/9139999.html