d3d11binding-0.0.0.1: src/Graphics/D3D11Binding/Interface/D3D11Device.hs
module Graphics.D3D11Binding.Interface.D3D11Device where
import Data.Word
import Foreign.Storable
import Foreign.Marshal.Alloc
import Foreign.Ptr
import Graphics.Win32
import Graphics.D3D11Binding.Types
import Graphics.D3D11Binding.Interface.Unknown
import Graphics.D3D11Binding.Interface.D3D11Resource
import Graphics.D3D11Binding.Interface.D3D11RenderTargetView
foreign import stdcall "CreateRenderTargetView" c_createRenderTargetView
:: Ptr ID3D11Device -> Ptr ID3D11Resource -> Ptr D3D11RenderTargetViewDesc -> Ptr (Ptr ID3D11RenderTargetView) -> IO HRESULT
class (UnknownInterface interface) => D3D11DeviceInterface interface where
createRenderTargetView
:: (D3D11ResourceInterface resource) =>
Ptr interface -> Ptr resource -> Maybe (D3D11RenderTargetViewDesc) -> IO (Either HRESULT (Ptr ID3D11RenderTargetView))
createRenderTargetView this pResource Nothing = alloca $ \renderTargetView -> do
hr <- c_createRenderTargetView (castPtr this) (castPtr pResource) nullPtr renderTargetView
if hr < 0 then return (Left hr) else Right <$> peek renderTargetView
createRenderTargetView this pResource (Just desc) = alloca $ \renderTargetView -> alloca $ \pDesc -> do
poke pDesc desc
hr <- c_createRenderTargetView (castPtr this) (castPtr pResource) pDesc renderTargetView
if hr < 0 then return (Left hr) else Right <$> peek renderTargetView
data ID3D11Device = ID3D11Device
instance UnknownInterface ID3D11Device
instance D3D11DeviceInterface ID3D11Device