2013-02-11 102 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