Làm cách nào để biết tôi có phiên bản opengl nào? OpenGL là gì? Tại sao trình điều khiển không được cập nhật?

Trong hầu hết các trường hợp, người dùng yêu cầu gói tệp có tên OpenGL để chạy chính xác một số trò chơi nhất định trên máy tính chạy hệ điều hành Windows 7. Nếu trình điều khiển này bị thiếu hoặc phiên bản của nó đã lỗi thời, các chương trình sẽ không bật và thông báo tương ứng sẽ được hiển thị trên màn hình yêu cầu cài đặt hoặc cập nhật BY. Trong bài viết này, chúng tôi sẽ nói chi tiết nhất có thể về việc tải các thư viện OpenGL mới.

Trước hết, cần hiểu cách cài đặt thành phần được đề cập trên PC. Tất cả các tệp cần thiết đều được cài đặt cùng với trình điều khiển bộ điều hợp đồ họa. Vì vậy, trước tiên bạn nên cập nhật phần mềm của thành phần này, sau đó chuyển sang phân tích phương pháp thay thế.

Khi bạn đã cài đặt trình điều khiển mới nhất trên card màn hình của mình và không còn bản cập nhật nào nữa nhưng thông báo về nhu cầu cập nhật OpenGL vẫn xuất hiện, hãy chuyển ngay sang phương pháp thứ ba. Nếu tùy chọn này không mang lại kết quả nào, điều đó có nghĩa là phần cứng của bạn không hỗ trợ các thư viện mới nhất. Chúng tôi khuyên bạn nên suy nghĩ về việc chọn một card màn hình mới.

Phương pháp 1: Cập nhật trình điều khiển card màn hình trong Windows 7

Như đã đề cập ở trên, các thành phần OpenGL được cài đặt cùng với các tệp bộ điều hợp đồ họa. Windows 7 có một số phương pháp để cập nhật chúng. Mỗi trong số chúng phù hợp trong các tình huống khác nhau và yêu cầu người dùng thực hiện một số hành động nhất định. Vào bài viết theo link dưới đây để làm quen chi tiết tất cả các phương pháp. Chọn một trong những phù hợp với bạn và làm theo hướng dẫn được cung cấp. Sau khi quá trình hoàn tất, chỉ cần khởi động lại máy tính của bạn và kiểm tra chức năng của trò chơi hoặc các chương trình khác yêu cầu phiên bản mới của thư viện.

Cách 2: Cập nhật các thành phần trong tiện ích độc quyền của card màn hình

Hiện nay, các nhà sản xuất bộ điều hợp đồ họa chính là AMD và NVIDIA. Mỗi phần mềm đều có phần mềm riêng đảm bảo hệ điều hành hoạt động chính xác và cho phép bạn cập nhật phần mềm. Chủ sở hữu card màn hình NVIDIA nên tham khảo tài liệu tại liên kết sau để hiểu cách cài đặt phiên bản mới của trình điều khiển OpenGL trong GeForce Experience.

Chủ sở hữu thẻ AMD cần đọc các bài viết khác, vì trong trường hợp này, mọi hành động được thực hiện trong Trung tâm điều khiển Catalyst hoặc trong Radeon Software Adrenalin Edition, tùy thuộc vào loại phần mềm được cài đặt.

Phương pháp 3: Cập nhật DirectX

Không phải là cách hiệu quả nhất nhưng đôi khi phương pháp hiệu quả là cài đặt các thành phần thư viện DirectX mới. Đôi khi nó chứa các tệp phù hợp cho phép các trò chơi hoặc chương trình cần thiết hoạt động bình thường. Trước tiên, bạn cần tìm hiểu DirectX nào đã được cài đặt trên máy tính của bạn. Để làm điều này, hãy đọc hướng dẫn trong bài viết dưới đây.

Hiện tại, phiên bản mới nhất dành cho HĐH Windows 7 là DirectX 11. Nếu bạn đã cài đặt thư viện cũ hơn, chúng tôi khuyên bạn nên cập nhật thư viện đó và kiểm tra chức năng của phần mềm. Đọc thêm về chủ đề này trong một bài viết khác.

