例如,如果我创建一个像素数组,如下所示:
int *getPixels()
{
int *pixels = new int[10];
pixels[0] = 1;
pixels[1] = 0;
pixels[1] = 1;
// etc...
}
glTexImage2D(..., getPixels());
glTexImage2D 是否使用该引用或将像素复制到它自己的内存中?
如果答案是前者,那么我应该执行以下操作吗?
int *p = getPixels();
glTexImage2D(..., p);
/* Just changed to delete[], because delete
* would only delete the first element! */
delete[] p;
从这段引用中man page http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/teximage2d.html,听起来glTexImage2D分配了自己的内存。
这是有道理的,理想情况下 OpenGL API 会发送数据以存储在显卡本身上(如果驱动程序/实现/等允许)。
在 GL 版本 1.1 或更高版本中,像素可能是空指针。
在这种情况下,纹理内存被分配来容纳纹理
宽度 宽度 和 高度 高度。然后您可以将子纹理下载到
初始化该纹理内存。如果用户尝试,则图像未定义
应用纹理的未初始化部分
图像到基元。
所以是的,我想一旦生成了纹理,释放内存就没有什么坏处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)