RAM中的glTexImage2D内存使用(与FBO一起使用)

时间:2018-05-29 08:41:21

标签: opengl framebuffer fbo opengl-4 glteximage2d

使用glTexImage2D将纹理附加到帧缓冲区对象(FBO)时,我发现内存使用率在 RAM 中上升。看起来OpenGL不仅在GPU上而且在主存储器中分配纹理。 为什么会这样? 它有用吗?
可以防止主内存中的内存分配吗?

我正在使用以下GL调用将纹理附加到FBO:

auto internalformat = GL_RGBA32F;
auto format = GL_RGBA;
auto type = GL_FLOAT;
auto w = 1920;
auto h = 1080;

GLuint handle;
glGenTextures(1, &handle);
glTexImage2D(GL_TEXTURE_2D, 0, internalformat, w, h, 0, format, type, nullptr);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, handle, 0);

使用glTexStorage2D之后的情况也是如此(而不是glTexImage2D来电):

glTexStorage2D(GL_TEXTURE_2D, 1, internalformat, w, h);

为什么会这样?我不明白为什么必须在RAM中创建内存,而不仅仅是在GPU上。有更好/其他方法吗?

0 个答案:

没有答案