2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
7 // SwapChain.h: Defines a back-end specific class that hides the details of the
8 // implementation-specific swapchain.
10 #ifndef LIBGLESV2_RENDERER_SWAPCHAIN_H_
11 #define LIBGLESV2_RENDERER_SWAPCHAIN_H_
13 #include "common/angleutils.h"
14 #include "common/platform.h"
16 #include <GLES2/gl2.h>
19 #if !defined(ANGLE_FORCE_VSYNC_OFF)
20 #define ANGLE_FORCE_VSYNC_OFF 0
29 SwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat)
30 : mWindow(window), mShareHandle(shareHandle), mBackBufferFormat(backBufferFormat), mDepthBufferFormat(depthBufferFormat)
34 virtual ~SwapChain() {};
36 virtual EGLint resize(EGLint backbufferWidth, EGLint backbufferSize) = 0;
37 virtual EGLint reset(EGLint backbufferWidth, EGLint backbufferHeight, EGLint swapInterval) = 0;
38 virtual EGLint swapRect(EGLint x, EGLint y, EGLint width, EGLint height) = 0;
39 virtual void recreate() = 0;
41 virtual HANDLE getShareHandle() {return mShareHandle;};
44 const HWND mWindow; // Window that the surface is created for.
45 const GLenum mBackBufferFormat;
46 const GLenum mDepthBufferFormat;
52 #endif // LIBGLESV2_RENDERER_SWAPCHAIN_H_