2013-02-11 145 views
0

有沒有辦法獲得opengl上下文的大小?或者至少估計它的大小?如果是,如何?OpenGL上下文的大小


我在glut中有一個應用程序,它創建了幾個窗口。由於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?另外,你如何定義上下文的「大小」? – 2013-02-11 09:15:39

+0

@NicolBolas我正在使用奔騰CPU定製嵌入式系統,運行帶有一些RT補丁的fedora 15。上下文的大小(我猜)是一個opengl上下文所需的內存。問題是:如何得到它或至少估計? – 2013-02-11 09:45:41

回答

2

一個OpenGL上下文是一個抽象的東西。支持特定上下文的數據量可以像指針一樣小,或者像幾兆字節一樣大。上下文本身並不是某種數據結構,它只是程序和圖形系統共享的句柄,以便彼此「知道」對方在說什麼。

要知道特定配置的唯一方法就是測量它。

+0

我很害怕這樣的答案。有沒有辦法衡量它?你知道它的影響力嗎?紋理,列表,頂點等的數量和大小? – 2013-02-11 10:14:46

+0

啓動程序並使用htop等工具觀看它以獲得粗略概覽。有關詳細測量,請使用valgrind收集有關其內存配置文件的統計信息。每個OpenGL對象都會消耗一些內存,即所有您使用'glGen ...()'調用分配的內存。在數據保持對象(紋理,VBO,PBO,着色器)的情況下,消耗的內存量取決於數據。 FBO和VAO是抽象對象,它們的內存消耗也取決於它們的參數,但在更嚴格的邊界內。 – datenwolf 2013-02-11 13:18:25