2011-07-03 29 views
5

tôi dường như không thể đọc các giá trị chiều sâu đệm trong OpenGL ES2 trên iOS 4,3glReadPixels không đọc các giá trị depth buffer trên iOS

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

depth buffer của tôi hiện đang bị ràng buộc tại chỗ và hoạt động, tuy nhiên đó chức năng đọc không có gì nhưng giá trị 0, và nó có vẻ trở lại gần như ngay lập tức. Nếu tôi cung cấp cho nó một GL_RGBA, nó sẽ mất một thời gian, và thực sự sẽ trả về kết quả. Chức năng này có được hỗ trợ trong ES2 trên iOS không?

Cảm ơn!

Trả lời

5

Như bạn đoán, việc đọc bộ đệm độ sâu không được hỗ trợ trong ES 2.x. Theo số glReadPixels man page (trực tiếp từ Khronos), các giá trị cho phép duy nhất cho 'định dạng' trong ES 2 là GL_ALPHA, GL_RGBA và GL_RGB.

Từ bộ nhớ, kết cấu độ sâu được hỗ trợ trên các phiên bản iOS gần đây, vì vậy bạn có thể chạy trình đổ bóng pixel để chuyển đổi bộ đệm độ sâu thành thứ bạn có thể đọc dưới dạng RGBA nếu bạn đang ở đầu chết.

Các vấn đề liên quan