/*
Copyright (C) 2010, Heikki Salo
All rights reserved.
Distributed under the BSD license:
http://www.opensource.org/licenses/bsd-license.php
*/
#ifndef DP_VIEW_HPP
#define DP_VIEW_HPP
#include "stdafx.h"
#include "DPBase.hpp"
class DPTexture;
class DPBuffer;
class DPView : DPBase {
public:
~DPView();
DPView() : shaderResourceView(0), renderTargetView(0), depthStencilView(0), unorderedAccessView(0) { }
DPView(DPTexture&);
DPView(DPBuffer&);
void release();
void clearDepthStencil(float, UINT8);
void clearRenderTarget(python::object&);
void clearUnorderedAccessInt(python::object&);
void clearUnorderedAccessFloat(python::object&);
ID3D11ShaderResourceView* getShaderView() { return shaderResourceView; }
ID3D11RenderTargetView* getRenderTargetView() { return renderTargetView; }
ID3D11DepthStencilView* getDepthStencilView() { return depthStencilView; }
ID3D11UnorderedAccessView* getUnorderedAccessView() { return unorderedAccessView; }
void setShaderView(ID3D11ShaderResourceView* v) { shaderResourceView = v; v->AddRef(); }
void setRenderTargetView(ID3D11RenderTargetView* v) { renderTargetView = v; v->AddRef(); }
void setDepthStencilView(ID3D11DepthStencilView* v) { depthStencilView = v; v->AddRef(); }
void setUnorderedAccessView(ID3D11UnorderedAccessView* v) { unorderedAccessView = v; v->AddRef(); }
bool hasShaderResource() { return shaderResourceView != 0; }
bool hasRenderTarget() { return renderTargetView != 0; }
bool hasDepthStencil() { return depthStencilView != 0; }
bool hasUnorderedAccess() { return unorderedAccessView != 0; }
private:
void initBase();
ID3D11ShaderResourceView* shaderResourceView;
ID3D11RenderTargetView* renderTargetView;
ID3D11DepthStencilView* depthStencilView;
ID3D11UnorderedAccessView* unorderedAccessView;
//DPView& operator = (const DPView&);
//DPView(const DPView&);
};
#endif