Pergunta

Eu sou do tipo perguntando sobre isso, se você criar uma textura na memória DirectX com a função CreateTexture:

HRESULT CreateTexture(
  UINT Width,
  UINT Height,
  UINT Levels,
  DWORD Usage,
  D3DFORMAT Format,
  D3DPOOL Pool,
  IDirect3DTexture9** ppTexture,
  HANDLE* pSharedHandle
);

... e passe em formato D3DFMT_UNKNOWN o que é suposto acontecer exatamente? Se eu tentar obter a superfície do primeiro ou segundo nível que irá causar um erro? ele pode falhar? Será que o dispositivo gráfico basta escolher um formato aleatório de sua escolha? Isso poderia causar problemas entre os diferentes gráficos de cartão de modelos / marcas?

Foi útil?

Solução

Eu apenas tentei sair e ele não falha, principalmente

Quando Usage está definido para D3DUSAGE_RENDERTARGET ou D3DUSAGE_DYNAMIC, ele consistentemente saiu como D3DFMT_A8R8G8B8, não importa o que eu fiz para o formato de buffer de fundo ou outras configurações. Eu não sei se isso tem a ver com a minha placa gráfica ou não. Meu palpite é que especificação de meios desconhecidos, "pegar para mim", e que o formato 32-bit é mais fácil para o meu cartão.

Quando o uso era D3DUSAGE_DEPTHSTENCIL, falhou de forma consistente.

Assim, a minha melhor conclusão é que a especificação D3DFMT_UNKNOWN como o formato dá DirectX a escolha do que deveria ser. Ou talvez ele sempre apenas o padrão é D3DFMT_A8R8G8B.

Infelizmente, não posso confirmar nada disso em qualquer lugar documentação. : |

Outras dicas

MSDN não diz . Mas eu tenho certeza que você ia ficar "D3DERR_INVALIDCALL" como resultado.

Se o método for bem sucedida, o retorno valor é D3D_OK. Se o método falhar, o valor de retorno pode ser um dos seguinte: D3DERR_INVALIDCALL, D3DERR_OUTOFVIDEOMEMORY, E_OUTOFMEMORY.

Eu acho que isso se enquadra na categoria "indefinido". Alguns motoristas irá falhar as alocações, enquanto outros podem padrão para algo. Eu nunca vi qualquer coisa no WDK que diz que essa condição precisa ser tratada. Eu estou supondo que se você ativar o tempo de execução de depuração DX você vai ver uma mensagem de erro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top