2011-07-03 73 views
5
不讀取深度緩衝值,我似乎

無法讀取的iOS 4.3在OpenGL ES2深度緩衝值glReadPixels在iOS

afDepthPixels = (float*)malloc(sizeof(float) * iScreenWidth * iScreenHeight); 
glReadPixels(0, 0, iScreenWidth, iScreenHeight, GL_DEPTH_COMPONENT, GL_FLOAT, afDepthPixels); 

我的深度緩衝到位和運行當前綁定的,但是這函數只讀取0值,並且它幾乎立即返回。如果我給它一個GL_RGBA,它將需要相當長的時間,並且確實會返回結果。 iOS中的ES2不支持此功能嗎?

謝謝!

回答

5

正如你所猜測的,在ES 2.x中不支持讀取深度緩衝區。根據glReadPixels man page(直接來自Khronos),ES 2中'格式'的唯一允​​許值是GL_ALPHA,GL_RGBA和GL_RGB。

從內存來看,近期iOS版本支持深度紋理,所以應該可以運行像素着色器來將深度緩衝區轉換爲可以作爲RGBA讀取的內容,除非您處於死路一條。