Jump to content

View more

Image of the Day

Working on an auto spawn system. #gamedev #indiedev #screenshotsaturday https://t.co/Mm2kfekz7b
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

DeviceContext.UpdateSubresource to create Texture2dArray

4: Adsense

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   

104
Like
1Likes
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);





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.