Hallo,
ich hab mal ne Frage zu dieser funktion.
in einigen beispielen sieht man so einen aufruf
|
C-/C++-Quelltext
|
1
|
D3DXComputeNormalMap(bumpmap, heightmap, 0, 0, D3DX_CHANNEL_RED, 1.f);
|
bedeutet das D3DX_CHANNEL_RED nicht, das nur der rotanteil
der textur zur heightmap verbacken wird?
wenn ich eine graustufentextur umwandeln will, muss ich dann nicht
D3DX_CHANNEL_LUMINANCE nehmen?
D3DX_CHANNEL_LUMINANCE:
Indicates the luminances of the red, green, and blue channels should be used
edit:
jetzt schlägt das teil auch noch fehl und zwar mit D3DERR_INVALIDCALL
ganzer code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
hr = D3DXCreateTextureFromFile(dev, "bumpmap.bmp", &bumpmap);
if (hr != S_OK)
return false;
D3DSURFACE_DESC desc;
bumpmap->GetLevelDesc(0, &desc);
IDirect3DTexture9 *temptex;
hr = dev->CreateTexture(desc.Width, desc.Height, 0, 0, D3DFMT_R8G8B8, D3DPOOL_MANAGED, &temptex, 0);
if (hr != S_OK)
return false;
hr = D3DXComputeNormalMap(temptex, bumpmap, 0, 0, D3DX_CHANNEL_LUMINANCE, 1.f);
if (hr != S_OK)
return false;
bumpmap = temptex;
|