update RenderTexture2D

refresh2
cosmonaut 2024-02-23 13:25:21 -08:00
parent c2a029ce85
commit d3ae483074
1 changed files with 29 additions and 31 deletions

View File

@ -7,8 +7,8 @@ namespace MoonWorks.Test
class RenderTexture2DGame : Game class RenderTexture2DGame : Game
{ {
private GraphicsPipeline pipeline; private GraphicsPipeline pipeline;
private Buffer vertexBuffer; private GpuBuffer vertexBuffer;
private Buffer indexBuffer; private GpuBuffer indexBuffer;
private Texture[] textures = new Texture[4]; private Texture[] textures = new Texture[4];
private Sampler sampler; private Sampler sampler;
@ -34,25 +34,10 @@ namespace MoonWorks.Test
sampler = new Sampler(GraphicsDevice, samplerCreateInfo); sampler = new Sampler(GraphicsDevice, samplerCreateInfo);
// Create and populate the GPU resources // Create and populate the GPU resources
vertexBuffer = Buffer.Create<PositionTextureVertex>(GraphicsDevice, BufferUsageFlags.Vertex, 16); var resourceInitializer = new ResourceInitializer(GraphicsDevice);
indexBuffer = Buffer.Create<ushort>(GraphicsDevice, BufferUsageFlags.Index, 6);
for (int i = 0; i < textures.Length; i += 1) vertexBuffer = resourceInitializer.CreateBuffer(
{ [
textures[i] = Texture.CreateTexture2D(
GraphicsDevice,
MainWindow.Width / 4,
MainWindow.Height / 4,
TextureFormat.R8G8B8A8,
TextureUsageFlags.ColorTarget | TextureUsageFlags.Sampler
);
}
CommandBuffer cmdbuf = GraphicsDevice.AcquireCommandBuffer();
cmdbuf.SetBufferData(
vertexBuffer,
new PositionTextureVertex[]
{
new PositionTextureVertex(new Vector3(-1, -1, 0), new Vector2(0, 0)), new PositionTextureVertex(new Vector3(-1, -1, 0), new Vector2(0, 0)),
new PositionTextureVertex(new Vector3(0, -1, 0), new Vector2(1, 0)), new PositionTextureVertex(new Vector3(0, -1, 0), new Vector2(1, 0)),
new PositionTextureVertex(new Vector3(0, 0, 0), new Vector2(1, 1)), new PositionTextureVertex(new Vector3(0, 0, 0), new Vector2(1, 1)),
@ -72,18 +57,31 @@ namespace MoonWorks.Test
new PositionTextureVertex(new Vector3(1, 0, 0), new Vector2(1, 0)), new PositionTextureVertex(new Vector3(1, 0, 0), new Vector2(1, 0)),
new PositionTextureVertex(new Vector3(1, 1, 0), new Vector2(1, 1)), new PositionTextureVertex(new Vector3(1, 1, 0), new Vector2(1, 1)),
new PositionTextureVertex(new Vector3(0, 1, 0), new Vector2(0, 1)), new PositionTextureVertex(new Vector3(0, 1, 0), new Vector2(0, 1)),
} ],
); BufferUsageFlags.Vertex
cmdbuf.SetBufferData(
indexBuffer,
new ushort[]
{
0, 1, 2,
0, 2, 3,
}
); );
GraphicsDevice.Submit(cmdbuf); indexBuffer = resourceInitializer.CreateBuffer<ushort>(
[
0, 1, 2,
0, 2, 3,
],
BufferUsageFlags.Index
);
resourceInitializer.Upload();
resourceInitializer.Dispose();
for (int i = 0; i < textures.Length; i += 1)
{
textures[i] = Texture.CreateTexture2D(
GraphicsDevice,
MainWindow.Width / 4,
MainWindow.Height / 4,
TextureFormat.R8G8B8A8,
TextureUsageFlags.ColorTarget | TextureUsageFlags.Sampler
);
}
} }
protected override void Update(System.TimeSpan delta) { } protected override void Update(System.TimeSpan delta) { }
@ -114,7 +112,7 @@ namespace MoonWorks.Test
for (uint i = 0; i < textures.Length; i += 1) for (uint i = 0; i < textures.Length; i += 1)
{ {
cmdbuf.BindFragmentSamplers(new TextureSamplerBinding(textures[i], sampler)); cmdbuf.BindFragmentSamplers(new TextureSamplerBinding(textures[i], sampler));
cmdbuf.DrawIndexedPrimitives(4 * i, 0, 2, 0, 0); cmdbuf.DrawIndexedPrimitives(4 * i, 0, 2);
} }
cmdbuf.EndRenderPass(); cmdbuf.EndRenderPass();