在Vertex Buffer Object中插入数据

时间:2015-10-23 22:18:52

标签: c++ opengl vector vbo

我正在创建一个模板类,以便初始化VBO并用不同类型的数据填充它,即2d向量,3d向量,索引等。 值被传递给std:vector中的类构造函数,然后,据我所知,所有这些都必须在一个浮点数组中连接起来,以便将它们推送到VBO中。

假设我有一个像这样的3d矢量类:

class Vector3
{
public:
    GLfloat* Values;


public:
    Vector3(GLfloat x, GLfloat y, GLfloat z)
    {
        Values = new GLfloat[3];
        Values[0] = x;
        Values[1] = y;
        Values[2] = z;

    }

    ~Vector3() { delete Values}

    static int Size() { return 3; };

    ...
};

然后是带有此构造函数的模板类

template <class T1> class VBO
{
public:
    VBO(std::vector<T1*> v_array)
    {

        int s = T1::Size();
        GLfloat *map = new GLfloat[v_array.size() * s];

        int pos = -s;
        for (std::vector<T1*>::iterator it = v_array.begin(); it != v_array.end(); ++it)
            std::copy((*it)->Values, (*it)->Values + s, map + (pos += s));

        ...

    }
};

现在我可以使用'map'使用glBufferData

在VBO中推送数据

我的问题是。有一个更好的方法吗?说,是否有可能直接在VBO中推送std :: vector v_array?

0 个答案:

没有答案