GLFWimage如何管理数据?

时间:2019-09-29 19:03:00

标签: c++ class glfw soil

我发现了这个话题: GLFW SetWindowIcon 我想知道类GLFWimage如何管理其char *像素。类本身没有构造函数,因此它本身无法创建保存图片数据的数组。我只能将指针复制到预先创建的数据数组,但是本主题中的示例应该在加载数据后释放数据。我的猜测是glfwSetWindowIcon只是从GLFWimage指针复制数据。公平地说,我看不到图标[0] .pixels释放的只是从函数获取指针。我写了自己的类来加载图像。我将GLFWimage的值设置为此类中的数据。比我叫:glfwSetWindowIcon。然后我改变了里面的数据。图标停留在菜单栏和窗口的顶部栏上。由于在opengl中释放数据有许多相互矛盾的答案,这使我更加困惑。 这是我写的课。请记住,发送给其构造函数的文件必须预先剥离为原始数据:

class icon_gl{
public:
int width;
int height;
unsigned char * pixels;
bool failed;
int file_size;

icon_gl(int set_width, int set_height, string name){
    width = set_width;
    height = set_height;
    failed = 1;
    pixels = new unsigned char[set_width*set_height*4];
    ifstream file(name.c_str(), ios::binary);
    if(file.is_open()){
        file.seekg(0, ios::end);
        file_size = file.tellg();
    }
    if(file_size == set_width*set_height*4){
        failed =0;
        file.seekg(0, ios::beg);
        file.read((char*)pixels, set_width*set_height*4);
    }
}
~icon_gl(){
    delete[] pixels;
}
void import(GLFWimage * img_gl){
    img_gl->width=width;
    img_gl->height=height;
    img_gl->pixels = pixels;
}
};

这是主要的:

icon_gl icon32(32, 32, "iconimage.i");
GLFWimage ico_image;
icon32.import(&ico_image);
glfwSetWindowIcon(window, 1, &ico_image);

和a &&行为:

for (int i=0; i<32*32*4; i++)icon32.pixels[i] = 255;

问题:opengl如何管理其数据?也许您可以给我一些很好的链接?我正在寻找整个范围,而不是单个案例。 SOIL_free_image_data如何工作?只是错误还是以某种方式编辑指针参数(数据长度)?管理Poiner的数据长度不应该属于编译器的工作范围吗?

0 个答案:

没有答案