Như bạn có thể thấy, không có gì phức tạp khi cập nhật OpenGL; vấn đề chính chỉ là card màn hình của bạn chỉ hỗ trợ các tệp mới nhất của thành phần này. Chúng tôi khuyên bạn nên thử nghiệm tất cả các phương pháp vì hiệu quả của từng phương pháp phụ thuộc vào các trường hợp khác nhau. Đọc hướng dẫn và làm theo, chắc chắn bạn sẽ thành công.

4 câu trả lời

Tôi e rằng bạn sẽ phải mở dấu nhắc lệnh trong ngày đầu tiên sử dụng Linux (đừng lo, điều đó cũng đã xảy ra với tôi). Ứng dụng -> Tiêu chuẩn -> Thiết bị đầu cuối. Gõ lspci và nhấn Enter. Tất cả các kết nối qua PCI hoặc PCI express đều được liệt kê ở đây, bao gồm cả card màn hình. Đọc danh sách cho đến khi bạn thấy điều gì đó về ATI hoặc nVidia hoặc một trong các mẫu Intel.

sau đó vào biểu đồ so sánh card đồ họa của Wikipedia để tìm hiểu phiên bản OpenGL mà card của bạn hỗ trợ.

hãy nhớ rằng họ chỉ cho bạn biết phiên bản phần cứng hỗ trợ. Để có thể chạy các thư viện OpenGL, bạn cũng cần có driver hỗ trợ chúng. Nhiều trình điều khiển video cho từng chip thế hệ cho Linux. Ubuntu đi kèm với các phiên bản nguồn mở, phiên bản này không tệ nhưng có xu hướng đi sau một bước so với các trình điều khiển độc quyền do nhà sản xuất card đồ họa phát hành (thường được gọi là trình điều khiển nhị phân hoặc trình điều khiển độc quyền). Nếu phần cứng của bạn hỗ trợ OpenGL 2.0 (hầu hết đều hỗ trợ), bạn có thể thử trình điều khiển độc quyền. Chúng được gọi là nvidia-current cho nvidia và fglrx cho ATI. Đối với Intel, chỉ tồn tại trình điều khiển nguồn mở.

ví dụ từ máy tính xách tay của tôi:

Nhắc>lspci | grep VGA 00:02.0 Bộ điều khiển tương thích VGA: Bộ điều khiển đồ họa tích hợp bộ xử lý lõi Intel Corporation (rev 02) 01:00.0 Bộ điều khiển tương thích VGA: nVidia Corporation Device 0df0 (rev a1) nhắc>

và đoạn trích tương ứng từ lshw:

