Bản vẽ (Drawing)

Một phần của tài liệu Các vấn đề hiện đại CNPM – OpenGL ES 2.0 (Trang 40)

I. GIỚI THIỆU ĐỀ TÀI

7. Rendering

7.2. Bản vẽ (Drawing)

Các kích hoạt để vẽ trong OpenGL được sáng tác bởi hai chức năng:

GLvoid glDrawArrays (Glenum mode, Glint first , GLsizei count)

mode : tham số này xác định nguyên thủy sẽ được trả lại và làm thế nào cấu trúc của nó được tổ chức. Tham số này có thể là:

o GL_POINTS: điểm Draw. Điểm được cấu tạo bởi các chuỗi duy nhất của 3 giá trị (x, y, z).

o GL_LINES : Draw Lines. Dòng được cấu tạo bởi hai chuỗi của 3 giá trị (x, y, z / x, y, z).

o GL_LINE_STRIP : Draw dòng tạo thành một dải. Dòng được cấu tạo bởi hai chuỗi của 3 giá trị (x, y, z / x, y, z).

o GL_LINE_LOOP : Draw dòng đóng cửa một vòng lặp của họ. Dòng được cấu tạo bởi hai chuỗi của 3 giá trị (x, y, z / x, y, z).

o GL_TRIANGLES : Vẽ tam giác. Hình tam giác được tạo thành bởi ba chuỗi 3 giá trị (x, y, z / x, y, z / x, y, z).

o GL_TRIANGLE_STRIP : Vẽ tam giác tạo thành một dải. Hình

tam giác được tạo thành bởi ba chuỗi 3 giá trị (x, y, z / x, y, z / x, y, z).

o GL_TRIANGLE_FAN : Vẽ tam giác tạo thành một fan hâm mộ. Hình tam giác được tạo thành bởi ba chuỗi 3 giá trị (x, y, z / x, y, z / x, y, z).

first : Chỉ định chỉ số bắt đầu trong mảng đỉnh kích hoạt.

count: Đại diện số đỉnh được vẽ. Điều này là rất quan trọng, nó

đại diện cho số đỉnh yếu tố, không phải là số lượng các yếu tố trong mảng

các đỉnh, chăm sóc để không nhầm lẫn giữa cả hai. Ví dụ, nếu bạn đang vẽ

một hình tam giác đơn này nên được 3, bởi vì một hình tam giác được tạo thành bởi 3 đỉnh. Nhưng nếu bạn đang vẽ một hình vuông (sáng tác bởi hai hình tam giác) này nên được 6, vì được hình thành bởi hai chuỗi 3 đỉnh, tổng cộng 6 yếu tố, và như vậy.

40

GLvoid glDrawElements (Glenum mode, GLsizei count, GLenum type, const GLvoid * index)

mode : tham số này xác định nguyên thủy sẽ được trả lại và làm thế nào cấu trúc của nó được tổ chức. Tham số này có thể là:

o GL_POINTS: điểm Draw. Điểm được cấu tạo bởi các chuỗi duy nhất của 3 giá trị (x, y, z).

o GL_LINES : Draw Lines. Dòng được cấu tạo bởi hai chuỗi của 3 giá trị (x, y, z / x, y, z).

o GL_LINE_STRIP : Draw dòng tạo thành một dải. Dòng được cấu tạo bởi hai chuỗi của 3 giá trị (x, y, z / x, y, z).

o GL_LINE_LOOP : Draw dòng đóng cửa một vòng lặp của họ. Dòng được cấu tạo bởi hai chuỗi của 3 giá trị (x, y, z / x, y, z).

o GL_TRIANGLES : Vẽ tam giác. Hình tam giác được tạo thành bởi ba chuỗi 3 giá trị (x, y, z / x, y, z / x, y, z).

o GL_TRIANGLE_STRIP : Vẽ tam giác tạo thành một dải. Hình

tam giác được tạo thành bởi ba chuỗi 3 giá trị (x, y, z / x, y, z / x, y, z).

o GL_TRIANGLE_FAN : Vẽ tam giác tạo thành một fan hâm mộ. Hình tam giác được tạo thành bởi ba chuỗi 3 giá trị (x, y, z / x, y, z / x, y, z).

count: Đại diện số đỉnh được vẽ. Điều này là rất quan trọng, nó

đại diện cho số đỉnh yếu tố, không phải là số lượng các yếu tố trong mảng

các đỉnh, chăm sóc để không nhầm lẫn giữa cả hai. Ví dụ, nếu bạn đang vẽ

một hình tam giác đơn này nên được 3, bởi vì một hình tam giác được tạo thành bởi 3 đỉnh. Nhưng nếu bạn đang vẽ một hình vuông (sáng tác bởi hai hình tam giác) này nên được 6, vì được hình thành bởi hai chuỗi 3 đỉnh, tổng cộng 6 yếu tố, và như vậy.

type: Đại diện cho kiểu dữ liệu của OpenGL được sử dụng trong các mảng của các chỉ số. Tham số này có thể là:

o GL_UNSIGNED_BYTE: Để chỉ ra một GLubyte.

o GL_UNSIGNED_SHORT : Để chỉ ra một GLushort.

Nếu bạn đang sử dụngglDrawArrays đầu tiên tham số hoạt động như một bước tiến ban đầu của bạn mỗi đỉnh thuộc tính. Vì vậy, nếu bạn đặt nó vào 2, ví dụ, các giá trị trong vertex shader sẽ bắt đầu bằng chỉ số 2 trong mảng bạn chỉ định trongglVertexAttribPointer , thay vì bắt đầu bằng 0 như mặc định.

Nếu bạn đang sử dụngglDrawElements đầu tiên tham số sẽ làm việc như một bước tiến ban đầu đến các mảng của các chỉ số, và không phải trực tiếp đến mỗi đỉnh của giá trị. Cácloạixác định các kiểu dữ liệu, trong thực sự nó là một gợi ý

41 rất tốt để sử dụng GL_UNSIGNED_BYTE. Một số hiện thực của OpenGL cũng

hỗ trợ một kiểu dữ liệu thứ ba: GL_UNSIGNED_INT, nhưng điều này không phải là rất phổ biến.

Một phần của tài liệu Các vấn đề hiện đại CNPM – OpenGL ES 2.0 (Trang 40)

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

(45 trang)