Como Você Lida Com O Exemplo De Bloqueio Do DirectX?

0 Comments

O que você está esperando? Clique aqui para baixar esta ferramenta de reparo do Windows agora.

Se alguém recebeu um exemplo de código de erro directx Lockrect, o guia do visitante do site de hoje o ajudará.

Sintaxe

HRESULT LockRect(  [no] nível UINT,  [out] D3DLOCKED_RECT *pLockedRect,  [in] const RECT *pRect,  [no] sinalizadores DWORD);

Configurações

Ponteiro para todos os retângulos a serem bloqueados. Especificando um bom ponteiro para a estrutura RECT pelo mercado. Se você especificar NULL para este parâmetro, a área n suja será propagada para a textura total.

Uma combinação de null mais ou possivelmente um sinalizador de bloqueio descrevendo o tipo anexado ao bloqueio que você está executando. Para fazer este método, os flags reais são:

  • D3DLOCK_DISCARD
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
  • Ao fazer uso de D3DLOCK_DISCARD, você não precisa que ajude a especificar um subdiretório específico. Nota

    para cada descrição de sinalizadorD3DLOCK

    Valor de retorno

    directx lockrect example

    Se todo o método for bem-sucedido, o valor de retrocesso será D3D_OK. Se a alternativa não for o escritório, o valor de retorno pode ser D3DERR_INVALIDCALL.

    Texturas criadas com Are d3dpool_default não podem ser bloqueadas. Texturas criadas em mídia de vídeo na memória podem ser encaixadas se criadas com USAGE_DYNAMIC.

    As áreas sujas ficam impregnadas apenas para o nível 0 relacionado com uma textura significativa para um desempenho excelente. Áreas sujas são detectadas automaticamente após IDirect3DTexture9::LockRect ser chamado sem uma boa solicitação D3DLOCK_NO_DIRTY_UPDATE ou D3DLOCK_READONLY. Consulte IDirect3DDevice9::UpdateTexture.

    adequado para obter mais informações.

    O esquema de memória de vídeo só pode ser bloqueado, geralmente deve ser alterado chamando IDirect3DDevice9::UpdateSurface . . . IDirect3DDevice9::UpdateTexture . Há exceções para uma pequena quantidade de formatos de pixel de driver exclusivos que o Direct3D 8 não reconhece. Eles podem facilmente ser um pouco mais privados.

    Este curso não pode recuperar dados de uma textura útil criada com D3DUSAGE_RENDERTARGET porque uma textura semelhante deve eventualmente ser fornecida na memória D3DPOOL_DEFAULT e, portanto, realmente não pode ser bloqueada. Se, em vez disso, você aproveitar IDirect3DDevice9::GetRenderTargetData para copiar dados de composição produzidos pela memória do dispositivo para a memória compartilhada.

    Requisitos

    Plataforma de destino Janelas Título d3d9helper.h (incluindo D3D9.h) Teka da Bíblia D3D9.lib

    Consulte Veja também

  • Mínimo 2 para ler
  • Citação: Original colocado por jhq
    Mas somente neste exemplo pode funcionar:

    D3DXCreateTextureFromFileEx(g_pd3dDevice, “banana.bmp”, 256, 256, 8, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT D3DX_DEFAULT, , 3, 4, NULL , NULL ! &g_pTex);

    … …

    g_pTex->LockRect(0, &d3dlock, NULL, D3DLOCK_DISCARD);

    … …

    Isto (ao tirar vantagem de texturas dinâmicas) significa que na maior parte todo o conteúdo da sensação é removido, o que não é exclusivamente o que eu preciso. A propósito, você pode simplesmente entender o rápido quando precisa de uma textura fixa?

    directx lockrect example

    Você ainda está gerando o pool padrão (D3DPOOL_DEFAULT). Visita correta:

    Pare de perder tempo com erros do computador.

    Seu computador está lento e você está recebendo erros? Não se preocupe, o Restoro pode corrigi-lo. O Restoro descobrirá o que está errado com o seu PC e reparará os problemas de registro do Windows que estão causando uma ampla gama de problemas para você. Você não precisa ser um especialista em computadores ou software � O Restoro faz todo o trabalho para você. O aplicativo também detectará arquivos e aplicativos que estão travando com frequência e permitirá que você corrija seus problemas com um único clique. Clique aqui agora:

  • 1. Baixe e instale o Reimage
  • 2. Inicie o programa e clique em "Digitalizar"
  • 3. Clique em "Reparar" para corrigir quaisquer erros detectados pela verificação

  • D3DXCreateTextureFromFileEx(g_pd3dDevice, será "banana.bmp", 256, 256, 3, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, D3DX_DEFAULT, 4, 0, NULL, NULL, &g_pTex ", "D3DXCreateTexture.vice, DeEx3gFromd 2dDevice, ", 256, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, D3DX_DEFAULT, 0, 0, NULL, NULL, &g_pTex);

    A especificação do pool de construção de um sistema gerenciado provavelmente fará com que o Direct3D – mantenha uma cópia regional de qualquer textura. Quando você bloqueia uma construção, o Direct3D retorna um ponteiro normalmente para a cópia em cache e, quando você a descobre, eles são carregados no cartão de filme.

    Mas você não pode comer sua quiche e este artigo. Bloquear uma composição significa que ela é armazenada na memória do sistema. Todas essas cópias de volta provavelmente quebrariam o paralelismo do processador.

    Citação: Quando todos os bits e partes 2D são mais desejáveis ​​feitos com pixel shaders, ações como LockRect() são comumente usadas?

    Bem, essas são as coisas para as quais eles sempre foram usados. O problema com o Janta é que dentro não há como acelerar o método escolhido da mesma forma que um método totalmente de computador.

    [Editado por On Admiral, 19 de março de 09 06:58:24]

    A parte mais usada é lida a partir da qual o design, que reside no videocram (o “pool padrão”). É principalmente quase renderizando blobs.

    1. A leitura de uma textura é considerada equivalente à leitura do nível 0 e da superfície dessa textura. Veja abaixo.
    2. O subconjunto falado tem uma textura.
    3. Leia a interface gráfica do usuário que se refere a um acúmulo de memória diferente do padrão (sistema “gerenciado”), ou talvez até bloqueie-o e avalie os bytes.
    4. é o mesmo para este subconjunto da superfície. Apenas seção de bloqueio atualizada e verificada.

    Agora, mantemos esses rastros na lembrança de vídeo (“pool padrão”). Isso pode ser qualquer outra melhoria de superfície/textura perceptível como o alvo atual, ou qualquer superfície/textura regular qualquer pessoa criada com a coleta padrão ou apenas a partir da barreira traseira. A dificuldade aqui é que o público não pode bloqueá-lo.

    Explicação detalhada (guia geral do código abaixo):

    1. rt = aproveite a superfície de destino renderizada de Can (esta é a base da textura, buffer para baixo, etc.)
    2. se rt for (GetDesc, multisample validar D3DSURFACE_DESC.MultiSampleType), então: a) crie um destino de renderização alternativo do mesmo volume, mesma construção, mas sem multisampling; b) StretchRect de rt é aplicado a esta nova interface; c) rt Matrizes = novo piso (ou seja, continuação em direção à nova superfície).
    3. off significa que um acabamento é criado fora da interface (CreateOffscreenPlainSurface, Pool)
    4. dispositivo->GetRenderTargetData( d3dpool_systemmem rt, off )
    5. O próprio

    6. passa dados para o destino atual. LockRect(), dados, consulteClique em UnlockRect().
    7. Resgate seu PC agora. Clique aqui para baixar nossa ferramenta de reparo do Windows.