При использовании glTexImage2D
для прикрепления текстур к объекту Framebuffer (FBO) я обнаружил, что использование памяти увеличивается в RAM .Похоже, что текстуры распределяются OpenGL не только на графическом процессоре, но и в основной памяти.Почему это происходит?
Имеет ли оно какое-либо применение?
Можно ли предотвратить выделение памяти в основной памяти?
Я использую следующие 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);
Почему это происходит?Я не понимаю, почему память должна создаваться в оперативной памяти, а не только в графическом процессоре.Есть ли лучшие / другие подходы?