Buenas,
estoy intentando que directx me autogenere los mipmaps de una textura él solito. He comprobado que lo puede hacer con el siguiente trozo de código g_pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
D3DFMT_X8R8G8B8,
D3DUSAGE_AUTOGENMIPMAP,
D3DRTYPE_TEXTURE,
D3DFMT_A8R8G8B8 ) );
y me ha dicho que le parece tope de bien que quiera que los genere él.
El problema viene a la hora de crear la textura que me da error. Utilizo lo siguiente:
hr = D3DXCreateTextureFromFileEx(g_pd3dDevice, // Device
file_name, // nom de la textura
D3DX_DEFAULT, // width
D3DX_DEFAULT, // height
D3DX_DEFAULT, // mip levels -> create a complete chain
D3DUSAGE_AUTOGENMIPMAP, // usage
D3DFMT_FROM_FILE, // format
D3DPOOL_DEFAULT, // pool
D3DX_DEFAULT, // filter
D3DX_DEFAULT, // mip filter
0, // color key
NULL, // src info
NULL, // palette
&tex ));
y me da error.
El debugger de Directx me dice:
Direct3D9: (ERROR) :Cannot update from a multi-level non-autogenerated mipmap to an autogenerated one.
Alguien me podria decir cómo lo tengo que hacer?
Gracias!
Te los genera automáticamente al cargar. No tienes que hacer la comprobación de que te generar el mipmap automáticamente porque ya te lo hace el cargador. Tu único error es el usage, que no sirve en este caso es flag. Ponle 0 y listo!!