2011-10-20 32 views
5

Tôi đã cố gắng tạo một động cơ 2.5D có chiều sâu và kết cấu bản đồ bình thường trong vài tuần nay, không giống như những gì được sử dụng ở đây Linky. Sau khi nghĩ rằng bản vẽ chiều sâu trong shader fragment từ texture là không thể vì ES 2.0 thiếu biến gl_fragDepth, tôi tìm thấy một hướng dẫn cho iOS nơi họ sử dụng glBlendEquation với chế độ GL_MIN/GL_MAX để "fake" depth buffer của fragment đến kết cấu khung hình chữ nhật Linky. GLES20.glBlendEquation không may làm cho ứng dụng gặp sự cố trên cả hai điện thoại của tôi (SGS 1/2) với UnsupportedOperationException. Vì vậy, tôi tự hỏi liệu có ai đã sử dụng chức năng này cho bất kỳ thành công nào không? GL_MIN/GL_MAX cũng dường như bị thiếu trong thông số kỹ thuật Android Opengl ES 2.0 nên Im có lẽ không may mắn ở đây ... Bất kỳ ý tưởng nào?Android GLES20.glBlendEquation không hoạt động?

BTW Dường như nó hoạt động trong GL11Ext nhưng vì Im sử dụng trình đổ bóng phân đoạn để ánh xạ bình thường, điều này sẽ không hoạt động từ tôi.

+0

Bạn đã bao giờ tìm thấy giải pháp cho điều này chưa? – Jave

+0

@jave Không, tôi chưa xem xét điều này nữa, cũng không có bất kỳ phản hồi nào trên bất kỳ diễn đàn nào. Vì vậy, giả định của tôi là nó không được thực hiện trong Android OpenGL ES 2.0. Có lẽ điều này đã được sửa trong các phiên bản mới hơn của hệ điều hành? Tôi đã thử nghiệm điều này bằng cách sử dụng hệ điều hành android v2.3. –

+0

Ok, tôi đã gặp phải vấn đề này một vài ngày trước, nhưng cũng không tìm được giải pháp. (Sử dụng Android 2.2 bằng cách này). Nếu bạn giải quyết vấn đề, tôi muốn xem bạn đã làm như thế nào. – Jave

Trả lời

1

tôi đã được thử nghiệm trên máy tính bảng Vega của tôi (Tegra) và điều này đã làm việc cho tôi:

fragment shader:

#extension GL_NV_shader_framebuffer_fetch : require 
// makes gl_LastFragColor accessible 

precision highp float; 

varying vec2 v_texcoord; 

uniform sampler2D n_sampler; 

void main() 
{ 
    vec4 v_tex = texture2D(n_sampler, v_texcoord); 
    gl_FragColor = min(gl_LastFragColor, v_tex); // MIN blending 
} 

Khá dễ dàng, huh? Nhưng tôi sợ điều này sẽ chỉ là NV.

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