2012-07-16 75 views
0

我想用ImageMagick將OpenGL視圖保存爲圖像。我搜索了互聯網,發現了一些有關這方面的信息。所以我現在知道我需要使用glReadPixels。那好,但是如何從這些像素中產生圖像呢?glReadPixels到ImageMagick


現在的代碼如下所示:

char *buffer = (char*) calloc(viewHeight * viewWidth * 4, sizeof(char)); 
glReadPixels(0, 0, viewWidth, viewHeight, GL_RGBA, GL_BYTE, buffer); 
Blob b(buffer, 4 * viewWidth * viewHeight); 
Image saveimage(b); 
saveimage.write("subimageGcrop.png"); 

回答

1

當你閱讀使用glReadPixels像素,您需要將它們複製到blob對象。然後你可以創建Image對象,並寫入一個文件。

事情是這樣的:

char *buffer; // needs to be big enough 
    glReadPixels(0, 0, width, length, GL_BGR, GL_BYTE, buffer); 
    Blob b(buffer, 3 * width * length); 
    Image i(b, 3 * width * length, 3); 
    i.write("img.jpg"); 

您可能需要調整參數。

+0

我不知道爲什麼,但讀取blob數據時遇到SIGABRT錯誤 – hockeyman 2012-07-16 10:43:17

+0

@JuliusPetraška你可以在你的問題中發佈代碼(你有什麼試過)? – 2012-07-16 10:44:16

+0

是的。我發佈了它 – hockeyman 2012-07-16 10:46:46