我试图为我的openGL项目创建一个textureLoader类,我不能在我的类构造函数中初始化一个纹理数组,因为该数组不会接受任何东西,除非它&#39 ; sa const int。
为您描绘一幅简单的图片......
myFunction(NUM)
{
GLuint textures[NUM];
}
我的过去失败
myConstructor(const int& num)
{
GLuint textures[num] //error: expression must have a constant value
}
myConstructor(int num)
{
std::vector <GLuint> textures(num);//works but wait
glGenTextures(num, textures) // <--- doesn't work cause vectors.
}
myConstructor(int num)
{
const int PLEASE_WORK = num;
GLuint textures[PLEASE_WORK]; // doesn't work.
答案 0 :(得分:3)
您的第二个选项已关闭,您可以通过调用.data()
来获取向量的基础数组
myConstructor(int num)
{
std::vector <GLuint> textures(num);
glGenTextures(num, textures.data());
}
假设glGenTextures
有一个像
void glGenTextures(int, GLuint*)
我对这个功能一无所知,但要小心谁拥有该阵列。 vector
将在构造函数之后超出范围,因此我希望glGenTextures
将复制它所需的任何内容。否则,如果数组需要持久化
myConstructor(int num)
{
GLuint* textures = new GLuint[num];
glGenTextures(num, textures);
}
但是我不确定是谁应该清理那段记忆。