Từ một vài ví dụ tôi đã thấy trên mạng, gl_FragData [0] được giả định là một bộ đệm màu. Tôi cố gắng để tìm thấy ý nghĩa của từng chỉ số thành gl_FragData và đi qua đoạn này từ OpenGL cuốn sách ngôn ngữ Shading (cuốn sách màu cam)Gl_FragData [0] luôn là bộ đệm màu?
gl_FragData là một mảng có thể được gán các giá trị được viết vào một hoặc nhiều offscreen đệm . Kích thước của mảng này là phụ thuộc thực hiện và có thể được truy vấn với glGet với hằng số biểu tượng là GL_MAX_DRAW_BUFFERS . Các bộ đệm ngoài màn hình được được sửa đổi là kết quả của việc ghi các giá trị vào gl_FragData trong một trình tạo đoạn mã phân tách được chỉ định với glDrawBuffers. Giá trị được viết vào gl_FragData [0] cập nhật bộ đệm đầu tiên trong danh sách được chỉ định trong cuộc gọi tới glDrawBuffers, giá trị được viết thành gl_FragData [1] cập nhật bộ đệm thứ hai trong danh sách, v.v.
Nó không được chỉ định rằng giá trị 0 của gl_FragData luôn là bộ đệm màu. Nếu có đặc điểm kỹ thuật như vậy, tôi có thể tìm thấy nó ở đâu? Nếu không, thực hành bình thường khi viết cho gl_FragData là gì?
Tôi cho rằng glDrawBuffers không có sẵn trong OpenGL ES. Trong trường hợp đó FBO ngầm gọi nó vào một thời điểm nào đó? – Jayesh
'glDrawBuffers' (không nhầm lẫn với' glDrawBuffer', lựa chọn rất thông minh của tên ...) là một phần của ARB_draw_buffers, đó là lõi OpenGL 2.0. Vì OpenGL ES 2.0 được xác định tương đối so với OpenGL 2.0, nên bao gồm hàm đó. – Damon
@Damon: Về mặt kỹ thuật, ['glDrawBuffer'] (http://www.opengl.org/wiki/GLAPI/glDrawBuffer) được định nghĩa theo thuật ngữ' glDrawBuffers'; nó chỉ là một hình thức hạn chế hơn (đặt chỉ mục 0 cho bộ đệm cho và tất cả những người khác vào 'GL_NONE'). Nhưng không có trong GL ES 2.0. –