1 // Copyright (c) 2015- PPSSPP Project. 2 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU General Public License as published by 5 // the Free Software Foundation, version 2.0 or later versions. 6 7 // This program is distributed in the hope that it will be useful, 8 // but WITHOUT ANY WARRANTY; without even the implied warranty of 9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 // GNU General Public License 2.0 for more details. 11 12 // A copy of the GPL 2.0 should have been included with the program. 13 // If not, see http://www.gnu.org/licenses/ 14 15 // Official git repository and contact information can be found at 16 // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/. 17 18 // Modelled on OpenD3DBase. Might make a cleaner interface later. 19 20 #pragma once 21 22 #include "Common/CommonWindows.h" 23 #include "Windows/GPU/WindowsGraphicsContext.h" 24 #include <d3d9.h> 25 26 namespace Draw { 27 class DrawContext; 28 } 29 30 class D3D9Context : public WindowsGraphicsContext { 31 public: D3D9Context()32 D3D9Context() : draw_(nullptr), has9Ex_(false), d3d_(nullptr), d3dEx_(nullptr), adapterId_(-1), device_(nullptr), deviceEx_(nullptr), hDC_(nullptr), hWnd_(nullptr), hD3D9_(nullptr), presentParams_{} { 33 } 34 35 bool Init(HINSTANCE hInst, HWND window, std::string *error_message) override; 36 void Shutdown() override; 37 void SwapInterval(int interval) override; 38 void SwapBuffers() override; 39 40 void Resize() override; 41 GetDrawContext()42 Draw::DrawContext *GetDrawContext() override { return draw_; } 43 44 private: 45 Draw::DrawContext *draw_; 46 bool has9Ex_; 47 LPDIRECT3D9 d3d_; 48 LPDIRECT3D9EX d3dEx_; 49 int adapterId_; 50 LPDIRECT3DDEVICE9 device_; 51 LPDIRECT3DDEVICE9EX deviceEx_; 52 HDC hDC_; // Private GDI Device Context 53 HWND hWnd_; // Holds Our Window Handle 54 HMODULE hD3D9_; 55 D3DPRESENT_PARAMETERS presentParams_; 56 int swapInterval_ = 0; 57 }; 58 59