簡體   English   中英

glReadPixels不起作用

[英]glReadPixels doesn't work

我正在嘗試使用glReadPixels從像素獲取數據。 它工作了一段時間。 但是現在它停止工作了,我不知道為什么。

我需要制定Flood fill算法。

glBegin(GL_POINTS);

    float target[3] = { 1.0, 1.0, 0.0 }; // target color
    float border[3] = { 1.0, 1.0, 1.0 }; // border color
    float clearp[3] = { 0.0, 0.0, 0.0 }; // clear color
    std::stack<pixel*> colored; // stack with pixels
    if (!stack.empty()) // stack contains first pixel
        colored.push(stack.top());

    while(!colored.empty()) {

        pixel *p = colored.top();
        glRasterPos2i(p->x, p->y); 
        glDrawPixels(1, 1, GL_RGB, GL_FLOAT, target);
        colored.pop();

        //up
        float pix[3];
        glReadPixels(p->x, p->y + 1, 1, 1, GL_RGB, GL_FLOAT, pix);
        if (!compare(pix,border) && compare(pix,clearp)) {
            pixel *pn = new pixel();
            pn->x = p->x;
            pn->y = p->y + 1;
            colored.push(pn);
        }
        //down
        glReadPixels(p->x, p->y - 1, 1, 1, GL_RGB, GL_FLOAT, pix);
        if (!compare(pix,border) && compare(pix,clearp)) {
            pixel *pn = new pixel();
            pn->x = p->x;
            pn->y = p->y - 1;
            colored.push(pn);
        }

        //left
        glReadPixels(p->x - 1, p->y, 1, 1, GL_RGB, GL_FLOAT, pix);
        if (!compare(pix,border) && compare(pix,clearp)) {
            pixel *pn = new pixel();
            pn->x = p->x - 1;
            pn->y = p->y;
            colored.push(pn);
        }

        //right
        glReadPixels(p->x + 1, p->y, 1, 1, GL_RGB, GL_FLOAT, pix);
        if (!compare(pix,border) && compare(pix,clearp)) {
            pixel *pn = new pixel();
            pn->x = p->x + 1;
            pn->y = p->y;
            colored.push(pn);
        }

    }
glEnd();

但是數組pix不包含RGB顏色數據。 通常是這樣的-1.0737418e+008

問題出在哪兒? 它應該工作正常...

調用glBeginglEnd之間的函數集非常有限,這是一個錯誤。 該列表主要由與指定頂點屬性相關的函數組成(例如glVertexglNormalglColorglTexCoord等)。

因此,如果您的OpenGL實現遵循OpenGL規范,則glReadPixels應該立即返回而不執行,因為在glBegin/glEnd組中被調用了。 從通話中刪除那些電話, glReadPixels應該可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM