Showing posts with label game. Show all posts
Showing posts with label game. Show all posts

7/26/16

Lâp trình OpenGLES - Phần 7

Nối tiếp phần 6 toàn lý thuyết về texture, phần này sẽ hướng dẩn bạn cách sử dụng những kiến thức đó vào code. Chú ý rằng texture, shader hay model đều được mình viết trong các class để dể quản lý sau này.

7/23/16

Lâp trình OpenGLES - Phần 6

Phần trước mình đã hướng dẩn các bạn cách load nhân vật từ file .nfg(định dạng .got chúng ta sẽ tìm hiểu sau) nhưng nhân vật load lên còn chưa có "da", trông trắng bệch còn hơn bạch tạng. Bài này và bài tiếp theo sẽ hướng dẩn cách "đắp da" cho nhân vật.
Mình cũng xin nói luôn, loạt bài viết này sẽ không phù hợp với những bạn thiếu kiên nhẫn. Có thể đến phần 10, 11, 12 hoặc xa hơn nữa mà bạn vẩn chưa thấy "game" đâu cả. Vì đây không phải là fast food đây là chicken stew. Bạn có thể chọn đồ ăn nhanh nếu bạn không có thời gian như Unity hay Cocos2d. Còn loạt bài viết này là món gà hầm bổ dưỡng nhưng bạn thật sự phải xăng tay áo lên và vào bếp đấy, sẽ tốn chút nhiều thời gian nhưng cũng đáng để đầu tư lắm :)).
Hơi bị dài dòng rồi, let's go!

7/18/16

Lâp trình OpenGLES - Phần 5

Phần 4 chúng ta đã tìm hiểu về cách vẽ một số hình đơn giản bằng OpenGL sử dụng VBO và glDrawArrays. Phần tiếp theo sẽ hướng dẩn các bạn cách vẽ khác sử dụng IBO và glDrawElements. Với cách mới, bạn có thể sử dụng lại các vertex để vẽ các hình khác, việc này làm giảm rất nhiều dung lượng bộ nhớ cần lưu trữ cho các vertex. Đối với các hình đơn giản thì việc này không có ý nghĩa gì, nhưng với các nhân vật hoặc các hình phức tạp hơn, số vertex lên trến hàng nghìn thậm chí hàng triệu thì quả là một sự khác biệt lớn đấy. Ngoài ra mình cũng sẽ giới thiệu các bạn cách load hình từ file để có thể vẽ được những hình phức tạp. Vì mục đích nguyên cứu nên file mình đề cập sẽ có cấu trúc dạng text(không tối ưu cho kích thước và bảo mật) dể đọc, dể chỉnh sửa.

7/14/16

Lâp trình OpenGLES - Phần 4

Sau khi tìm hiểu sơ lượt về shader và vertex trong phần 3, phần tiếp theo này sẽ hướng dẩn các bạn cách vẽ một hình đơn giản bằng opengl. Thực ra để vẽ hình đơn giản này thì bạn không cần dùng đến opengl, chỉ cần sử dụng một thư viện đơn giản như winbgim để vẽ. Nhưng để xây dựng một game đủ lớn với các nhân vật được nạp từ file thì bạn không thể sử dụng winbgim được nữa, lúc này opengl đủ sức để "cân" các nhân vật game này. Trong bài viết này mình chỉ hướng dẩn cách vẽ hình bằng VBO vì nó chỉ cần đẩy dữ liệu vertex đi một lần duy nhất nhờ đó tăng tốc độ vẽ.

Lâp trình OpenGLES - Phần 3

Ở phần trước bạn đã tìm hiểu xong về cách tạo một cửa sổ cũng nhu một số sự kiện trong game, đọc lại ở đây. Ở phần này sẽ khái quát qua 2 khái niệm cực kỳ quan trọng trong lập trình opengl đó là shader và vertex. Vậy shader là gì? Cách định nghĩa vertex như thế nào?...tất cả sẽ được giải đáp ngay bên dưới.

7/11/16

Lâp trình OpenGLES - Phần 2

Ở phần trước mình đã hướng dẩn các bạn tạo và cấu hình một project opengles, các bạn có thể đọc ở đây. Phần này mình sẽ hướng dẩn cách tạo ra cửa sổ để có thể vẽ lên đó vì đơn giản là ta không thể vẽ lên trên console rồi. Phần này không được liệt vô "core" của game vì việc thực thi Window Surface còn tùy thuộc vào từng nền tảng mà game đang chạy trên đó. Ngoài việc tạo cửa sổ mình sẽ giới thiệu qua về một số sự kiện quan trọng trong game mà bạn cần biết để xử lý thích hợp.

7/10/16

Lâp trình OpenGLES - Phần 1

Sau 1 thời gian nguyên cứu web, app, mobile các kiểu thì thì bây giờ mình lại quây về nguyên cứu về game. Lúc trước mình từng viết 1 số bài lý thuyết về 1 số khái niệm trong OpenGL các bạn có thể đọc thêm ở đây và đây. Phần này mình sẽ hướng dẩn xây dựng project OpenGLES trên nền tảng win32(chỉ mới tạo và cấu hình). Bây giờ ta sẽ tiếp cận theo cách động đến đâu giải thích đến đó chứ ngồi nói một tràng lý thuyết suông thì chán lắm :))

9/28/15

Rendering pipeline trong OpenGL

Rendering pipeline là các bước theo thứ tự tuần tự mà opengl sẽ thực hiện để biến các vertex thành hình ảnh hiển thị ra màng hình.
Rendering pipeline sẽ tiến hành xử lý dữ liệu thô của vertex kết hợp với các bước lọc và test để cho ra hình ảnh cuối cùng trên màng hình. Rendering pipeline như 1 đường ống kéo dài, chia làm nhiều phân đoạn liên tiếp nhau và tại mỗi phần ta có thể enable, disable hoặc cấu hình nó để cho ra hình ảnh đúng với ý đồ của ta.

9/7/15

Một số khái niệm cơ bản về 3D trong lập trình đồ họa với OpenGL

Đây là bài mở đầu cho loạt bài viết về lập trình game 3D với OpenGL ES. Trước tiên chúng ta khái quát về OpenGL. OpenGL (tiếng Anh Open Graphics Library) là một tiêu chuẩn kỹ thuật đồ họa có mục đích định ra một giao diện lập trình ứng dụng (tiếng Anh: API) đồ họa 3 chiều. OpenGL cũng có thể được dùng trong các ứng dụng đồ họa 2 chiều. Giao diện lập trình này chứa khoảng 250 hàm để vẽ các cảnh phức tạp từ những hàm đơn giản. Nó được dùng rộng rãi trong các trò chơi điện tử. Ngoài ra nó còn dùng trong các ứng dụng CAD, thực tế ảo, mô phỏng khoa học, mô phỏng thông tin, phát triển trò chơi. OpenGL còn có một đối thủ cạnh tranh là DirectX của Microsoft.[1]. OpenGL ES(Open Graphics Library for Embedded System) là phiên bản giành cho hệ thống nhúng mà tiêu biểu là các thiết bị điện thoại, phiên bản này được lượt bớt 1 số thành phần làm cho nó trở nên gọn nhẹ và phù hợp với các thiết bị có cấu hình thấp.