【发布时间】:2015-12-03 20:54:15
【问题描述】:
对不起标题,我不知道怎么说。
但是,我有一个声明为私有的 int(GLuint 但通常是相同的) 数组。
在一个函数中,我将一个元素(在本例中为纹理)添加到数组中,当我打印它时,它很好。
但是当我在另一个函数中打印第一个元素时(在数组所在的同一个类中)它消失了,只有 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];
}
【问题讨论】:
-
你能显示更多代码吗?特别是似乎使它消失的打印代码。 (stackoverflow.com/help/mcve)
-
@AndyM 我编辑了问题,希望对您有所帮助
-
您可能复制了
Window类。尝试定义一个私有复制构造函数,看看编译器是否开始抱怨。 -
您的意思是让
getTexture打印texture[0]或texture[index]? -
@Andy M 这实际上是为了返回图像以供另一个类使用,但我只是使用该函数找出数组元素(0)的值。