我正在编写一个函数,它需要处理传递给它的任何类型的向量,而不管向量的内部类型如何。
该函数接受向量,查找元素的大小,然后将数据传递给GPU。
它看起来应该是:
void Object_3D::set_instance_data(Renderer* handler, vector<T> data)
{
glBindVertexArray(VAO);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, (VBOs[3]));
glBufferData(GL_SHADER_STORAGE_BUFFER, data.size()*sizeof(T),
data.data(), GL_DYNAMIC_COPY);
}但是,我无法编译这段代码。
发布于 2018-02-12 01:50:07
看起来,您需要按照以下一般顺序将其转换为模板成员函数:
template <class T>
void Object_3D::set_instance_data(Renderer* handler, vector<T> const &data)
{
glBindVertexArray(VAO);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, (VBOs[3]));
glBufferData(GL_SHADER_STORAGE_BUFFER, data.size()*sizeof(T),
data.data(), GL_DYNAMIC_COPY);
}当然,您必须将其声明为模板成员函数,而不仅仅是在没有声明的情况下定义它。旁白:尽管有其他方法来完成这项工作,但在使用模板时,通常最容易将定义(而不仅仅是声明)包含在标头中。
https://stackoverflow.com/questions/48738497
复制相似问题