Opengl 如何在自定义对象中存储VBO

Opengl 如何在自定义对象中存储VBO,opengl,opengl-es,glkit,vertex-buffer,vertex-attributes,Opengl,Opengl Es,Glkit,Vertex Buffer,Vertex Attributes,我想以顶点缓冲区对象的形式在每个实例中存储我的Cat对象的顶点、法线和纹理信息,但我不知道如何存储。我想要这样的东西: @property(nonatomic, assign) int *indices; // vertex indices for glDrawElements @property(nonatomic, assign) GLKVertexAttrib vertexBufferObject; // ideally @property(assign) GLKVector2 posit

我想以顶点缓冲区对象的形式在每个实例中存储我的
Cat
对象的顶点、法线和纹理信息,但我不知道如何存储。我想要这样的东西:

@property(nonatomic, assign) int *indices; // vertex indices for glDrawElements
@property(nonatomic, assign) GLKVertexAttrib vertexBufferObject; // ideally
@property(assign) GLKVector2 position;
@property(assign) GLKVector2 velocity;
如果无法创建包含特定VBO的对象,该怎么办?

我最后做了以下工作:

@property(nonatomic, assign) int *indices;
@property(nonatomic, assign) GLuint vertexBuffer; // good
@property(assign) GLKVector2 position;
@property(assign) GLKVector2 velocity;

- (id)initWithVertices: (SceneVertex [])vertices size: (uint) size; // very good
- (void)render;
然后这个:

- (id) initWithVertices:(SceneVertex [])vertices size:(uint)size
{
    if (self = [super init])
    {
        glGenBuffers(1, &_vertexBuffer);
        glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);

        glBufferData(GL_ARRAY_BUFFER, size * sizeof(SceneVertex), vertices, GL_STATIC_DRAW);

        glEnableVertexAttribArray(GLKVertexAttribPosition);
        int stride = sizeof(GLKVector3) * 2;
        glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, stride, BUFFER_OFFSET(0));
        glEnableVertexAttribArray(GLKVertexAttribNormal);
        glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, stride, BUFFER_OFFSET(sizeof(GLKVector3)));
    }

    return self;
}
结果很好。现在,我的所有信息都包含在每个对象中。太棒了