Bài giảng Lập trình nâng cao: Đồ hoạ với SDL - Trần Quốc Long
lượt xem 14
download
Bài giảng "Lập trình nâng cao: Đồ hoạ với SDL" cung cấp cho người học các kiến thức: Thư viện SDL, xây dựng API vẽ, vẽ hình bằng bút vẽ, vẽ hình fractal. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình nâng cao: Đồ hoạ với SDL - Trần Quốc Long
- Graphics 7&8 - Đồ hoạ với SDL https://github.com/tqlong/advprogram
- Nội dung Thư viện SDL Cài đặt, khởi tạo, sử dụng, giải phóng Xây dựng API vẽ Lớp Painter Vẽ hình bằng bút vẽ Đường thẳng, hình vuông, tam giác … Phối hợp tạo thành các hình tuyệt đẹp Vẽ ảnh JPG, PNG Vẽ hình fractal Kỹ thuật đệ quy
- Đồ họa với SDL https://www.libsdl.org/ Hướng dẫn: http://wiki.libsdl.org/FrontPage SDL có thể phát triển trò chơi chuyên nghiệp SDL dễ dàng kết nối với CodeBlocks SDL chạy trên nhiều nền tảng (Windows, Linux, Android, iOS …) 3 / 15
- Lựa chọn thư viện Phát triển phần mềm trên thực tế Thường cần thư viện (bên thứ 3 - third party library) ngoài tính năng của ngôn ngữ và thư viện chuẩn của C++ Lựa chọn thư viện cho dự án: cần thiết và quan trọng Trong khóa học này, dùng SDL bởi Chỉ dùng các tính năng đồ họa đơn giản Đa nền tảng (cross-platform) - dễ cho sinh viên Để phát triển game thực thụ Thường dùng các Game Engine https://en.wikipedia.org/wiki/List_of_game_engines
- Các tính năng của SDL https://wiki.libsdl.org/Introduction Video (2D, 3D) Threads Input events CPU Detection Force Feedback Timer Audio Endian independence File I/O Power Management Shared objects
- Cài đặt SDL với CodeBlocks-MinGW Tải về https://www.libsdl.org/release/SDL2-devel-2.0.5-mingw.tar.gz Giải nén vào một thư mục nào đó, trong đó có 2 thư mục Bản 32bit: i686-w64-mingw32 Bản 64bit: x86_64-w64-mingw32 Ở đây ta dùng bản 32 bit (vì CodeBlock đang dùng mingw32), trong thư mục này có 4 thư mục bin, include, lib, share Thư mục bin chứa SDL2.dll (liên kết khi chạy, copy file này vào thư mục mã nguồn project) Thư mục include chứa các file .h (như stdio.h) khai báo các hàm của SDL Thư mục lib chứa các thư viện (mã đối tượng) để liên kết chương trình 6 / 15
- Cấu hình CodeBlocks Settings / Compiler ... 7 / 15
- Cấu hình CodeBlocks Liên kết thư viện: Linker settings: -lmingw32 -lSDL2main -lSDL2 8 / 15
- Cấu hình CodeBlocks Vị trí thư mục include và lib: Search directories | Compilers Đường dẫn đến thư mục chứa SDL 9 / 15
- Cấu hình CodeBlocks Vị trí thư mục include và lib: Search directories | Linker 10 / 15
- Sử dụng SDL Khởi tạo (0,0) SDL_Init() Mở cửa sổ để vẽ Lấy bút vẽ của cửa sổ Vẽ hình (x,y) Giải phóng SDL Giải phóng bút vẽ, cửa sổ SDL_Quit() (width, height)
- Khởi tạo SDL #include sử dụng thư #include viện SDL2 using namespace std; int main(int argc, char* argv[]) { return 0; }
- Báo lỗi SDL void logSDLError(std::ostream& os, const std::string &msg, bool fatal = false); void logSDLError(std::ostream& os, const std::string &msg, bool fatal) { os
- Khởi tạo SDL const int SCREEN_WIDTH = 800; const int SCREEN_HEIGHT = 600; const string WINDOW_TITLE = "An Implementation of Code.org Painter"; void initSDL(SDL_Window* &window, SDL_Renderer* &renderer); Đại diện cho cửa sổ vẽ Đại diện cho bút vẽ
- void initSDL(SDL_Window* &window, SDL_Renderer* &renderer) { Mở cửa sổ vẽ if (SDL_Init(SDL_INIT_EVERYTHING) != 0) theo kích thước logSDLError(std::cout, "SDL_Init", true); đã chọn Khởi tạo SDL window = SDL_CreateWindow(WINDOW_TITLE.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); //window = SDL_CreateWindow(WINDOW_TITLE.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_FULLSCREEN_DESKTOP); if (window const == intnullptr) SCREEN_WIDTH = 800; logSDLError(std::cout, "CreateWindow", const int SCREEN_HEIGHT = 600; true); const string WINDOW_TITLE = "An Implementation of Code.org renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | Lấy bút vẽ Painter"; SDL_RENDERER_PRESENTVSYNC); //SDL_Renderer *renderer = void initSDL(SDL_Window* &window, SDL_Renderer* &renderer); SDL_CreateSoftwareRenderer(SDL_GetWindowSurface(window)); if (renderer == nullptr) logSDLError(std::cout, "CreateRenderer", true); SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); SDL_RenderSetLogicalSize(renderer, SCREEN_WIDTH, SCREEN_HEIGHT);
- Giải phóng SDL void quitSDL(SDL_Window* window, SDL_Renderer* renderer); void quitSDL(SDL_Window* window, SDL_Renderer* renderer) { Giải phóng SDL_DestroyRenderer(renderer); bộ nhớ quản SDL_DestroyWindow(window); lý cửa sổ và SDL_Quit(); bút vẽ }
- Đợi 1 phím để thoát void waitUntilKeyPressed(); void waitUntilKeyPressed() { SDL_Event e; while (true) { if ( SDL_WaitEvent(&e) != 0 && Xác định sự (e.type == SDL_KEYDOWN || e.type == SDL_QUIT) ) kiện bàn phím return; SDL_Delay(100); } }
- Hàm main() int main(int argc, char* argv[]) https://github.com/tqlong/advprogram/raw/6f01f8 { SDL_Window* window; SDL_Renderer* renderer; initSDL(window, renderer); // Your drawing code here // use SDL_RenderPresent(renderer) to show it waitUntilKeyPressed(); quitSDL(window, renderer); return 0; }
- Cửa sổ trắng, ấn 1 phím bất kỳ để thoát
- Nội dung Thư viện SDL: Cài đặt, khởi tạo, sử dụng, giải phóng Xây dựng API vẽ Lớp Painter Vẽ hình bằng bút vẽ Đường thẳng, hình vuông, tam giác … Phối hợp tạo thành các hình tuyệt đẹp Vẽ ảnh JPG, PNG Vẽ hình fractal Kỹ thuật đệ quy
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình nâng cao với Java
170 p | 99 | 14
-
Bài giảng Lập trình nâng cao: Giới thiệu môn học - Trần Quốc Long
16 p | 74 | 7
-
Bài giảng Lập trình nâng cao: Hàm - Trần Quốc Long
34 p | 63 | 6
-
Bài giảng Lập trình nâng cao: Phát triển chương trình - Trần Quốc Long
38 p | 78 | 6
-
Bài giảng Lập trình nâng cao: Hoạt hình, tách file - Trần Quốc Long
28 p | 66 | 6
-
Bài giảng Lập trình nâng cao: Hướng đối tượng - Nguyễn Thị Tú Mi
117 p | 65 | 5
-
Bài giảng Lập trình nâng cao: Bài 7 - Lý Anh Tuấn
33 p | 67 | 5
-
Bài giảng Lập trình nâng cao: Tìm kiếm và đếm - Trần Quốc Long
54 p | 70 | 5
-
Bài giảng Lập trình nâng cao - Chương 0: Giới thiệu môn học
6 p | 80 | 4
-
Bài giảng Lập trình nâng cao: Bài 6 - Lý Anh Tuấn
28 p | 48 | 4
-
Bài giảng Lập trình nâng cao: Bài 4+5+6 - Trương Xuân Nam
25 p | 34 | 4
-
Bài giảng Lập trình nâng cao: Bài 0 - Hoàng Thị Điệp
7 p | 83 | 3
-
Bài giảng Lập trình nâng cao: Chương 5 - Lý Anh Tuấn
54 p | 27 | 2
-
Bài giảng Lập trình nâng cao: Chương 1 - Lý Anh Tuấn
26 p | 35 | 2
-
Bài giảng Lập trình nâng cao - Chương 0: Giới thiệu môn học, Warm up Game over
16 p | 5 | 1
-
Bài giảng Lập trình nâng cao - Chương 1: Simple Calculator (Ôn tập)
18 p | 5 | 1
-
Bài giảng Lập trình nâng cao - Chương 2: Game Guess it (Hàm)
34 p | 4 | 1
-
Bài giảng Lập trình nâng cao - Chương 3: Game Hangman (Phát triển chương trình)
38 p | 8 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn