2016-06-16 2 views
2

GLXコンテキストからピクセルを読み取ろうとしています。ここで私は、私は、単純な三角形をレンダリングしていると私は、glReadPixelsでそのバッファを読みたい文脈GLXコンテキストフレームバッファ読み出し

int Attributes[] = 
{ 
    GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT, 
    GLX_RENDER_TYPE, GLX_RGBA_BIT, 
    GLX_DOUBLEBUFFER, GL_TRUE, 
    GLX_RED_SIZE,  8, 
    GLX_GREEN_SIZE, 8, 
    GLX_BLUE_SIZE,  8, 
    None 
}; 

visual = glXChooseVisual(display, 
           DefaultScreen(display), 
            Attributes); 


if (visual == NULL) 
{ 
    return -1; 
} 

glxContext = glXCreateContext(display, visual, NULL, GL_TRUE); 


XLockDisplay(displayGLX_); 

int result = glXMakeCurrent(display, windowHandle, glxContext); 

XInitThreads(); 

を作成しています方法です。それを行う可能性はありますか?スワップ前glReadPixelsよう

glReadBuffer(GL_BACK); 

glXSwapBuffers(display, windowHandle); 

、その後、私は

glReadPixels 

答えて

3

いけないスワップ第一を呼んでいる、あなたは

+0

...、BACKバッファから読ま私でしたが、私はこの のようなエラーが発生しています '[xcb]デキュー中にキューに不明な要求があります [xcb]これはマルチスレッドクライアントであり、XInitThreadsが呼び出されていない可能性があります [xcb]中止しました。 nxplayer.bin:xcb_io.c:188:dequeue_pending_request:アサーション!xcb_xlib_unknown_req_in_deq 'failed.' 私は既にXInitThreads()を呼び出しました。 – Alatriste

+0

@Alatriste:XInitThreads **は、プログラムがマルチスレッドXlib呼び出しを行う場合、他のXlib関数の前に呼び出さなければなりません。あなたのプログラムの途中で電話をかけることはできません。 – datenwolf

関連する問題