OpenGL "недостаточно памяти" на glReadPixels () - PullRequest
0 голосов
/ 14 марта 2010

Я сталкиваюсь с ошибкой «недостаточно памяти» от OpenGL на glReadPixels () в условиях нехватки памяти. Я пишу плагин для программы, которая имеет надежный механизм кучи для таких ситуаций, но я не знаю, можно ли сделать OpenGL или использовать его для управления памятью приложения. Идея, что это даже возможно, привлекла мое внимание в этой [хотя и устаревшей] теме по аналогичной проблеме в Mac OS [не X]: http://lists.apple.com/archives/Mac-opengl/2001/Sep/msg00042.html

Я использую Windows XP и видел ее на нескольких картах NVidia. Меня также интересуют любые обходные пути, которые я мог бы передать пользователям (поток упоминает «увеличение виртуальной памяти»).

Спасибо, Шон

Ответы [ 2 ]

1 голос
/ 15 марта 2010

Я совершенно уверен, что ошибка нехватки памяти не возникает из glReadPixels (в действительности glReadPixels не выделяет саму память).

Ошибка, вероятно, вызвана другими процедурами, выделяющими объекты буфера или текстуры. Как только вы обнаружите ошибку нехватки памяти, вы должны освободить все необязательные объекты буфера (текстуры, текстурные карты, редко используемые объекты буфера), чтобы выделить новый буферный объект, содержащий возвращенные данные glReadPixels.

0 голосов
/ 14 марта 2010

Без подробностей, сложно сказать. В конечном счете, OpenGL будет общаться с нативной ОС, когда она должна быть выделена. Так что, если ничего другого, вы всегда можете заменить (или перехватить) CRT / распределитель кучи по умолчанию для вашего процесса и заставить его получать блоки из «более надежного» менеджера кучи на хосте плагина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...