*-pci:0 mô tả: Sản phẩm cầu nối PCI: Bộ xử lý lõi PCI Express x16 Nhà cung cấp cổng gốc: ID vật lý của Tập đoàn Intel: 1 thông tin bus: :00:01.0 phiên bản: 02 chiều rộng: xung nhịp 32 bit: Khả năng 33 MHz: pci pm msi pciexpress normal_decode cấu hình bus_master cap_list: driver=pcieport tài nguyên: irq:42 ioport:2000(size=4096) bộ nhớ:fb000000-fbffffff ioport:f0000000(size=167772160) *-mô tả hiển thị: Sản phẩm bộ điều khiển tương thích VGA: nhà cung cấp nVidia Corporation: nVidia Corporation vật lý id: 0 thông tin bus: :01:00.0 phiên bản: a1 chiều rộng: 64 bit xung nhịp: 33 MHz khả năng: pm msi pciexpress vga_controller bus_master cap_list cấu hình: driver=nouveau độ trễ=0 tài nguyên: irq:16 bộ nhớ: fb000000-fbffffff bộ nhớ:f0000000- bộ nhớ f7ffffff:f8000000-f9ffffff ioport:2000(size=128) *-mô tả màn hình: Sản phẩm bộ điều khiển tương thích VGA: Nhà cung cấp Bộ điều khiển đồ họa tích hợp bộ xử lý lõi: id vật lý của Intel Corporation: 2 bus info.

  1. Trình điều khiển cho card màn hình NVIDIA đi kèm với hệ điều hành Windows thường không hỗ trợ OpenGL. Các ứng dụng sẽ sử dụng kết xuất phần mềm Windows OpenGL (một trình bao bọc trong Direct3D trong Windows Vista). Bạn có thể kiểm tra sự hiện diện của trình điều khiển OpenGL trong hệ thống bằng cách sử dụng tiện ích OpenGL Extensions Viewer và GPU Caps Viewer. Nếu họ hiển thị rằng nhà cung cấp OpenGL là Microsoft thì hệ thống không có trình điều khiển OpenGL. Tải xuống và cài đặt trình điều khiển card đồ họa mới nhất từ ​​trang web NVIDIA.
  2. Phiên bản mới của trình điều khiển có thể đã thêm hỗ trợ cho phiên bản mới của API OpenGL mà ứng dụng chưa biết. Ví dụ: trình điều khiển thông báo cho các ứng dụng rằng nó hỗ trợ OpenGL phiên bản 2.0 và ứng dụng/trò chơi sẽ kiểm tra xem có hỗ trợ cho OpenGL phiên bản 1.X hay không. Để giải quyết vấn đề, bạn có thể sử dụng RivaTuner trong cài đặt OpenGL trên tab “Tương thích” để buộc ghi đè chuỗi phiên bản OpenGL được trình điều khiển báo cáo thành chuỗi được ứng dụng hỗ trợ, chẳng hạn như 1.5. Tùy chọn này không ảnh hưởng đến việc thực thi OpenGL bằng card màn hình nhưng vì lý do tương tự, các ứng dụng yêu cầu OpenGL phiên bản 2.0 có thể ngừng hoạt động. Một cách linh hoạt hơn là tạo hồ sơ trình điều khiển cho ứng dụng có vấn đề bằng tiện ích nHancer, chỉ định phiên bản được yêu cầu trong tùy chọn “Phiên bản OpenGL được báo cáo” trên tab “Tương thích”.
  3. Sự cố có thể xảy ra nếu nhiều trình điều khiển OpenGL được cài đặt trên hệ thống vì một số lý do. Trong sổ đăng ký tại địa chỉ HKLM\PHẦN MỀM\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers (HKLM\Software\Microsoft\Windows\CurrentVersion\OpenGLdriversđối với Windows 9x-ME) kiểm tra xem có một khóa con duy nhất RIVATNT không và khóa Dll trong phần này có giá trị nvoglnt (có một khóa duy nhất có giá trị nvopengl.dll dành cho Windows 9x-ME). Nếu có các phần phụ khác, ví dụ như ati2dvag (trình điều khiển ATI OpenGL), trước tiên bạn nên xóa chúng bằng cách xuất chúng sang tệp .reg.
  4. Việc triển khai OpenGL 2.0 cho GeForce FX và các GPU cao hơn trong trình điều khiển NVIDIA yêu cầu CPU hỗ trợ cho các tiện ích mở rộng SSE. Nếu các tiện ích mở rộng này không có sẵn, trình điều khiển OpenGL ICD sẽ không được khởi chạy, các ứng dụng OpenGL sẽ đóng hoặc kết xuất phần mềm sẽ không được sử dụng. Bạn có thể kiểm tra quá trình khởi tạo trình điều khiển bằng tiện ích OpenGL Extensions Viewer và GPU Caps Viewer; bạn có thể kiểm tra các tiện ích mở rộng được bộ xử lý hỗ trợ bằng các tiện ích CPU-Z hoặc Sandra. Nếu bộ xử lý không hỗ trợ SSE, bạn có thể sử dụng các phiên bản trình điều khiển cũ hơn (tối đa 75.XX) hoặc sử dụng RivaTuner trong cài đặt OpenGL trên tab “Tương thích”, bật “Chế độ mô phỏng NV25” thay vì mặc định “Tăng tốc tối đa” " Phương sách cuối cùng, bạn có thể sử dụng OpenGL -> trình bao bọc Direct3D GLDirect hoặc TitaniumGL. Đôi khi bộ xử lý hỗ trợ SSE, nhưng hỗ trợ không hoạt động do BIOS bo mạch chủ đã lỗi thời. Vấn đề này đặc biệt điển hình đối với các hệ thống có bộ xử lý AMD Athlon XP và Duron. Cập nhật BIOS bo mạch chủ có thể khôi phục hỗ trợ SSE.
  5. Nếu hệ thống có nhiều card màn hình dựa trên các GPU NVIDIA khác nhau thì trình điều khiển OpenGL sẽ chỉ hỗ trợ phiên bản OpenGL được tất cả các card màn hình hỗ trợ.

