2013-01-12 30 views
6

Tôi mới sử dụng OpenGL cùng nhau. Tôi đang tạo ứng dụng mù màu trên Android cho mục đích học tập. Tôi có tất cả các mã cần thiết trong trình đổ bóng để thực hiện các thao tác tôi cần, nhưng tôi vẫn phải có trình đổ bóng để có thể xem dữ liệu tôi tạo trong mã Java của mình. Trong mã Java của tôi, tôi đã kết thúc với một mảng int lớn có kích thước 262144. Tôi đã cố chuyển mảng này vào trình đổ bóng bất kỳ cách nào tôi có thể, nhưng nó quá lớn. Tôi đã được thông báo rằng tôi có thể chuyển nhiều thông tin này dễ dàng vào trình đổ bóng nếu tôi chuyển dữ liệu của mình thành kết cấu.Cách tạo kết cấu OpenGL từ mảng byte trong Android

Tôi đã chuyển đổi mảng int thành mảng byte theo hướng dẫn của đồng nghiệp, nhưng bây giờ tôi bị mất như thế nào tôi tạo kết cấu opengl và nhập dữ liệu byte của tôi vào nó cho trình đổ bóng để xem và sử dụng.

Vì vậy, tôi cần phải tạo một kết cấu opengl, điền nó với dữ liệu của tôi (là mảng byte tốt nhất?) Và sau đó có thể sử dụng kết cấu đó trong bóng đổ của tôi. Nếu bất cứ ai có thể giúp tôi, nó sẽ được đánh giá cao. Tôi làm việc tốt sau khi nhìn thấy các ví dụ, không giải thích vì tôi rất mù chữ nhưng tôi hoan nghênh bất kỳ sự giúp đỡ nào.

Tôi đã cố gắng mã hóa một số. Tôi đã cố gắng tạo ra một GLES20.glTexImage2D. Tôi figured tôi chỉ có thể vượt qua trong mảng byte của tôi, nhưng nó có một bộ đệm ?? Xin vui lòng cho tôi tất cả các bước cần thiết để hoàn thành nhiệm vụ của tôi.

Cảm ơn rất nhiều!

Mike

Trả lời

5

Tôi nghĩ bạn cần làm như sau;

byte data[4 * 262144]; // your byte array, 4 * int count 
ByteBuffer buffer = ByteBuffer.allocateDirect(4 * 262144); 
buffer.put(data); 
buffer.position(0); 

GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, 
        GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer); 
+0

Bạn có biết người ta có thể làm điều này trong NDK của Android không? http://stackoverflow.com/questions/14431693/how-can-i-bind-a-pixel-array-of-integer-colors-to-a-texture-using-the-android-nd – torger

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