Hình chữ nhật, hình tròn, đường thẳng, tam giác; cách trộn màu và cắt vùng vẽ. Tiếp...
Enumerations | |
| enum | njin::blend_mode { njin::blend_alpha , njin::blend_additive , njin::blend_multiply } |
| Cách trộn màu của những gì vẽ sau blend_begin(). Tiếp... | |
Các hàm | |
| void | njin::draw_rect (const context &ctx, rect r, rgba color) |
| Vẽ hình chữ nhật đặc. | |
| void | njin::draw_rect_lines (const context &ctx, rect r, f32 thickness, rgba color) |
| Vẽ viền hình chữ nhật. | |
| void | njin::draw_rect_rotated (const context &ctx, vec2 center, vec2 size, f32 rotation, rgba color) |
| Vẽ hình chữ nhật đặc xoay quanh tâm của nó. | |
| void | njin::draw_circle (const context &ctx, vec2 center, f32 radius, rgba color) |
| Vẽ hình tròn đặc. | |
| void | njin::draw_circle_lines (const context &ctx, vec2 center, f32 radius, f32 thickness, rgba color) |
| Vẽ viền hình tròn. | |
| void | njin::draw_line (const context &ctx, vec2 a, vec2 b, f32 thickness, rgba color) |
| Vẽ đoạn thẳng. | |
| void | njin::draw_triangle (const context &ctx, vec2 a, vec2 b, vec2 c, rgba color) |
| Vẽ tam giác đặc. | |
| void | njin::draw_offset_push (const context &ctx, vec2 offset, f32 scale=1.0f) |
| Phóng mọi hình vẽ sau đó theo scale rồi dời đi offset (đơn vị thế giới) cho tới draw_offset_pop(): điểm p được vẽ ở p * scale + offset. | |
| void | njin::draw_offset_pop (const context &ctx) |
| Bỏ độ dời của lần draw_offset_push() gần nhất. | |
| void | njin::blend_begin (const context &ctx, blend_mode mode) |
| Đổi cách trộn màu cho mọi thứ vẽ sau đó, cho đến blend_end(). | |
| void | njin::draw_set_y_sort (context &ctx, i32 layer, bool on) |
| Bật sắp xếp theo Y cho một lớp vẽ: trong lớp đó, sprite và particle có y lớn hơn (thấp hơn trên màn hình) được vẽ sau, nên đè lên thứ đứng phía sau nó. | |
| void | njin::blend_end (const context &ctx) |
| Trở lại cách trộn mặc định. | |
| void | njin::clip_begin (const context &ctx, rect area) |
| Chỉ vẽ bên trong một vùng của màn hình, cho đến clip_end(). | |
| void | njin::clip_end (const context &ctx) |
| Bỏ giới hạn vùng vẽ. | |
Hình chữ nhật, hình tròn, đường thẳng, tam giác; cách trộn màu và cắt vùng vẽ.
| enum njin::blend_mode |
Cách trộn màu của những gì vẽ sau blend_begin().
| Enumerator | |
|---|---|
| blend_alpha | Trộn theo độ trong suốt. Mặc định. |
| blend_additive | Cộng màu: sáng lên. Dùng cho lửa, ánh sáng, tia lửa. |
| blend_multiply | Nhân màu: tối đi. Dùng cho bóng đổ, lớp phủ màu. |
Vẽ hình chữ nhật đặc.
Mọi hàm vẽ phải gọi giữa lúc bắt đầu và kết thúc vẽ của frame, tức là trong phase_pre_render, phase_render hoặc phase_post_render. Không gian (thế giới hay màn hình) phụ thuộc phase: xem trang Vòng lặp game.
| ctx | Context của engine. |
| r | Hình chữ nhật. |
| color | Màu. |
Vẽ viền hình chữ nhật.
Viền nằm bên trong r.
| ctx | Context của engine. |
| r | Hình chữ nhật. |
| thickness | Độ dày viền. |
| color | Màu. |
| void njin::draw_rect_rotated | ( | const context & | ctx, |
| vec2 | center, | ||
| vec2 | size, | ||
| f32 | rotation, | ||
| rgba | color ) |
Vẽ hình chữ nhật đặc xoay quanh tâm của nó.
| ctx | Context của engine. |
| center | Tâm. |
| size | Kích thước. |
| rotation | Góc xoay tính bằng độ, theo chiều kim đồng hồ. |
| color | Màu. |
Vẽ hình tròn đặc.
| ctx | Context của engine. |
| center | Tâm. |
| radius | Bán kính. |
| color | Màu. |
| void njin::draw_circle_lines | ( | const context & | ctx, |
| vec2 | center, | ||
| f32 | radius, | ||
| f32 | thickness, | ||
| rgba | color ) |
Vẽ viền hình tròn.
Viền nằm bên trong bán kính.
| ctx | Context của engine. |
| center | Tâm. |
| radius | Bán kính. |
| thickness | Độ dày viền. |
| color | Màu. |
Vẽ đoạn thẳng.
| ctx | Context của engine. |
| a | Điểm đầu. |
| b | Điểm cuối. |
| thickness | Độ dày. |
| color | Màu. |
Vẽ tam giác đặc.
Thứ tự ba đỉnh không quan trọng.
| ctx | Context của engine. |
| a | Đỉnh thứ nhất. |
| b | Đỉnh thứ hai. |
| c | Đỉnh thứ ba. |
| color | Màu. |
Phóng mọi hình vẽ sau đó theo scale rồi dời đi offset (đơn vị thế giới) cho tới draw_offset_pop(): điểm p được vẽ ở p * scale + offset.
Dùng để vẽ một phần của thế giới có tọa độ riêng (một khu bản đồ được sinh riêng) đúng chỗ của nó, hoặc vẽ nó thu nhỏ vào một render texture rồi vẽ texture đó phóng to lại. Lồng được; mỗi lần push cần một lần pop trong cùng phase. Chữ pixel (draw_text với font pixel) không bị dời.
| ctx | Context của engine. |
| offset | Độ dời. |
| scale | Hệ số phóng, 1 là giữ nguyên cỡ. |
| void njin::draw_offset_pop | ( | const context & | ctx | ) |
Bỏ độ dời của lần draw_offset_push() gần nhất.
| ctx | Context của engine. |
| void njin::blend_begin | ( | const context & | ctx, |
| blend_mode | mode ) |
Đổi cách trộn màu cho mọi thứ vẽ sau đó, cho đến blend_end().
| ctx | Context của engine. |
| mode | Cách trộn. |
| void njin::draw_set_y_sort | ( | context & | ctx, |
| i32 | layer, | ||
| bool | on ) |
Bật sắp xếp theo Y cho một lớp vẽ: trong lớp đó, sprite và particle có y lớn hơn (thấp hơn trên màn hình) được vẽ sau, nên đè lên thứ đứng phía sau nó.
Đây là cách game top-down cho nhân vật đi vòng ra sau cây, sau nhà.
y là transform.pos.y + sprite::sort_offset. Đặt sprite::origin ở chân ({0.5, 1}) thì không cần sort_offset. Tilemap trong lớp đó vẫn vẽ trước mọi sprite (làm nền). Hai thứ cùng y giữ thứ tự ổn định giữa các frame.
| ctx | Context của engine. |
| layer | Lớp vẽ (njin::sprite::layer). |
| on | true để bật. |
| void njin::blend_end | ( | const context & | ctx | ) |
Trở lại cách trộn mặc định.
| ctx | Context của engine. |
| void njin::clip_begin | ( | const context & | ctx, |
| rect | area ) |
Chỉ vẽ bên trong một vùng của màn hình, cho đến clip_end().
area tính bằng pixel màn hình, không qua camera. Dùng cho khung cuộn trong UI.
| ctx | Context của engine. |
| area | Vùng được vẽ, pixel màn hình. |
| void njin::clip_end | ( | const context & | ctx | ) |
Bỏ giới hạn vùng vẽ.
| ctx | Context của engine. |