2011-01-03 33 views
8

Tôi đang sửa đổi phiên bản của phiên bản android của ví dụ về kết cấu 2d từ hướng dẫn lập trình OpenGl ES2.0 để thay đổi trình đổ bóng phân đoạn. điều này được viết bằng Java thuần túy và không sử dụng NDK.glGetShaderInfoLog trả về chuỗi rỗng (android)

Ví dụ vanilla hoạt động tốt trên điện thoại của tôi, nhưng khi tôi thay đổi mã đổ bóng, nó không còn hoạt động nữa. Điều này là do shader sửa đổi của tôi không biên dịch (rõ ràng), nhưng tôi không thể tìm thấy nguyên nhân của vấn đề như glGetShaderInfoLog trả về một chuỗi rỗng.

Tôi đã thực hiện tìm kiếm về vấn đề này, và rõ ràng, vào ngày 22 tháng 7, đó là một vấn đề đã biết, nhưng tôi đã tự hỏi có cách nào để giải quyết nó. Một bài đăng tôi thấy rằng họ đã viết một trình bao bọc NDK cho chức năng này, nhưng mới phát triển với Android, tôi thực sự không biết cách thực hiện điều này.

Trả lời

6

Bạn đang bị a bug. Tôi đã làm việc xung quanh bằng cách sử dụng các old GL ES 2.0 bindings để có được một glGetShaderInfoLog chức năng. Như thế này:

import com.badlogic.gdx.backends.android.AndroidGL20; 
... 
AndroidGL20 gl2 = new AndroidGL20(); 
Log.e(TAG, gl2.glGetShaderInfoLog(shader)); 

Tôi vẫn sử dụng thư viện wrapper GLES20 tiêu chuẩn cho mọi thứ khác, do đó, đơn giản là thả vào cơ sở mã của tôi. Hai trình bao bọc dường như có thể cùng tồn tại mà không có bất kỳ vấn đề gì.

2

Chỉ cần bất cứ ai tìm thấy câu hỏi này vì họ đã gặp phải cùng một vấn đề, cách duy nhất tôi tìm thấy để "giải quyết nó" là biên dịch trình đổ bóng với một Ứng dụng khác (chẳng hạn như Rendermonkey). Không phải lý tưởng, nhưng nó đã cho tôi thêm trong dự án của tôi!

1

Tôi đã gặp vấn đề tương tự.

  1. Hãy chắc chắn rằng bạn đã sau trong ApplicationManufest.xml:

    < sử dụng tính năng-android: glEsVersion = "0x00020000" android: cần = "true" />

  2. Gọi điều này sau khi khởi tạo GLSurfaceView

glSurfaceView.SetEGLContextClientVersion (2);

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