本文整理汇总了C#中GraphicsDevice.ResolveRenderTarget方法的典型用法代码示例。如果您正苦于以下问题:C# GraphicsDevice.ResolveRenderTarget方法的具体用法?C# GraphicsDevice.ResolveRenderTarget怎么用?C# GraphicsDevice.ResolveRenderTarget使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GraphicsDevice
的用法示例。
在下文中一共展示了GraphicsDevice.ResolveRenderTarget方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Render
public void Render(GraphicsDevice gd)
{
/////////////////////////////////
// BRIGHT PASS
/////////////////////////////////
gd.SetRenderTarget(0, _brightPassRender);
//gd.SetRenderTarget(0, null);
gd.Clear(Color.CornflowerBlue);
// We need to compute the sampling offsets used for this pass.
// A 2x2 sampling pattern is used, so we need to generate 4 offsets
Vector4[] offsets = new Vector4[4];
// Because the source and destination are NOT the same sizes, we
// need to provide offsets to correctly map between them.
float sU = (1.0f / _sceneRender.Width);
float sV = (1.0f / _sceneRender.Height);
// The last two components (z,w) are unused. This makes for simpler code, but if
// constant-storage is limited then it is possible to pack 4 offsets into 2 float4's
offsets[0] = new Vector4(-0.5f * sU, 0.5f * sV, 0.0f, 0.0f);
offsets[1] = new Vector4(0.5f * sU, 0.5f * sV, 0.0f, 0.0f);
offsets[2] = new Vector4(-0.5f * sU, -0.5f * sV, 0.0f, 0.0f);
offsets[3] = new Vector4(0.5f * sU, -0.5f * sV, 0.0f, 0.0f);
gd.Clear(Color.Black);
_ppBatch.Effect = _brightPassShader;
_ppBatch.ResetMatrices(gd.Viewport.Width, gd.Viewport.Height);
_ppBatch.Effect.Parameters["tcDownSampleOffsets"].SetValue(offsets);
_ppBatch.Effect.Parameters["fBrightPassThreshold"].SetValue(_brightPassValue);
_ppBatch.Effect.Parameters["diffuseTexture"].SetValue(_sceneRender.GetTexture());
_ppBatch.RenderToTexture(_brightPassRender);
//_ppBatch.Draw(_sceneRender.GetTexture(), new Rectangle(0, 0, 800, 600), new Rectangle(0, 0, (800 / 2), (600 / 2)), Color.White);
_ppBatch.Flush();
/////////////////////////////////
// DOWNSAMPLE PASS
/////////////////////////////////
gd.ResolveRenderTarget(0);
//gd.SetRenderTarget(0, null);
gd.SetRenderTarget(0, _downsamplePassRender);
// We need to compute the sampling offsets used for this pass.
// A 2x2 sampling pattern is used, so we need to generate 4 offsets
Vector4[] offsets2 = new Vector4[16];
int idx = 0;
for (int i = -2; i < 2; i++)
{
for (int j = -2; j < 2; j++)
{
offsets2[idx++] = new Vector4(
((i) + 0.5f) * (1.0f / (_downsamplePassRender.Width)),
((j) + 0.5f) * (1.0f / (_downsamplePassRender.Height)),
0.0f, // unused
0.0f // unused
);
}
}
gd.Clear(Color.Black);
_ppBatch.Effect = _downsamplePassShader;
_ppBatch.ResetMatrices(gd.Viewport.Width, gd.Viewport.Height);
_ppBatch.Effect.Parameters["tcDownSampleOffsets"].SetValue(offsets2);
_ppBatch.Effect.Parameters["diffuseTexture"].SetValue(_brightPassRender.GetTexture());
_ppBatch.RenderToTexture(_downsamplePassRender);
//_ppBatch.Draw(_brightPassRender.GetTexture(), new Rectangle(0, 0, 800 / 2, 600 / 2), new Rectangle(0, 0, 800 / 8, 600 / 8), Color.White);
_ppBatch.Flush();
///////////////////////////////////
//// HORIZONTAL BLOOM PASS
///////////////////////////////////
gd.ResolveRenderTarget(0);
//gd.SetRenderTarget(0, null);
gd.SetRenderTarget(0, _hozbloomPassRender);
// Configure the sampling offsets and their weights
float[] HBloomWeights = new float[9];
float[] HBloomOffsets = new float[9];
for (int i = 0; i < 9; i++)
{
// Compute the offsets. We take 9 samples - 4 either side and one in the middle:
// i = 0, 1, 2, 3, 4, 5, 6, 7, 8
//Offset = -4, -3, -2, -1, 0, +1, +2, +3, +4
HBloomOffsets[i] = (i - 4.0f) * (1.0f / _downsamplePassRender.Width);
// 'x' is just a simple alias to map the [0,8] range down to a [-1,+1]
float x = (i - 4.0f) / 4.0f;
// Use a gaussian distribution. Changing the standard-deviation
// (second parameter) as well as the amplitude (multiplier) gives
// distinctly different results.
HBloomWeights[i] = 0.4f * ComputeGaussianValue(x, 0.0f, 0.8f);
}
gd.Clear(Color.Black);
//.........这里部分代码省略.........
示例2: endMainRender
public void endMainRender(GraphicsDevice gd)
{
gd.ResolveRenderTarget(0);
//gd.SetRenderTarget(0, null);
}