我很抱歉这个头衔,我不知道怎么说。
但是,我有一个int(GLuint但它通常是相同的)数组声明为private。
在函数中,我向数组添加一个元素(在本例中为纹理),当我打印它时,它很好。
但是当我在另一个函数中打印第一个元素时(在数组所在的同一个类中),它就消失了,只有0(我认为当你声明一个没有元素的整数数组时它是默认值0)!
数组:
private:
GLuint texture[20];
我正在打印第一个元素(我刚刚在该函数中添加),但在另一个函数中元素就消失了。我在头文件中声明了数组。
这还不够,还是我需要显示更多代码(也是OpenGL的东西)?
提前致谢。
修改:
元素打印正确的功能:
void Window::initTextures(const char * imgPath, int index){
//SDL TEXTURE TO CONVERT
SDL_Surface * surface = IMG_Load(imgPath);
//GENERATING THE TEXTURE
glGenTextures(1, &texture[index]); //THIS STORES THE IMAGE IN THE ARRAY
glBindTexture(GL_TEXTURE_2D, texture[index]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
std::cout << texture[0] << std::endl; //THIS PRINTS THE ELEMENT
//CHECKING IF RGB OR RGBA FORMAT
if (surface->format->BytesPerPixel == 4) {
glTexImage2D(GL_TEXTURE_2D, 0, surface->format->BytesPerPixel, surface->w, surface->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels);
}else {
glTexImage2D(GL_TEXTURE_2D, 0, surface->format->BytesPerPixel, surface->w, surface->h, 0, GL_RGB, GL_UNSIGNED_BYTE, surface->pixels);
}
//DESTROYING THE SURFACE(BECAUSE WE DONT NEED IT)
SDL_FreeSurface(surface);
test();
}
修改: 这是它只打印数组的默认值(0)的函数:
GLuint Window::getTexture(int index){
std::cout << texture[0];
return texture[index];
}
答案 0 :(得分:0)
当我在每个类中定义构造函数并将该对象传递给调用initTextures的类时,它工作正常。现在它有效,谢谢大家! :d