将像素传递给 glTexImage2D() 后会发生什么?

2024-05-07

例如,如果我创建一个像素数组,如下所示:

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(使用前将#替换为@)

将像素传递给 glTexImage2D() 后会发生什么? 的相关文章

随机推荐