Đôi khi, để khởi chạy một ứng dụng hoặc trò chơi trên Windows, bạn có thể cần tên gói chương trình được cài đặt trên hệ điều hành.

Và do đó, hãy trả lời câu hỏi làm thế nào để biết cái nào đã được cài đặt.

Biết phiên bản chính xác của gói này, ban đầu chỉ được sử dụng cho mục đích chơi trò chơi, nhưng sau đó được sử dụng để hỗ trợ phát lại các tệp đa phương tiện và thực hiện các tác vụ khác, bạn có thể biết liệu PC của mình có đủ tài nguyên hay không hoặc liệu có cần cập nhật (của chính chương trình hoặc các phần tử máy tính).

Phiên bản mới cung cấp những gì?

Một phần đáng kể của phần mềm chỉ hoạt động trong môi trường thích hợp - với các trình điều khiển và gói phần mềm cần thiết.

Ví dụ: Adobe Photoshop yêu cầu cài đặt phần mềm OpenGL và hầu hết tất cả các trò chơi hiện đại sẽ không chạy nếu không có phần mềm này.

Kiến thức chính xác về gói đa phương tiện (cũng như tài nguyên máy tính) cho phép bạn tránh được các vấn đề sau:

  • Mua hoặc tải xuống các ứng dụng không được hệ thống hỗ trợ;
  • Cố gắng cài đặt các phiên bản DirectX cũ hơn.

Đối với hầu hết các ứng dụng yêu cầu phần mềm đặc biệt như DirectX, nó đều được bao gồm. Và trong quá trình cài đặt, bạn nên cài đặt nó trên máy tính hoặc cập nhật nó.

Tuy nhiên, nếu cập nhật tự động không xảy ra và chương trình không khởi động vì lý do nào đó, bạn sẽ cần tìm hiểu gói đa phương tiện để hiểu liệu tính không tương thích của nó với ứng dụng có gây ra sự cố hay không.

Một cách đơn giản để xác định

Việc tìm ra phiên bản DirectX trên hệ thống được cài đặt gần đây khá đơn giản - trong các hệ điều hành hiện đại, gói này đã được bao gồm trong Windows. Và bạn có thể xác định sự đa dạng theo tên của hệ thống:

  • Một trong những hệ thống phổ biến nhất, Windows 7, được tích hợp sẵn DirectX 10, phù hợp với hầu hết các ứng dụng đồ họa, trò chơi và tệp đa phương tiện;
  • Trong Windows XP lỗi thời, phiên bản 9 của gói được cài đặt theo mặc định, phiên bản này thường phải được cập nhật để chạy các chương trình hiện đại hơn;
  • Windows 8 bao gồm DirectX 11;
  • Cả hai phiên bản thứ 11 và 12 của chương trình đều có thể được đưa vào Windows thứ mười, mới nhất.

Định nghĩa bằng các công cụ tích hợp

Để xác định chính xác phiên bản DirectX bằng công cụ chẩn đoán tích hợp, bạn cần:

  1. Mở menu thực thi lệnh bằng cách nhấn đồng thời các phím Windows + “R”;
  2. Nhập lệnh dxdiag;
  3. Trong cửa sổ mở ra sau khi thực hiện lệnh, trên tab đầu tiên, hãy tìm thông tin về chương trình nằm ở cuối danh sách.

