2009-03-07 67 views

Trả lời

26

OpenGL là thư viện để vẽ đồ họa ở mức thấp. Nó xuất sắc chủ yếu ở đồ họa 3D. Đối thủ cạnh tranh quan trọng nhất đối với OpenGL là Direct3D (không phải là toàn bộ DirectX).

GL chỉ thực sự mạnh mẽ nếu bạn tăng tốc phần cứng. Ngày nay, hầu như mọi giải pháp máy tính để bàn hoặc laptop đều có khả năng tăng tốc GL, nhưng trên một số hệ thống mà card đồ họa được tích hợp vào chipset, nó vẫn còn khá chậm.

Để hack hàng ngày, GL có thể phục vụ nhiều mục đích khác thường. Lý do là bạn có thể tận dụng sức mạnh xử lý của GPU cho các tác vụ liên quan đến đồ họa. Đối với mọi thứ không có đồ họa, các ngôn ngữ mới hơn như CUDA cũng tồn tại để truy cập GPU.

Trong khi điểm mạnh thực sự của GL nằm trong hiển thị cảnh 3D, nó cũng thường được sử dụng cho thao tác 2D hoặc bố cục. Lý do là kiến ​​trúc tăng tốc 2D của card đồ họa thường không đạt được sức mạnh (tự do) hoặc hiệu năng của GL. Đó là lý do tại sao đôi khi GL được sử dụng cho đầu ra video (chủ yếu là nhân rộng) hoặc các tác vụ pha trộn, ngay cả khi tăng tốc 2D cụ thể cho các tác vụ này sẽ có sẵn. Mac OS X là một ví dụ nổi bật của toàn bộ màn hình (tùy chọn) được hiển thị thông qua GL để cho phép các hiệu ứng hấp dẫn mà không cần tải CPU cao. Nhưng nó cũng có thể được sử dụng ví dụ để pha trộn glyphs văn bản chống răng cưa trên nền kết cấu. Ngay khi bạn thực hiện một nhiệm vụ quan trọng về đồ họa, hiệu suất đồ họa, có thể bạn sẽ muốn GPU trợ giúp (thậm chí nếu bạn không vẽ trên màn hình) và sau đó OpenGL là câu trả lời sạch sẽ, chuẩn hóa, đa nền tảng theo nhu cầu của bạn. Bộ công cụ giao diện đồ họa ngày nay chủ yếu không cung cấp cho bạn bản vẽ tăng tốc GPU, nhưng việc đưa biểu hiện GL vào các tiện ích con của chúng. Vì vậy, bạn có thể sử dụng chúng để vẽ giao diện người dùng và bao gồm đồ họa thời gian thực hiệu quả quan trọng của bạn, nơi nó phù hợp. Xây dựng một giao diện người dùng toàn bộ bên trong GL là một nỗi đau, nhưng cũng có những giải pháp cho rằng có sẵn (trường hợp sử dụng điển hình là trò chơi với giao diện người dùng trong trò chơi).

+0

Tại sao tăng tốc 2D thường chậm hơn? Nó sẽ không có ý nghĩa cho mọi thứ để đi nhanh hơn chỉ với 2 trục? – mk12

+1

Đầu tiên, hầu hết các hoạt động bổ sung trong 3D, giống như các hoạt động ma trận phức tạp hơn, về cơ bản được thực hiện trong phần cứng, do đó chúng là 'miễn phí' so với các thao tác 2D đơn giản hơn. Bản thân bản vẽ sau đó được thực hiện trong 2D cho cả hai trường hợp (xem thuật toán Scanline). Thứ hai, khả năng tăng tốc 3D thường nhanh hơn vì các nhà cung cấp GPU nỗ lực nhiều hơn trong việc tối ưu hóa các trình điều khiển cho GL và DirectX thay vì tăng tốc phần cứng 2D; đặc biệt là cho các nền tảng khác với Windows. Hầu hết các tiêu chí của GPU là các tiêu chuẩn chơi game 3D. Đó là nơi mà sự cạnh tranh trên thị trường diễn ra. – ypnos

15

Đó là điều cơ bản hơn. OpenGL cho phép bạn thực hiện bản vẽ ở mức độ thấp (nghĩ "vẽ một đường từ đây đến đây" thay vì "vẽ một nút"). Các hoạt động OpenGL cũng thường được tăng tốc phần cứng và do đó rất hiệu quả, và API OpenGL cho phép bạn dễ dàng làm việc với 3D.

Chọn giữa OpenGL và bộ công cụ GUI như QT hoặc GTK thực sự phụ thuộc vào việc bạn đang cố gắng vẽ các phần tử giao diện người dùng cho ứng dụng của mình hay muốn kiểm soát rất tốt cách đồ họa của bạn được vẽ.

Đôi khi, bộ công cụ GUI sử dụng OpenGL dưới bìa để vẽ các phần tử trên màn hình của chúng.

6

OpenGL là API đồ họa khi các thư viện đồ họa phức tạp hơn được xây dựng. Nếu bạn quan tâm đến phát triển đồ họa, và trong đồ họa 3D cụ thể, sau đó nó cũng có giá trị làm cho nó là người quen. Đó là và hệ thống cực kỳ mạnh mẽ có thể làm mọi thứ từ vẽ một đường xuyên qua Quake render để xử lý hiển thị hình ảnh trong không khí thực tế.

Điểm xuất phát của bạn cho tất cả mọi thứ liên quan đến OpenGL là OpenGL.org, có liên kết đến mọi thứ bạn cần.

Nếu bạn thích sách giáo khoa, và đó không phải là một ý tưởng tồi với OpenGL, thì văn bản cuối cùng là 'Hướng dẫn lập trình OpenGL', được gọi là 'Sách đỏ' thông tục về bìa sách.Bạn có thể muốn bổ sung điều này với 'OpenGL Shading Language' (hoặc The Orange Book) để thực hiện những gì nó nói.

Một trong những điều tốt đẹp về OpenGL là có một bộ công cụ kiểm tra đơn giản - GLUT - đã được triển khai ở hầu hết các ngôn ngữ với các ràng buộc và rất dễ dàng để bắt đầu và chạy thử nghiệm.

Vì vậy, hãy kết xuất ấm trà của bạn!

4

GTK, QT, MFC, wxwidget vv là bộ công cụ cửa sổ - chúng cung cấp các điều khiển như hộp thoại, tiện ích, nút, v.v ... để tạo ứng dụng gui.

Một trong các điều khiển mà chúng thường cung cấp là canvas mà bạn có thể vẽ bằng các lệnh đồ họa (đường vẽ, vẽ vòng tròn, v.v.). Họ cũng có thể cung cấp một khung OpenGL cũng như bạn có thể vẽ bằng các lệnh OpenGL.

OpenGL (trong thuật ngữ đơn giản) là ngôn ngữ hiển thị đối tượng 3D, rất mạnh mẽ, đa nền tảng và hơi phức tạp (đặc biệt nếu toán học yếu!) NHƯNG tốt hơn nhiều so với cố gắng thực hiện bất kỳ 3D nào thứ của bạn! Nó có thể được bực bội ở lần đặc biệt là nếu bạn làm điều gì đó sai trái và nó chỉ vẽ một màn hình trống.

Chỉ để làm cho mọi việc phức tạp hơn một chút, còn có bộ công cụ cửa sổ được viết trong OpenGL, nơi OpenGL cung cấp một bộ nút, hộp thoại, vv trong cảnh VÀ có những lúc (đằng sau hậu trường) tất cả các yếu tố GUI được sử dụng bởi một cái gì đó như QT thực sự đang được rút ra bởi OpenGL!

Các vấn đề liên quan