intTypePromotion=1
ADSENSE

Giới thiệu OpenGL

Chia sẻ: Bui Van Quynh | Ngày: | Loại File: PDF | Số trang:35

86
lượt xem
9
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Phần cứng Thiết bị vào Hàm vẽ cơ bản. Phần mềm Hàm với qlý cửa sổ Hàm về máy quay. Thiết bị ra. Đồ họa độc lập thiết bị. Thư viện đồ họa độc lập thiết bị: cho phép sử dụng tập hàm đồ họa chung chạy trên nhiều hệ thống khác nhau.Đồ họa độc lập thiết bị: OpenGL. Cho phép cùng chương trình đồ họa chạy trên nhiều máy khác nhau và cho ra kết quả hầu như hoàn toàn giống nhau....

Chủ đề:
Lưu

Nội dung Text: Giới thiệu OpenGL

  1. Giới thiệu OpenGL
  2. Các công cụ ĐHMT Công cụ Phần Phần cứng mềm Thiết bị Hàm vẽ Hàm với Hàm về Thiết bị ra vào cơ bản qlý cửa sổ máy quay
  3. Đồ họa độc lập thiết bị • Thư viện đồ họa độc lập thiết bị: cho phép sử dụng tập hàm đồ họa chung chạy trên nhiều hệ thống khác nhau. OpenGL
  4. Đồ họa độc lập thiết bị: OpenGL • Cho phép cùng chương trình đồ họa chạy trên nhiều máy khác nhau và cho ra kết quả hầu như hoàn toàn giống nhau. – Dùng các tệp .dll • OpenGL như là một API: nó điều khiển phần cứng bạn đang sử dujg và bạn chỉ cẩn dùng các hàm của OpenGL thay vì điều khiển thiết bị phần cứng trực tiếp. • OpenGL là open source (free).
  5. Chương trình hướng sự kiện • Đáp ứng các sự kiệt như click, di chuyển chuột, bấm phím, thay đổi kích cỡ cửa sổ. Hệ thống quản lý sự kiện theo hàng đợi. • Người lập trình cung cấp các hàm “call-back” để điều khiển mỗi sự kiện. • Hàm call-back phải được đăng kí với OpenGL để OpenGL biết hàm nào điều khiển sự kiện nào. • Hàm đăng kí không gọi nó!
  6. Cài đặt và cấu hình • Files: .h, .lib, .dll – Toàn bộ thư mục gl được đặt trong thư mục Include của Visual C++ – Toàn bộ các tệp lib được đặt trong thư mục lib của Visual C++ – Toàn bộ các tệp dll được đặt trong C:\Windows\System32
  7. Sử dụng OpenGL • Includes: – – – – – (nếu sử dụng)
  8. Thư viện thêm vào thư mục include • GL, câu lệnh bắt đầu với GL; • GLUT, GL Utility Toolkit, mở cửa sổ, phát triển thực đơn và quản lý sự kiện. • GLU, GL Utility Library, cung cấp các hàm mức cao để điều khiển các thao tác vẽ phức tạp. • GLUI, User Interface Library, được tích hợp vào GLUT library. – Hàm GLUT phải có sẵn cho GLUI để thao tác được chính xác. – GLUI cung cấp các điều khiển và thực đơn phức tạp cho các ứng dụng OpenGL
  9. Sử dụng OpenGL • Thay đổi project settings: Visual C++ 6.0 – Project /Settings – Trong Object/library modules: thêm glui32.lib glut32.lib glu32.lib opengl32.lib (dùng dấu cách phân cách) – Trong Project Options: thêm cùng tập các tệp .lib – Đóng thực đơn Project và lưu workspace
  10. Sử dụng OpenGL (2) • Thay đổi project settings: Visual C++ .NET 2003 – Project/Properties/Linker/Command Line – Thêm glui32.lib glut32.lib glu32.lib opengl32.lib – Đóng thực đơn Project và lưu sự thay đổi
  11. Lệnh vẽ cơ bản • setPixel(x, y, color) – Pixel tại (x, y) có màu color – Tên khác: putPixel(), SetPixel(), hoặc drawPoint() • line(x1, y1, x2, y2) – Đường thằng giữa (x1, y1) và (x2, y2) – Tên khác: drawLine() or Line().
  12. Lệnh vẽ cơ bản (2) • current position (cp), vị trí hiện tại. • moveTo(x,y) chuyển vị trí hiện tại đến (x, y). • lineTo(x,y) vẽ đường thẳng từ vị trí hiện tại đến (x, y) và thay đổi cp thành (x, y).
  13. Ví dụ: vẽ hình vuông • moveTo(4, 4); //move to starting corner • lineTo(-2, 4); • lineTo(-2, -2); • lineTo(4, -2); • lineTo(4, 4); //close the square
  14. Khung một chương trình // include OpenGL libraries void main() { glutDisplayFunc(myDisplay); // register the redraw function glutReshapeFunc(myReshape); // register the reshape function glutMouseFunc(myMouse); // register the mouse action function glutMotionFunc(myMotionFunc); // register the mouse motion function glutKeyboardFunc(myKeyboard); // register the keyboard action function …perhaps initialize other things… glutMainLoop(); // enter the unending main loop } …all of the callback functions are defined here
  15. Hàm Callback • glutDisplayFunc(myDisplay); – Vẽ lại cửa màn hình khi cửa sổ được mở. • glutReshapeFunc(myReshape); – Khi thay đổi kích cỡ cửa sổ • glutIdleFunc(myIdle); – Khi không có sự kiện gì xảy ra việc vẽ lại chỉ cần sử dụng void myIdle() {glutPostRedisplay();}
  16. Hàm Callback (2) • glutMouseFunc(myMouse); – Handles mouse button presses. Knows mouse location and nature of button (up or down and which button). • glutMotionFunc(myMotionFunc); – Handles case when the mouse is moved with one or more mouse buttons pressed.
  17. Hàm Callback (3) • glutPassiveMotionFunc(myPassiveMotionFunc) – Điều khiển khi chuột đi vào cửa sổ nhưng không có nút nào được bấm. • glutKeyboardFunc(myKeyboardFunc); – Điều khiển ấn và nhả phím. • glutMainLoop() – Chạy liên tục và chờ các sự kiện xảy ra. Khi có sự kiện xảy ra, thì tham chiếu đến hàm callback tương ứng.
  18. Một ct GL để mở một cửa sổ (2) // appropriate #includes go here – see Appendix 1 void main(int argc, char** argv) { glutInit(&argc, argv); // initialize the toolkit glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // set the display mode glutInitWindowSize(640,480); // set window size glutInitWindowPosition(100, 150); // set window upper left corner position on screen glutCreateWindow("my first attempt"); // open the screen window (Title: my first attempt)
  19. Một ct GL để mở một cửa sổ (3) // register the callback functions glutDisplayFunc(myDisplay); glutReshapeFunc(myReshape); glutMouseFunc(myMouse); glutKeyboardFunc(myKeyboard); myInit(); // additional initializations as necessary glutMainLoop(); // go into a perpetual loop } • Terminate program by closing window(s) it is using.
  20. Giải thích • glutInit (&argc, argv) khởi tạo Open-GL Toolkit • glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB) định vị buffer hiển thị đơn và chế độ màu RGB để vẽ. • glutInitWindowSize (640, 480) Tạo cửa sổ 640x480.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2