2013-01-13 80 views
1

我看着約glReadPixels多個教程,但我感到困惑:glReadPixels用法與glPixelStore

空隙glReadPixels(閃爍的x,閃爍Y,GLsizei寬度,高度GLsizei,GLenum格式,GLenum類型,GLvoid *數據)

最後一個參數是void? 我看到了教程,他們宣佈參數爲矢量,無符號字符,GLubyte,... 但它是什麼意思? 你需要調用glPixelStoref(,)嗎?

回答

3

A void*是C/C++代表「指向內存塊的指針」。 glReadPixels的目的是獲取framebuffer的一部分,並將該像素數據寫入內存。 data參數是它寫入的「你的記憶」。

究竟什麼寫入以及如何很大程度上取決於pixel transfer parametersformattype。這就是爲什麼它需要一個void*;因爲它可能會寫入字節數組,int數組,浮點數組等等。這完全取決於這兩個參數所說的內容。

+0

我會添加一件事(這可能會有所幫助)是,您不能在antialiased緩衝區上使用glReadPixels。這意味着您可能需要創建擁有場景副本的自己的屏幕外緩衝區,但禁用了AA。 –