2013-04-22 27 views
5

Một số máy tính có nhiều hơn một card đồ họa/chipset cài đặt, ngay cả khi (ví dụ cho máy tính xách tay) họ không có nhiều hơn một màn hình.Cách tạo ngữ cảnh OpenGL bằng trình điều khiển đồ họa cụ thể?

Tôi đang gặp sự cố với hệ thống máy tính xách tay có cả phần cứng đồ họa Intel và Nvidia. Trình điều khiển của Intel nổi tiếng khủng khiếp trong hỗ trợ OpenGL của họ, và mã của tôi đang chạy trên một lỗi hiển thị không thể giải thích được, bởi vì nó dường như mặc định với hệ thống Intel, chứ không phải hệ thống của Nvidia, khi tạo ngữ cảnh hiển thị.

Có cách nào để ngăn điều này khi khởi động không? Để nói điều gì đó như "bình chọn cho tất cả các trình điều khiển đồ họa có sẵn, hãy tránh trình điều khiển Intel nếu có thể, và xây dựng cho tôi một bối cảnh dựng hình OpenGL với trình điều khiển sẽ hoạt động"?

+0

Trong bảng điều khiển NVidia, bạn có thể chọn GPU mặc định –

+0

@MichaelIV: Cảm ơn, nhưng đó không phải là những gì tôi yêu cầu. –

+0

Nó không chỉ là về các trình điều khiển nhưng về GPU quá.Many ngày nay máy tính xách tay có 2 thẻ: Intel và dành riêng (NVidia hoặc ATI). Do đó bạn phải thiết lập phần cứng đầu tiên thông qua giao diện thiên vị hoặc cửa sổ như NVidia panel.If bạn don 't chuyển đổi phần cứng đầu tiên cố gắng để chọn trình điều khiển khác nhau là vô nghĩa. –

Trả lời

1

Không có cách nào di động để làm những gì bạn đang yêu cầu, nhưng tài liệu này mô tả làm thế nào để buộc "hiệu suất đồ họa Render" trên hệ thống với công nghệ NVIDIA Optimus:

http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf 

Cụ thể, hãy tham khảo phần " toàn cầu NvOptimusEnablement biến (mới trong điều khiển phát hành 302)", mà nói:

Bắt đầu với các trình điều khiển phiên bản 302, các nhà phát triển ứng dụng có thể trực tiếp tài xế Optimus khi chạy để sử dụng hiệu suất cao Đồ họa để hiển thị bất kỳ ứng dụng nào - ngay cả những ứng dụng mà không có hồ sơ ứng dụng hiện có. Họ có thể thực hiện điều này bằng cách xuất biến toàn cục có tên là NvOptimusEnablement. Trình điều khiển Optimus tìm kiếm sự tồn tại và giá trị của quá trình xuất. Chỉ có e LSB của các vấn đề DWORD tại thời điểm này. Giá trị 0x00000001 cho biết việc hiển thị phải được thực hiện bằng Đồ họa hiệu suất cao. Giá trị của 0x00000000 chỉ ra rằng phương pháp này sẽ bị bỏ qua.

Ví dụ Cách sử dụng:

extern "C" { 
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; 
} 

Một khả năng khác là phần mở rộng WGL_nv_gpu_affinity, nhưng bối cảnh WGL của bạn cần hỗ trợ nó và tôi không chắc chắn nếu nó hoạt động trên hệ thống hỗn hợp Intel/NVIDIA:

http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt 
Các vấn đề liên quan