Export (0) Print
Expand All

RenderTargetCube Constructor

Initializes a new instance of this class.

After a render pass the render target contains the color information of a rendered image.

Render targets represent a linear area of display memory and usually reside in the display memory of the display card. Because of this, RenderTargetCube objects must be recreated when the device is reset.

To use a RenderTargetCube, you must:

  1. Create the RenderTargetCube.
    shadowRenderTarget = GfxComponent.CreateRenderTarget(GraphicsDevice,
        1, SurfaceFormat.Single);
    
    public static RenderTarget2D CreateRenderTarget(GraphicsDevice device, int numberLevels,
        SurfaceFormat surface)
    {
        MultiSampleType type = device.PresentationParameters.MultiSampleType;
    
        // If the card can't use the surface format
        if (!GraphicsAdapter.DefaultAdapter.CheckDeviceFormat(DeviceType.Hardware,
            GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Format, TextureUsage.None,
            QueryUsages.None, ResourceType.RenderTarget, surface))
        {
            // Fall back to current display format
            surface = device.DisplayMode.Format;
        }
        // Or it can't accept that surface format with the current AA settings
        else if (!GraphicsAdapter.DefaultAdapter.CheckDeviceMultiSampleType(DeviceType.Hardware,
            surface, device.PresentationParameters.IsFullScreen, type))
        {
            // Fall back to no antialiasing
            type = MultiSampleType.None;
        }
    
        int width, height;
    
        // See if we can use our buffer size as our texture
        CheckTextureSize(device.PresentationParameters.BackBufferWidth, device.PresentationParameters.BackBufferHeight,
            out width, out height);
    
        // Create our render target
        return new RenderTarget2D(device,
            width, height, numberLevels, surface,
            type, 0);
    
    }
    
  2. Set the RenderTargetCube.
    GraphicsDevice.SetRenderTarget(0, shadowRenderTarget);
    
  3. Draw into the RenderTargetCube.
    // Render the shadow map
    GraphicsDevice.Clear(Color.Black);
    DrawScene(MyEffect.shadowMap);
    
  4. Reset the original RenderTargetCube. null as the default render target - i.e. the back buffer.
    // Set render target back to the back buffer
    GraphicsDevice.SetRenderTarget(0, null);
    
  5. Call GetTexture to retrieve the contents of the RenderTargetCube.
    // Return the shadow map as a texture
    return shadowRenderTarget.GetTexture();
    

Community Additions

ADD
Show:
© 2014 Microsoft