Bjour,
je tente de faire un ptit projet 3D (premier en directX :s)
Donc j'ai besoin de charger des textures depuis un fichier, l'image est compressée en dxt5 (==> http://en.wikipedia.org/wiki/S3_Texture_Compression)
J'ai une gestions des textures dans l'appli, pas de prob pour charger des textures simples (2x2 pixels en format DXGI_FORMAT_R8G8B8A8_UNORM)
Mais là ca coince, le fichier est chargé correctement, mais la texture ne ressemble a rien.
Il me semblais avoir compris que le format Dxt5 est DXGI_FORMAT_BC3_UNORM, mais apparement non.
Voici le code de création de texture :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void Texture::Init(int width, int height, int mipmap_levels, void * data_ptr, DXGI_FORMAT format = DXGI_FORMAT_R8G8B8A8_UNORM)
		{
			D3D11_TEXTURE2D_DESC desc = {};
			desc.Width = width;
			desc.Height = height;
			desc.MipLevels = mipmap_levels;
			desc.ArraySize = 1;
			desc.Format = format;
			desc.SampleDesc.Count = 1;
			desc.Usage = D3D11_USAGE_DEFAULT;
			desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
			desc.CPUAccessFlags = 0;
 
			D3D11_SUBRESOURCE_DATA data = {};
			data.pSysMem = data_ptr;
			data.SysMemPitch = 4;;
 
			HRESULT hr = g_pd3dDevice->CreateTexture2D( &desc, &data, &pTexture );
 
			D3D11_SHADER_RESOURCE_VIEW_DESC shaderResourceViewDesc;
 
			shaderResourceViewDesc.Format = desc.Format;
			shaderResourceViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
			shaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
			shaderResourceViewDesc.Texture2D.MipLevels = 1;
 
			// Create the shader resource view.
			g_pd3dDevice->CreateShaderResourceView(pTexture, &shaderResourceViewDesc, &pshaderResourceView);
 
			D3D11_SAMPLER_DESC sampDesc;
			ZeroMemory( &sampDesc, sizeof(sampDesc) );
			sampDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;//D3D11_FILTER_MIN_MAG_MIP_LINEAR;
			sampDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;
			sampDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;
			sampDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;
			sampDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
			sampDesc.MinLOD = 0;
			sampDesc.MaxLOD = D3D11_FLOAT32_MAX;
			g_pd3dDevice->CreateSamplerState( &sampDesc, &g_pSamplerLinear );
		}
Quelqu'un peut m'éclairer?