-54- MÔI TRƯỜNGPHÁTTRIỂNĐỒHỌATRÊNTHIẾTBỊNHÚNG OPENGL/ES Thái Thanh Lâm MSV: 0320185 Email: atapie@gmail.com Kiều Văn Hùng MSV: 0320158 Email: vanhung.kieu@gmail.com Người hướng dẫn: ThS. Vũ Quang Dũng 1. Giới thiệu Ngày nay, các thiếtbị cầm tay đang có xu hướng trở thành những máy tính cá nhân cầm tay và theo dự đoán, tới năm 2008 sẽ có khoảng 50% thiếtbị cầm tay hỗ trợ nội dung đa phương tiện. Như vậy, thiếtbị cầm tay sẽ trở thành một môi trường rộng lớn mới cho các nhà pháttriển phần mềm đa phương tiện. Do đó, việc nghiên cứu và pháttriển môi trường cho các ứng dụng đa phương tiện trênthiếtbịnhúng vào lúc này là cần thiết. Trong đề tài này, chúng tôi nghiên cứu về môi trườngpháttriểnđồhọatrên các thiếtbịnhúng OpenGL/ES. 2. Khái niệm hệ thống nhúng Hệ thống nhúng (tiếng Anh: Embedded system) là một thuật ngữ để chỉ một hệ thống có khả năng tự làm việc được nhúng vào trong một môi trường hay một hệ thống mẹ. Hệ thống nhúng có vai trò đảm nhận một phần công việc cụ thể của hệ thống mẹ. Hệ thống nhúng có thể là một hệ thống phần cứng và cũng có thể là mộ t hệ thống phần mềm. Một hệ thống nhúng thường thì chỉ thực hiện chỉ một chương trình và lặp đi lặp lại nhiều lần. Đồng thời hệ thống nhúng được yêu cầu chặt chẽ về mọi mặt như giá thành, kích thước, hiệu suất (tốc độ) và năng lượng tiêu thụ khi sử dụng. Một số hệ thống nhúng còn được yêu c ầu hoạt động và xử lý trên thời gian thực, tức là tính toán và cho ra kết quả tức thời với độ trễ rất nhỏ ở mức chấp nhận được. 3. Kiến trúc hệ nhúng (Windows CE) Phần này nghiên cứu về cấu trúc của hệ thống nhúng Windows CE. Cung cấp nội dung về mô hình thiết kế nền tảng của hệ điều hành Windows CE dành cho các hệ thống nhúng và cơ chế hoạt động cơ bản của nó, bao gồm: - Cơ chế quản lý các tiến trình (process) và các luồng (thread). Trong đó chỉ ra cách phân chia độ ưu tiên cho các tiến trình. - Cơ chế quản lý và phân chia bộ nhớ, bao gồm nội dung về bộ nhớ ROM, bộ nhớ RAM và bộ nhớ ảo. - Cơ chế xử lý vào ra của hệ thống. Ngoài ra, phần cuối của chương có phân tích cụ thể về hệ điều hành Windows CE 6.0 là hệ điều hành được sử dụng trong phần thực nghiệm của đề tài khóa luận này. 4. Môi trườngđồhọa cho hệ thống nhúng Đối tượng được nghiên cứu trong chương này là giao diện lập trình ứng dụng OpenGL ES và môi trườngđồhọa ảo EGL đều do nhóm Khronos phát triển. 1. OpenGL ES là một tập con của API đồhọa 3D OpenGL, được thiết kế dành cho các hệ thống nhúng. Đây là một API đồhọa có nhiều ưu điểm và phù hợp để chạy trên các hệ thống nhúng: - Được xây dựng thành một chuẩn chung và miễn phí, OpenGL ES mang tính mở, trung lập nên có khả năng chạy trên nhiều hệ thống nhúng khác nhau. - Tiết kiệm năng lượng và năng lực tính toán của hệ thống. - Chuyển tiếp liền mạch với phần cứng, ngoài đường ống xử lý đồhọa của mình, OpenGL ES cho phép thực hiện các lời gọi hàm riêng biệt trên các phần cứng chuyên dụng, được thực thi giống như những chương trình thường trú trên CPU hệ thống. - Khả năng mở rộng và pháttriển cao với hệ thống các extension. - Có cấu trúc tốt do thừa hưởng từ OpenGL. -55- 2. EGL là một lớp giao diện trung gian giữa OpenGL ES và hệ thống nền tảng bên dưới (chẳng hạn là hệ điều hành như Windows CE, Symbian, Embedded Linux). EGL đóng vai trò chính sau: - Khởi tạo và quản lý các ngữ cảnh đồhọa của các client API như OpenGL ES. - Khởi tạo và quản lý các drawing surface, buffer. Dựa trên đó, OpenGL ES có thể thực hiện quá trình vẽ của mình. - Đồng bộ hóa quá trình vẽ của API đồhọa (OpenGL ES) với API đồhọa của hệ điều hành. Việc đồng bộ hóa này giúp tránh khả năng quá trình vẽ bị chồng chéo giữa các API như OpenGL ES và API của hệ điều hành. 5. Thực nghiệm Trong khóa luận này, chương trình thử nghiệm được xây dựng trên môi trường giả lập Windows CE 2003, ngôn ngữ thực hiện Embedded Visusal C++ 4.0 SP4, thư viện đồhọa là GLUT|ES. Chương trình minh họa được xây dựng để kiểm thử các chức năng cơ bản của một thư viện thực thi theo chuẩn OpenGL ES bao gồm : Các chức năng quản lý cửa sổ, các chức năng xử lý sự kiện ( Bắt chuột, bắt phím), quản lý các đối tượng (tạo, hủy, …), các chức năng dựng hình, Màu sắc và định dạng hình cần dựng, làm việc với không gian 3D, quản lý các Texture. Cấu trúc cơ bản của quá trình dựng hình trong một chương trình sử dụng OpenGL ES là: - Khởi tạo chương trình: bước này sẽ khởi tạo các công cụ của OpenGL ES. - Tạo một cửa sổ làm việc (window). - Khởi tạo dữ liệu của chươ ng trình. - Bước lặp: .Dựng hình. .Xử lý sự kiện (intput/output…). .Kiểm tra yêu cầu kết thúc chương trình. - Kết thúc chương trình: hủy các dữ liệu đã được tạo trong quá trình chạy ứng dụng. Kết quả thử nghiệm là chương trình chạy ổn định, chất lượng hình ảnh tốt.Việc cấu hình và lập trình đơn giản. Các vấn đề cần tiếp tục nghiên cứu: nghiên cứu ứ ng dụng OpenGL ES trong việc pháttriển các phần mềm đa phương tiện cho thiếtbị nhúng, đồng thời phải nghiên cứu nắm bắt kỹ thuật pháttriển các thư viện thực thi theo chuẩn của OpenGL ES để chủ động trong việc tối ưu hóa hệ thống đồhọatrên các môi trường phần cứng cụ thể. 6. Kết luận Khóa luận này đã đưa ra được lý thuyết tổng quan về môi trườngđồhọa cho thiếtbịnhúng nói chung và OpenGL/ES nói riêng. Từ tầng thấp nhất là lý thuyết về các hệ thống nhúng, hệ thống thời gian thực cho tới các lớp phần mềm phía trên: thế nào là API đồhọa OpenGL ES; cấu trúc, thiết kết và các tính năng mà giao diện được xây dựng thành tiêu chuẩn công nghiệp này đưa ra bao gồm những gì; thiết kế và cơ chế hoạt động của môi trường ảo EGL hỗ trợ thế nào cho việc xây dựng các thư viện đồhọa theo chuẩn OpenGL ES… Trong chương cuối của khóa luận cũng đã thực hiện được một chương trình demo thể hiện việc pháttriển và chạy các ứng dụng đồhọatrênthiếtbị nhúng. Tuy nhiên phần thực nghiệm còn thiếu sự nghiên cứu về việc pháttriển các hệ thống phần mềm đồ họa, chẳng hạn làm thế nào để viết một thư viện thực thi theo các API như OpenGL ES hay EGL? Đó là một thiếu sót cần phải được nghiên cứu trong các đề tài sau này. Tài liệu tham khảo [1] Frank Vahid and Tony Givargis. Embedded System Design:A Unified Hardware/Software Approach. Wiley; I.S.ed edition 10/2001. [2] Paul Yao and David Durant. .NET Compact Framework Programming with C#. Addison Wesley Professional 05/2004. [3] Nick Grattan and Marshall Brain. Windows® CE 3.0 Application Programming. Prentice Hall 10/2000. [4] Khronos Group. OpenGL ES 1.1.10 Specification. www.khronos.org 04/2007. [5] Khronos Group. OpenGL ES 2.0 Specification. www.khronos.org 03/2007. [6] Khronos Group. EGL 1.3 Specification. www.khronos.org 12/2006. . phương tiện trên thiết bị nhúng vào lúc này là cần thiết. Trong đề tài này, chúng tôi nghiên cứu về môi trường phát triển đồ họa trên các thiết bị nhúng OpenGL/ES thống đồ họa trên các môi trường phần cứng cụ thể. 6. Kết luận Khóa luận này đã đưa ra được lý thuyết tổng quan về môi trường đồ họa cho thiết bị nhúng