Edit

kc3-lang/angle/src/libGLESv2/renderer/RenderTarget11.cpp

Branch :

  • Show log

    Commit

  • Author : daniel@transgaming.com
    Date : 2012-11-28 21:02:01
    Hash : 816c7f37
    Message : Added getter methods to RenderTarget11 for the render target and depth stencil views. TRAC #22149 Signed-off-by: Nicolas Capens Signed-off-by: Daniel Koch git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1520 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/libGLESv2/renderer/RenderTarget11.cpp
  • //
    // 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);
    }
    
    // Adds reference, caller must call Release
    ID3D11RenderTargetView *RenderTarget11::getRenderTargetView() const
    {
        if (mRenderTarget)
        {
            mRenderTarget->AddRef();
        }
    
        return mRenderTarget;
    }
    
    // Adds reference, caller must call Release
    ID3D11DepthStencilView *RenderTarget11::getDepthStencilView() const
    {
        if (mDepthStencil)
        {
            mDepthStencil->AddRef();
        }
    
        return mDepthStencil;
    }
    
    }