Màu sắc và tơ bóng (Color and Shading):

Một phần của tài liệu lập trình 3d ứng dụng trên nền tảng android (Trang 80 - 82)

Chương 5: Áp dụng OpenGLES để tạo ứng dụng 3D trên Andro

5.7 Màu sắc và tơ bóng (Color and Shading):

Tất cả màu sắc trong OpenGL được đại diện bởi 4 giá trị, 3 giá trị màu đỏ, xanh lá cây và xanh lam, cuối cùng là giá tri alpha, điều này chỉ thể hiện rõ ràng 1 màu. Để hiển thị nhiều màu pha trộng nhau, ta sẽ sử dụng một mảng màu.

Ví dụ:

Khởi tạo một mảng tam giác:

float[] triangle = {

0.25f, 0.25f, 0.0f, 0.75f, 0.25f, 0.0f,

0.25f, 0.75f, 0.0f, };

Tiếp theo, tạo ra một mảng màu, mỗi đỉnh là một màu sắc khác nhau, màu đỏ, xanh lá cây và xanh lam:

float[] colors = {

1.0f, 0.0f, 0.0f, 1.0f, // point 0 red 0.0f, 1.0f, 0.0f, 1.0f, // point 1 green 0.0f, 0.0f, 1.0f, 1.0f, // point 2 blue

};

Một biến boolean shaded được tạo để theo dõi xem có được đánh bóng hay khơng:

boolean shaded = false;

Thiết lập phép chiếu trực giao:

private void init(GL10 gl) {

gl.glClearColor(0.0f, 0.0f, 0.0f,0.0f);

gl.glMatrixMode (GL10.GL_PROJECTION); gl.glLoadIdentity ();

gl.glOrthof(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f);

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, triangle);

Sử dụng hàm glColorPointer để thiết lập cho mảng màu, hàm này làm việc giống như hàm glVertexPointer, chúng có 4 tham số và tham số đầu tiên để xác định có 4 float (một giá trị màu) cho mỗi đỉnh:

gl.glColorPointer(4, GL10.GL_FLOAT, 0, colors);

Kích hoạt các đỉnh và mảng màu:

gl.glEnableClientState (GL10.GL_VERTEX_ARRAY); gl.glEnableClientState (GL10.GL_COLOR_ARRAY);

Bây giờ ta thêm màu và shading (tơ bóng) vào hình. Có 2 loại tơ bóng, được xác định bằng cách sử dụng hàm glShadeModel, hàm này sẽ đưa ra một trong hai tham số GL_FLAT và GL_SMOOTH để xác định loại tơ bóng và GL_SMOOTH được thiết lập theo mặc định.

}

Thiết lập chế độ màn hình hiển thị, trong lời gọi hàm glDrawArrays ta sử dụng

cờ GL_TRIANGLES để vẽ 3 đỉnh của tam giác. Kết quả:

Hình 21 – Kết quả màu sắc và tơ bóng

Một phần của tài liệu lập trình 3d ứng dụng trên nền tảng android (Trang 80 - 82)

Tải bản đầy đủ (DOCX)

(137 trang)
w