2012-11-16 27 views
8

Tôi đang tạo một trò chơi C++ và tôi muốn nó tự động nhận được độ phân giải màn hình của người dùng.Cách di động trong C++ để có độ phân giải máy tính để bàn

Tôi đã tìm thấy giải pháp chỉ dành cho cửa sổ cho đến nay - có cách nào/thư viện để tìm giải pháp trên Windows/Mac/Linux không?

+1

Rõ ràng Qt có 'QApplication :: desktop() -> screenGeometry();'. Điều đó đã không được kéo từ tài liệu, và tôi chưa bao giờ sử dụng Qt, vì vậy xin lỗi nếu nó sai. – chris

+6

Tôi không nghĩ một thứ gì đó hoàn toàn có thể di chuyển được ... – Mysticial

+0

Mã di động cho đồ họa? Không đời nào. (@Mystical +1) –

Trả lời

7

Có một số thư viện giúp bạn đạt được các công cụ cấp thấp để giải quyết. Bạn có lẽ sẽ cần nhiều thứ hơn trên các nền tảng anyways, vì vậy tôi sẽ liệt kê một số:

  • SFML là C++ thư viện trừu tượng hóa phần lớn những thứ I/O, bao gồm quản lý hiển thị. Cũng hỗ trợ một số nền tảng.
  • Cổ điển SDL, mặc dù là một thư viện C C được sử dụng rộng rãi trong nền tảng phát triển trò chơi độc lập và hỗ trợ một số nền tảng. Giống như SFML, nó không chỉ là quản lý hiển thị.
  • GLFW, xem wardds answer, cũng là một C thư viện và cũng đặt ra một lớp trừu tượng, nhưng tập trung hơn vào màn hình và bàn phím/chuột I/O thay vì rộng I/O (vv audio)
+0

Ồ, tôi đang sử dụng SFML rồi. Tôi không biết nó có chức năng như vậy, nhờ sự giúp đỡ của bạn! :) –

+0

[Bài đăng trên blog này, phần Nhận chế độ hiển thị hiện tại] (https://sfmlcoder.wordpress.com/2011/06/12/video-modes-and-windowing/) cung cấp cho mã cách thực hiện. –

5

GLFW cung cấp phương thức crossplatform (dành cho Windows, Mac và Linux) để nhận chế độ video trên máy tính để bàn. Nó là C api, nhưng nó sẽ hoạt động trong C++. Chức năng liên quan (và tài liệu) là ở đây:

void glfwGetDesktopMode(GLFWvidmode *mode)

thông số

mode Con trỏ trỏ tới một cấu trúc GLFWvidmode, mà sẽ được điền đầy đủ bằng các chức năng.

Return giá trị

Cấu trúc GLFWvidmode trỏ đến bởi chế độ được làm đầy với các chế độ video máy tính để bàn.

Mô tả

Hàm này trả về chế độ video máy tính để bàn trong một cấu trúc GLFWvidmode. Xem glfwGetVideoModes để biết định nghĩa cấu trúc GLFWvidmode.

Ghi chú

Độ sâu màu sắc của màn hình desktop luôn được báo cáo là số bit cho mỗi màu thành phần cá nhân (đỏ, xanh lá cây và xanh da trời), ngay cả khi máy tính để bàn không sử dụng một RGB hoặc Định dạng màu RGBA. Đối với trường hợp , màn hình màu 256 được lập chỉ mục có thể báo cáo RedBits = 3, GreenBits = 3 và BlueBits = 2, trong đó thêm tối đa 8 bit.

Định dạng video máy tính để bàn là chế độ video được sử dụng bởi các máy tính để bàn đồng thời cửa sổ GLFW được mở ra, không phải là chế độ video hiện nay (mà có thể khác với chế độ video máy tính để bàn nếu GLFW cửa sổ là một cửa sổ toàn màn hình) .

typedef struct { 
    int Width, Height; // Video resolution 
    int RedBits; // Number of red bits 
    int GreenBits; // Number of green bits 
    int BlueBits; // Number of blue bits 
} GLFWvidmode; 

Xem Jonas Wielicki's answer để biết các lựa chọn thay thế.

+1

cổ vũ để trả lời tham khảo chéo –

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