Khuyên bảo! Do hệ thống chỉ hiển thị các giá trị số nguyên nên đôi khi thông tin DirectX 11 được hiển thị có thể có nghĩa là hệ thống thực sự đã cài đặt phiên bản 11.1 hoặc 11.2. Tuy nhiên, trong hầu hết các trường hợp, những chi tiết như vậy không quan trọng.

Một nơi khác để tìm hiểu phiên bản DirectX là bảng điều khiển của card màn hình, nếu nó được cài đặt.

Ví dụ: đối với các sản phẩm NVidia, thông tin đó được hiển thị khi xem thông tin hệ thống.

Ngoài ra, còn có những tiện ích đặc biệt còn cung cấp tất cả thông tin cần thiết về hệ thống, bao gồm cả phiên bản. Ví dụ, trước đây được gọi là Everest.

Bạn có thể tìm thấy phiên bản miễn phí của tiện ích này trên Internet và cài đặt trên máy tính của mình - trong tương lai, bạn sẽ cần nó không chỉ để xác định xem bạn có phiên bản DirectX nào.

Bạn có thể tìm thấy các tính năng tương tự trong các tiện ích khác.

Phải làm gì tiếp theo?

Vì vậy, thông tin về phiên bản nào của gói phần mềm được cài đặt đã được nhận. Và bây giờ, để chương trình hoặc trò chơi của bạn có thể chạy được, bạn cần biết những yêu cầu tối thiểu của nó.

Chúng có thể được tìm thấy trên Internet trên trang web của nhà sản xuất hoặc trên các diễn đàn, nơi thông tin về trò chơi thường được đăng trước khi chúng lên kệ.

Một mặt, để chạy hầu hết các chương trình, chỉ cần cài đặt phiên bản mới nhất, phiên bản này có thể hỗ trợ tất cả các phiên bản trước đó là đủ. Hoặc ít nhất là DirectX 11.

Nhưng có hai vấn đề ở đây:

  1. Thẻ video lỗi thời không hỗ trợ phiên bản trình điều khiển thứ 11;
  2. Một số trò chơi yêu cầu phiên bản cụ thể của gói để chạy.

Trong trường hợp này, bạn sẽ phải cài đặt DirectX được chỉ định trong yêu cầu.

Và, nếu hệ thống cài đặt phiên bản mới hơn theo mặc định và do đó, theo quan điểm của hệ thống, không yêu cầu cập nhật (điều này có thể gây xung đột phần mềm và dẫn đến lỗi khởi động), bạn nên gỡ bỏ hoàn toàn gói và cài đặt một phiên bản mới. một cái tương thích với chương trình của bạn.

Bạn có thể tìm và tải chúng hoàn toàn miễn phí trên trang web của nhà sản xuất.

Các video chuyên đề:



tìm hiểu phiên bản opengl linux (4)

Cách dễ nhất và nhanh nhất là sử dụng công cụ chẩn đoán như GPU Caps Viewer.

Bạn cũng có thể sử dụng glGetString(GL_VERSION) nhưng hãy nhớ rằng phiên bản bạn muốn hiển thị là phiên bản của bối cảnh OpenGL nhất định, đây không nhất thiết phải là phiên bản cao nhất mà GPU của bạn có thể làm được. Tuy nhiên, nếu bạn đang tạo ngữ cảnh có cài đặt mặc định, có thể bạn sẽ kết thúc với ngữ cảnh OpenGL lớn nhất có thể có trong cấu hình tương thích, vì vậy, phương pháp này có thể hữu ích.

Ngoài ra, vì glGetString(GL_VERSION) dành riêng cho bối cảnh OpenGL nhất định, nên bạn cần phải tạo trước. Trên thực tế cho cuộc gọi bất kì Hàm gl* yêu cầu ngữ cảnh GL.

Thật vậy, cập nhật trình điều khiển Có lẽ cung cấp cho bạn phiên bản GL cao hơn, nhưng không chắc phiên bản chính sẽ thay đổi. Ví dụ: nếu bạn có hỗ trợ GL 3.1, rất có thể trình điều khiển mới nhất sẽ cung cấp cho bạn GL 3.3 chứ không phải GL 4.0.

