Recursos de bloqueio (Direct3D 9)
Bloquear um recurso significa conceder acesso à CPU ao armazenamento. As seguintes opções de bloqueio são definidas para recursos:
- D3DLOCK_DISCARD
- D3DLOCK_READONLY
- D3DLOCK_NOOVERWRITE
- D3DLOCK_NOSYSLOCK
- D3DLOCK_NO_DIRTY_UPDATE
Para obter detalhes sobre como os sinalizadores de bloqueio e como eles se relacionam com recursos específicos, consulte as páginas de referência nos métodos individuais de bloqueio de recursos. Os desenvolvedores de aplicativos devem observar que os sinalizadores D3DLOCK_DISCARD, D3DLOCK_READONLY e D3DLOCK_NOOVERWRITE são apenas dicas. O tempo de execução não marcar que os aplicativos estejam seguindo a funcionalidade especificada por esses sinalizadores. Um aplicativo que especifica D3DLOCK_READONLY mas grava no recurso deve esperar resultados indefinidos. Em geral, trabalhar contra sinalizadores de bloqueio, incluindo os sinalizadores de uso de bloqueio, não tem garantia de funcionar em versões posteriores e pode incorrer em uma penalidade significativa de desempenho.
Uma operação de bloqueio é seguida por uma operação de desbloqueio. Por exemplo, depois de bloquear uma textura, o aplicativo abre mão posteriormente do acesso direto a texturas bloqueadas desbloqueando-as. Além de conceder acesso ao processador, todas as outras operações envolvendo esse recurso são serializadas durante um bloqueio. Somente um único bloqueio para um recurso é permitido, mesmo para regiões não sobrepostas, e nenhuma operação de acelerador em uma superfície pode estar em andamento enquanto uma operação de bloqueio está pendente nessa superfície.
Cada interface de recurso tem métodos para bloquear os buffers contidos. Cada recurso de textura também pode bloquear uma sub-parte desse recurso. Os recursos 2D (superfícies) permitem o bloqueio de sub-retângulos e os recursos de volume permitem o bloqueio de sub-volumes ou caixas. Cada método de bloqueio retorna uma estrutura que contém um ponteiro para o armazenamento que dá suporte ao recurso e valores que representam as distâncias entre linhas ou planos de dados, dependendo do tipo de recurso. Para obter detalhes, consulte as listas de métodos para as interfaces de recurso. O ponteiro retornado sempre aponta para o byte superior esquerdo nas sub-regiões bloqueadas.
Ao trabalhar com buffers de índice e vértice, você pode fazer várias chamadas de bloqueio; no entanto, você deve garantir que o número de chamadas de bloqueio corresponda ao número de chamadas de desbloqueio.
O DXTn armazena pixels em blocos 4x4 codificados e só pode ser bloqueado em limites 4x4.
Tópicos relacionados