我发现了这个话题: 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的数据长度不应该属于编译器的工作范围吗?