尝试在另一个函数中打印时删除了C ++私有数组元素

时间:2015-12-03 20:54:16

标签: c++ arrays opengl int

我很抱歉这个头衔,我不知道怎么说。

但是,我有一个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];
}

1 个答案:

答案 0 :(得分:0)

当我在每个类中定义构造函数并将该对象传递给调用initTextures的类时,它工作正常。现在它有效,谢谢大家! :d