2013-02-11 3 views
0

Есть ли способ получить размер контекста opengl? Или, по крайней мере, оценить его размер? Если да, то как?Размер контекста OpenGL

У меня есть приложение в перенасыщении, которое создает несколько окон. Поскольку glut не разделяет контекст opengl между окнами, каждое окно будет создавать новое. Теперь я пытаюсь сократить необходимую память, поскольку она предназначена для встроенной системы. Но если контекст opengl достаточно мал, чтобы пренебрегать им, то я не увижу большого сокращения использования памяти.


Я нашел this patch создавать окна с общим контексте OPENGL:

Небольшое добавление для пользователей Windows, (по Мисбах Qidwai): Я добавил эту подпрограмму для glut_win.c. Я использую эту процедуру для вызова wglSharedLists()

//MQ 
/* CENTRY */ 
GLXContext APIENTRY 
glutGetWindowRenderContext(int win) 
{ 
    GLUTwindow *window; 

    if (win < 1 || win > __glutWindowListSize) { 
    __glutWarning("glutSetWindow attempted on bogus window."); 
    return NULL;            
    } 
    window = __glutWindowList[win - 1]; 
    if (!window) { 
    __glutWarning("glutSetWindow attempted on bogus window."); 
    return NULL;            
    } 
    return window->renderCtx; 
} 
+1

Какая «встроенная система» предлагает GLUT? Кроме того, как вы определяете «размер» контекста? –

+0

@NicolBolas Я работаю над пользовательской встроенной системой с процессором pentium, работающим на Fedora 15 с некоторыми RT-патчами. Размер контекста (я думаю) - это память, необходимая для контекста opengl. Вопрос в том, как его получить или хотя бы оценить? –

ответ

2

OpenGL контекстом является абстрактной вещью. Объем данных, поддерживающих конкретный контекст, может быть меньше указателя или до нескольких мегабайт. Сам контекст не является какой-то структурой данных, а просто ручкой, разделяемой вашей программой и графической системой, чтобы друг друга «знал» то, о чем говорит другой.

Единственный способ узнать в конкретной конфигурации - измерить его.

+0

Я боялся такого ответа. Есть ли способ его измерить? И знаете ли вы, какое влияние оно имеет? Количество и размер текстур, списков, вершин и т. Д.? –

+0

Запустите программу и посмотрите ее с помощью инструмента, такого как htop, чтобы получить грубый обзор. Для детального измерения используйте valgrind для сбора статистики о его профиле памяти. Каждый объект OpenGL потребляет некоторую память, т. Е. Все, что вы выделяете, с вызовом 'glGen ...(). В случае объектов хранения данных (текстуры, VBOs, PBO, шейдеры) объем потребляемой памяти зависит от данных. ФБО и ВАО являются абстрактными объектами, их потребление памяти также зависит от их параметров, но в гораздо более жестких границах. – datenwolf

Смежные вопросы