Tôi đang sử dụng Windows 7. Tôi đang lập trình với OpenGL. Nhưng tôi thấy rằng có một số khả năng mà tôi có thể sử dụng. Vì vậy, tôi muốn kiểm tra phiên bản OpenGL trên hệ thống của mình. Tôi đang sử dụng mã dưới đây để kiểm tra nó

Phiên bản const char* = (const char*)glGetString(GL_VERSION);

Nhưng tôi nhận được một con trỏ null. Và nếu tôi muốn cập nhật OpenGL thì phải làm như thế nào?

hãy thử sử dụng đoạn mã sau, nó hoạt động với tôi:

cout<< "OpenGL Version: " << glGetString(GL_VERSION) << endl;

Đảm bảo bạn bao gồm chuỗi và iostream trong chương trình của mình.

Bạn cần bối cảnh GL hiện tại trước khi có thể hỏi bạn có phiên bản nào.

Vì vậy, trước tiên hãy tạo một bối cảnh, gọi wglMakeCurrent trên đó và sau đó bạn có thể gọi glGetString.

Phiên bản được báo cáo đến từ trình điều khiển bạn đã cài đặt. Phiên bản OpenGL mà phần cứng của bạn có thể hỗ trợ không phải là phiên bản được "cập nhật" (vì một số tính năng phần cứng sẽ bị thiếu để hỗ trợ phiên bản mới nhất và tốt nhất).

Vì vậy, điều tốt nhất bạn có thể làm là cập nhật trình điều khiển của mình, nhưng đừng mong đợi kết quả tuyệt vời, nó sẽ tạo ra OpenGL mới.

Bạn cần tạo bối cảnh OpenGL(WGL) trước khi gọi glGetString(GL_VERSION):

#bao gồm #bao gồm #pragma comment (lib, "opengl32.lib") LRESULT GỌI LẠI WndProc(HWND hWnd, tin nhắn UINT, WPARAM wParam, LPARAM lParam); int WinMain(__in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd) ( MSG msg = (0); WNDCLASS wc = (0); wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hbrBackground = (HBRUSH)(COLOR_BACKGROUND); wc.lpszClassName = L"oglversionchecksample"; wc.style = CS_OWNDC; if(!RegisterClass(&wc)) return 1; CreateWindowW(wc.lpszClassName,L"opengllversioncheck",WS_OVERLAPPEDWINDOW|WS_VISIBLE,0, 0,640,480,0,0,hInstance,0); while(GetMessage(&msg, NULL, 0, 0) > 0) DispatchMessage(&msg); return 0; ) LRESULT CUỘC GỌI WndProc(HWND hWnd, thông báo UINT, WPARAM wParam, LPARAM lParam ) ( switch(message) ( case WM_CREATE: ( PIXELFORMATDESCRIPTOR pfd = ( sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags PFD_TYPE_RGBA, //Loại bộ đệm khung. RGBA hoặc bảng màu. 32, //Độ sâu màu của bộ đệm khung. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, //Số bit cho bộ đệm độ sâu 8, //Số bit cho bộ đệm khuôn 0 , //Số lượng bộ đệm Aux trong bộ đệm khung. PFD_MAIN_PLANE, 0, 0, 0, 0 ); HDC ourWindowHandleToDeviceContext = GetDC(hWnd); int letWindowsChooseThisPixelFormat; letWindowsChooseThisPixelFormat = ChoosePixelFormat(ourWindowHandleToDeviceContext, &pfd); SetPixelFormat(ourWindowHandleToDeviceContext,letWindowsChooseThisPixelFormat, &pfd); HGLRC ourOpenGLRenderingContext = wglCreateContext(ourWindowHandleToDeviceContext); wglMakeCurrent(ourWindowHandleToDeviceContext, ourOpenGLRenderingContext); MessageBoxA(0,(char*)glGetString(GL_VERSION), "OPENGL VERSION",0); wglDeleteContext(ourOpenGLRenderingContext); PostQuitMessage(0); ) phá vỡ; mặc định: return DefWindowProc(hWnd, message, wParam, lParam); ) trả về 0; )