¿Cómo Estás Trabajando Con DirectX En Comparación Con El Ejemplo?

0 Comments

¿Que estas esperando? Haga clic aquí para descargar esta herramienta de reparación de Windows ahora.

Si recibió un nuevo ejemplo excelente de código de error de directx Lockrect, la guía del usuario de hoy le servirá.

Sintaxis

HRESULT LockRect(  [en] nivel UINT,  [fuera] D3DLOCKED_RECT *pLockedRect,  [en] const RECT *pRect,  [en] banderas DWORD);

Configuración

Puntero al rectángulo de obstrucción. Especificando un puntero a alguna de las estructuras RECT en el mercado. Si especifica NULL para este parámetro a su vez, el vecindario sucio se difundirá a toda la textura.

Una combinación de marcas nulo más o bloqueo que detalla el tipo de bloqueo que estaba realizando. Para este método, las banderas increíbles son:

  • D3DLOCK_DISCARD
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
  • Al usar D3DLOCK_DISCARD, no necesita especificar un subdirectorio explícito. Nota

    para la descripción de cada pinD3DLOCK

    Valor devuelto

    ejemplo de directx lockrect

    Si el método tiene éxito, su valor de rebobinado es D3D_OK. Si la alternativa no funciona, la recompensa de devolución podría ser D3DERR_INVALIDCALL.

    Las texturas creadas con Are d3dpool_default no se pueden bloquear en algunas. Las texturas creadas en materiales de video en memoria se pueden bloquear si se crean con USAGE_DYNAMIC.

    Las áreas sucias solo se impregnan para obtener el nivel 0 de una armadura significativa por motivos de rendimiento. Las áreas sucias se detectan automáticamente cuando IDirect3DTexture9::LockRect a menudo se conoce como sin D3DLOCK_NO_DIRTY_UPDATE o D3DLOCK_READONLY obtener. Consulte IDirect3DDevice9::UpdateTexture.

    para obtener más información.

    El esquema de memoria de recepción solo se puede asegurar, se debe cambiar mediante llamadas IDirect3DDevice9::UpdateSurface , IDirect3DDevice9::UpdateTexture . En realidad, hay excepciones para algunos formatos de píxeles de controlador autorizados únicos que Direct3D 8 ya no reconoce. Pueden ser un poco más privados.

    Este método no puede recuperar detalles de una textura de recurso creada razón suficiente para D3DUSAGE_RENDERTARGET porque tal textura debe eventualmente asignarse en D3DPOOL_DEFAULT de espacio de memoria y, por lo tanto, no se puede bloquear. Si, en cambio, usa IDirect3DDevice9::GetRenderTargetData para hacer una copia de seguridad de los datos de composición de la memoria del dispositivo para compartir la memoria.

    Requisitos

    Plataforma de destino ventanas Título d3d9helper.h (incluido D3D9.h) Biblia teka D3D9.lib

    Ver Ver también

  • Mínimo 2 cuando necesites leer
  • Cita: Publicación original de jhq
    Pero simplemente en esta situación puede funcionar:

    D3DXCreateTextureFromFileEx(g_pd3dDevice, “banana.bmp”, 256, 256, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT D3DX_DEFAULT, , 0, 4, NULO , NULO , &g_pTex);

    … …

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

    … …

    Esto (al usar texturas fascinantes) significa que casi todos los artículos de la textura se eliminan, lo que no es exactamente lo que deseo. Por cierto, ¿puedes entender honestamente el momento en que podrías necesitar una textura bloqueada?

    ejemplo de directx lockrect

    Es posible que todavía estés usando el grupo de vacaciones predeterminado (D3DPOOL_DEFAULT). Visita correcta:

    Deje de perder el tiempo con errores informáticos.

    ¿Tu computadora funciona lentamente y recibes errores? No se preocupe, Restoro puede solucionarlo. Restoro descubrirá qué está mal con su PC y reparará los problemas de registro de Windows que le están causando una amplia gama de problemas. No tiene que ser un experto en computadoras o software: Restoro hace todo el trabajo por usted. La aplicación también detectará archivos y aplicaciones que fallan con frecuencia y le permitirá solucionar sus problemas con un solo clic. Haga clic aquí ahora:

  • 1. Descargue e instale Reimage
  • 2. Inicie el programa y haga clic en "Escanear"
  • 3. Haga clic en "Reparar" para corregir cualquier error detectado por el análisis

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

    La especificación del conjunto de texturas del sistema mejor gestionado hará que Direct3D conserve una copia local de la textura. Cuando alguien bloquea una textura, Direct3D devuelve un puntero a la copia en caché y, además, cuando la desbloqueas, se incluyen en la tarjeta de video.

    Pero no puedes comer tu pastel y este papel. Bloquear una textura significa que se almacena en la memoria del sistema. Todas esas copias de ida y vuelta probablemente romperían el paralelismo del procesador.

    Cita: cuando todos los bits 2D con piezas se hacen mejor, razón suficiente para los sombreadores de píxeles, ¿se usan a menudo funciones como LockRect()?

    Bueno, para eso se han usado siempre. El problema con Janta es que no existe la posibilidad de acelerar la rutina elegida de la misma manera que con cualquier método completamente de hardware.

    [Editado por On Admiral, 19 de marzo de 2009 6:58:24]

    Es casi seguro que la parte que se usa con mayor frecuencia se lee del diseño, que se encuentra en la memoria de video (el “grupo predeterminado”). Se trata principalmente de representar blobs.

    1. Leer a través de una textura es equivalente a escanear a través del nivel 0 con esa textura en el exterior. Ver a continuación.
    2. El subconjunto anterior tiene una buena textura.
    3. Lea la interfaz que se refiere a ayudar a un grupo de memoria que no sea el sistema predeterminado (“administrado”), o simplemente ajústelo y verifique los bytes.
    4. tsobre exactamente lo mismo para un subconjunto de una nueva superficie. Solo sección efectiva actualizada y comprobada.

    Ahora hemos dejado estos microbios en la memoria de video (“piscina estándar”). Esto podría ser cualquier renovación de superficie/textura notable como el objetivo de procesamiento, o una superficie/textura regular que todos ustedes crearon entre el grupo predeterminado o simplemente debido al búfer posterior. La dificultad en este caso es que no puedes cortarlo.

    Explicación detallada (resumen general de los vendedores a continuación):

    1. rt = obtener la superficie del objeto renderizado de Can (esta es sin duda la base de la textura, el búfer posterior, etc.)
    2. si resulta que rt es (GetDesc, control de muestra múltiple D3DSURFACE_DESC.MultiSampleType), simplemente: a) cree otro objetivo de representación del mismo tamaño, la misma construcción, lamentablemente sin multimuestreo; b) StretchRect to rt se aplica a esta nueva interfaz; c) rt Dies = baldosas de piso nuevas (es decir, continuación en la superficie nueva).
    3. off apunta a que se crea una superficie en el patio trasero de la pantalla (CreateOffscreenPlainSurface, Pool)
    4. dispositivo->GetRenderTargetData(d3dpool_systemmem rt, en algún lugar)
    5. El

    6. ahora pasa información importante al destino de representación. LockRect(), documentos, consulteHaga clic en UnlockRect().
    7. Rescata tu PC ahora. Haga clic aquí para descargar nuestra herramienta de reparación de Windows.