2010-03-02 40 views

Trả lời

30

Tôi đã gặp sự cố tương tự, với một đoạn mã hoạt động chính xác và một mã khác không hoạt động. Sau nhiều lần đăng nhập và gỡ lỗi, tôi thấy rằng sự khác biệt là một dòng mã.

Trong mã có alpha hoạt động, tôi đã gọi những điều sau đây trước khi đặt trình kết xuất của tôi.

setEGLConfigChooser(false) 

Nếu điều đó không giúp đỡ, dưới đây là một vài gợi ý khác ...

Hãy chắc chắn rằng bạn đã kích hoạt trộn trước bạn tải các kết cấu.

Ví dụ:

// Enable blending using premultiplied alpha. 
    gl.glEnable(GL10.GL_BLEND); 
    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA); 

... và chắc chắn rằng bitmap mà bạn đang sử dụng để tạo ra các kết cấu thực sự có một thành phần alpha.

+0

Điều đó đã khắc phục sự cố cho tôi - cảm ơn rất nhiều! –

+0

cũng đã làm việc cho tôi, cảm ơn :) – nicoptere

+0

Bạn là một vị thần! – torger

1

Tôi đã có thể khắc phục sự cố của mình được liệt kê bằng một phương pháp khác. đầu tiên tôi đặt

gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE); 

Sau đó đã có thể thiết lập các alpha của một kết cấu sử dụng

gl.glColor4f 
1

Tiếp theo câu trả lời của Ron tôi đã gần gũi hơn với giải quyết vấn đề của tôi về tính minh bạch của kết cấu không hiển thị. Vấn đề tiếp theo tôi có là, tôi đã có một SurfaceView không GL đằng sau GLSurfaceView của tôi và bằng cách sử dụng:

setEGLConfigChooser(false); 

Tôi thấy kết cấu của tôi ổn nhưng toàn bộ SurfaceView của tôi bị bôi đen. Sau đây đã khắc phục sự cố của tôi:

setEGLConfigChooser(8, 8, 8, 8, 0, 0); 

Đặt sai làm tham số duy nhất là một cách để tắt kiểm tra độ sâu nhưng bạn có thể thực hiện tương tự bằng cách đặt tham số thứ 2 đến cuối là 0. Trước đây sẽ tạo ra một cấu hình RGB_565 mặc định trong khi tôi yêu cầu một cấu hình RGBA_8888 do đó thay đổi.

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