blob: 737d030f89401b98699fd8e94dcd135bf6e864cc [file] [log] [blame]
//
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// RenderTarget11.cpp: Implements a DX11-specific wrapper for ID3D11View pointers
// retained by Renderbuffers.
#include "libGLESv2/renderer/RenderTarget11.h"
#include "libGLESv2/renderer/Renderer11.h"
#include "libGLESv2/renderer/renderer11_utils.h"
#include "libGLESv2/main.h"
namespace rx
{
RenderTarget11::RenderTarget11(Renderer *renderer, ID3D11RenderTargetView *view, GLsizei width, GLsizei height)
{
mRenderer = Renderer11::makeRenderer11(renderer);
mRenderTarget = view;
mDepthStencil = NULL;
if (mRenderTarget)
{
D3D11_RENDER_TARGET_VIEW_DESC desc;
view->GetDesc(&desc);
mWidth = width;
mHeight = height;
mInternalFormat = d3d11_gl::ConvertRenderbufferFormat(desc.Format);
mActualFormat = d3d11_gl::ConvertRenderbufferFormat(desc.Format);
mSamples = 1; // TEMP?
}
}
RenderTarget11::RenderTarget11(Renderer *renderer, ID3D11DepthStencilView *view, GLsizei width, GLsizei height)
{
mRenderer = Renderer11::makeRenderer11(renderer);
mRenderTarget = NULL;
mDepthStencil = view;
if (mDepthStencil)
{
D3D11_DEPTH_STENCIL_VIEW_DESC desc;
view->GetDesc(&desc);
mWidth = width;
mHeight = height;
mInternalFormat = d3d11_gl::ConvertRenderbufferFormat(desc.Format);
mActualFormat = d3d11_gl::ConvertRenderbufferFormat(desc.Format);
mSamples = 1; // TEMP?
}
}
RenderTarget11::~RenderTarget11()
{
if (mRenderTarget)
{
mRenderTarget->Release();
}
if (mDepthStencil)
{
mDepthStencil->Release();
}
}
RenderTarget11 *RenderTarget11::makeRenderTarget11(RenderTarget *target)
{
ASSERT(dynamic_cast<rx::RenderTarget11*>(target) != NULL);
return static_cast<rx::RenderTarget11*>(target);
}
}