Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


DeviceContext.UpdateSubresource to create Texture2dArray


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 wlastas   Members   -  Reputation: 100

Like
0Likes
Like

Posted 04 April 2012 - 05:33 AM

Hello!
While I waited for an answer I'll figured out with your question and now I hasten to share the code - maybe he needed someone

have a vertex shader, which use a second texture in the array:
Texture2DArray tiles : register( t0 );
SamplerState tstate: register( s0 );
float4 SectorPS(Out_pos4_normal4_uv input) : SV_Target
{
	return  tiles.Sample(tstate, float3(input.uv,  1));
}

blank textures for the transfer to the shader
Texture2D t2d_tiles = new Texture2D(device, new Texture2DDescription()
			{
				BindFlags = BindFlags.ShaderResource,
				ArraySize = tiles_names.Count, // << is the number of textures that will be written into an array
				Width = 256,
				Height = 256,
				Usage = ResourceUsage.Default,
				CpuAccessFlags = CpuAccessFlags.None,
				Format = SlimDX.DXGI.Format.R8G8B8A8_UNorm,
				SampleDescription = new SlimDX.DXGI.SampleDescription(1, 0),
				MipLevels =1, //with any other value does not work - I do not know this is a bug or a feature
				OptionFlags = ResourceOptionFlags.None
			});

Read the texture from disk and write it into an array with index id:
  t2d_tmp = Texture2D.FromFile(device, full_name, new ImageLoadInformation()
			{
				Format = Format.R8G8B8A8_UNorm,
				CpuAccessFlags = CpuAccessFlags.Read,
				MipLevels = 1, //with any other value does not work - I do not know this is a bug or a feature
				Usage = ResourceUsage.Staging
			});

	DataBox tmp_db = context.MapSubresource(t2d_tmp, 0, MapMode.Read, MapFlags.None); // << 0 this t2d_tmp mip lvl
	 context.UpdateSubresource(tmp_db, t2d_tiles, id);
	 context.UnmapSubresource(t2d_tmp, 0);
	 if (id == tiles_names.Count - 1) //if last textur in array
				   ShaderResourceView  tiles = new ShaderResourceView(device, t2d_tiles);


Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS