Использование памяти glTexImage2D в ОЗУ (используется вместе с FBO) - PullRequest
0 голосов
/ 29 мая 2018

При использовании 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);

Почему это происходит?Я не понимаю, почему память должна создаваться в оперативной памяти, а не только в графическом процессоре.Есть ли лучшие / другие подходы?

...