Название: QGLFramebufferObject в оперативной памяти? Отправлено: Torvald от Сентябрь 20, 2012, 18:55 Создаю QGLFramebufferObject. Он помещается в оперативную память видео карты. Но и в обычной оперативной памяти тоже остается. Почему? Он мне тут не нужен, пусть в видеокарточке сидит :)
И второй вопрос: как правильно его удалить? Создаю так: Код: fbo = new QGLFramebufferObject(width, height); Удаляю так: Код: delete fbo; Но останется ли при таком удалении буфер в видеопамяти? Название: Re: QGLFramebufferObject в оперативной памяти? Отправлено: RomanKravchenko от Сентябрь 21, 2012, 12:33 Вроде как, это буфер оперативной памяти. В видеокарте сидит только текстура. А почему не удалять деструктором?
QGLFramebufferObject::~QGLFramebufferObject () [virtual] Destroys the framebuffer object and frees any allocated resources. Название: Re: QGLFramebufferObject в оперативной памяти? Отправлено: mutineer от Сентябрь 21, 2012, 12:42 А почему не удалять деструктором? А delete разве не вызывает деструктор? Название: Re: QGLFramebufferObject в оперативной памяти? Отправлено: RomanKravchenko от Сентябрь 21, 2012, 13:07 А delete разве не вызывает деструктор? Ок. Тогда все понятно. Название: Re: QGLFramebufferObject в оперативной памяти? Отправлено: Torvald от Сентябрь 21, 2012, 13:21 delete вызывает деструктор конечно, но из памяти видеокарты текстура не удаляется. То есть ее похоже через deleteTexture надо.
Но все равно не понятно, почему вдруг буфер хранится в оперативной памяти? Он же должен быть в памяти видеокарты. Более того обнаружил, что в памяти видеокарты этот буфер занимает в два раза больше положенного объема. То есть размер буфера я считаю так: n*m*sizof(pixel) = 4096*4096*4 = 67 метров Буфер занимает в оперативной памяти 67 метров и в памяти видеокарты 134. Вот как так? Получается для него создается еще один буфер кадра? Приведу код по подробнее: cpp Код: Map::Map(QGLWidget *widget): gl(widget){ Код: class Map{ |