DirectX11 không có cửa sổ đính kèm?


13

Tôi chỉ tự hỏi, nếu có thể khởi tạo và sử dụng DX11 hoặc DX9 để chỉ hiển thị ngoài màn hình - có nghĩa là không có cửa sổ đính kèm. Ý định của tôi là thực hiện một số điểm chuẩn GPU trước khi mở cửa sổ thực tế. Trong điểm chuẩn này, một số cảnh thử nghiệm được hiển thị, nhưng không thể nhìn thấy. (Trên thực tế tùy thuộc vào điểm chuẩn, các cửa sổ khác nhau được mở)


2
Với D3D11, bạn cần cung cấp một điều khiển cửa sổ khi tạo chuỗi trao đổi, xem tại đây . Nhưng có lẽ có một cách để ẩn cửa sổ này?
Laurent Couvidou

1
vâng, tôi biết, DX11 yêu cầu xử lý cửa sổ cho hoán đổi - nhưng nếu bạn chỉ hiển thị ngoài màn hình thì bạn có thực sự cần bất kỳ hoán đổi nào không? Có cách nào để khởi tạo và kết xuất mà không cần trao đổi không - Tôi nghĩ rằng trao đổi chỉ là để kết xuất màn hình ...
GPUquant 22/03/13

1
Ngay bây giờ tôi đang cố gắng sử dụng cửa sổ 1x1px bị ẩn. Nhưng đó không phải là giải pháp tốt đẹp mà tôi muốn nói.
GPUquant

Câu trả lời:


15

Đúng. Bạn có thể khởi tạo thiết bị Direct3D bằng cách sử dụng D3D11CreateDevice, không yêu cầu cửa sổ. Bạn chỉ đơn giản là không tạo ra một chuỗi trao đổi nào cả. Bạn vẫn có thể tạo các mục tiêu kết xuất ngoài màn hình và vẽ chúng theo cách thông thường. Thay vì gọi Presentchuỗi trao đổi, bạn có thể gọi ID3D11DeviceContext::Flushđể khởi động GPU với công việc bạn đã xếp hàng.

Nếu sau này bạn muốn tạo một cửa sổ, bạn có thể phá hủy thiết bị và tạo lại nó D3D11CreateDeviceAndSwapChainhoặc bạn có thể tạo chuỗi trao đổi và gắn nó vào thiết bị hiện có IDXGIFactory::CreateSwapChain. (Đây IDXGIFactorylà một đối tượng COM riêng biệt cần được tạo CreateDXGIFactorytrước tiên.)


+1 Gọi Flushthay vì trình bày chuỗi trao đổi, đây là gọn gàng!
Laurent Couvidou

Điều này bằng cách nào đó có thể với D3D9 thông qua IDirect3D9::CreateDevicephương thức? Tôi không thể tìm thấy một D3D9CreateDevicephương pháp đáng buồn.
Vinz

@Vinzenz Tôi không nghĩ vậy. D3D9 không tách rời các khái niệm "thiết bị" và "chuỗi trao đổi", như D3D10 trở lên. Cả hai đều cuộn vào đối tượng thiết bị D3D9, đòi hỏi HWNDphải tạo.
Nathan Reed
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.