Hoe Ga Je Om Met Het DirectX-blokkeringsvoorbeeld?

0 Comments

Waar wacht je op? Klik hier om deze Windows-reparatietool nu te downloaden.

Als gebruikers een voorbeeld van een directx Lockrect-foutcode hebben ontvangen, zal de websitebezoekersgids van vandaag u helpen.

Syntaxis

HRESULT LockRect(  [in] UINT-niveau,  [uit] D3DLOCKED_RECT *pLockedRect,  [in] const RECT *pRect,  [in] DWORD-vlaggen);

Instellingen

Aanwijzer naar de rechthoek die momenteel moet worden geblokkeerd. Door elke vorm van verwijzing naar de RECT-structuur binnen de markt te specificeren. Als u NULL opgeeft voor deze parameter, wordt de vuile online community gepropageerd naar de niet-afgekorte structuur.

Een combinatie van null plus of mogelijk een vergrendelingsvlag die het type vergrendeling beschrijft dat u uitvoert. Voor uw methode zijn de echte vlaggen:

  • D3DLOCK_DISCARD
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
  • Wanneer u door gebruik te maken van D3DLOCK_DISCARD, u geen tijd nodig heeft om een ​​specifieke subdirectory op te geven. Opmerking

    bij elke vlagbeschrijvingD3DLOCK

    Retourwaarde

    directx lockrect example

    Als uw methode slaagt, is de terugspoelwaarde D3D_OK. Als het alternatief niet werkt, kan de geretourneerde waarde D3DERR_INVALIDCALL zijn.

    Texturen die zijn gemaakt met Are d3dpool_default kunnen helemaal niet worden geblokkeerd. Texturen die zijn gemaakt op in-memory videomedia kunnen worden vastgelegd als ze zijn gemaakt met USAGE_DYNAMIC.

    Vuile gebieden kunnen heel goed alleen worden geïmpregneerd voor niveau 0 van een zinvolle textuur voor prestatieomstandigheden. Vuile gebieden worden automatisch gedetecteerd waar IDirect3DTexture9::LockRect wordt aangeroepen zonder een goed D3DLOCK_NO_DIRTY_UPDATE of D3DLOCK_READONLY verzoek. Zie IDirect3DDevice9::UpdateTexture.

    voor meer informatie.

    Het videogeheugenschema kan zeker alleen worden vergrendeld, het moet worden gewijzigd door IDirect3DDevice9::UpdateSurface of IDirect3DDevice9::UpdateTexture aan te roepen. Er zijn uitzonderingen voor talrijke unieke pixelformaten van stuurprogramma’s die Direct3D 8 niet herkent. Ze zijn wel wat meer privé.

    Deze strategie kan geen gegevens ophalen uit een voordeeltextuur die is gemaakt met D3DUSAGE_RENDERTARGET omdat dit soort textuur uiteindelijk moet worden aangewezen in het D3DPOOL_DEFAULT-geheugen en daarom moeilijk te vergrendelen is. Als u in plaats daarvan profiteert van de voordelen van IDirect3DDevice9::GetRenderTargetData om compositiegegevens op het apparaatgeheugen naar het gedeelde geheugen te kopiëren.

    Vereisten

    Doelplatform Vensters Titel d3d9helper.h (inclusief D3D9.h) Bijbel teka D3D9.lib

    Zie Zie ook

  • Minimaal 2 om te lezen
  • Citaat: Originele thread door jhq
    Maar alleen in deze werkomgeving kan werken:

    D3DXCreateTextureFromFileEx(g_pd3dDevice, “banana.bmp”, 256, 256, particular, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, D3DPOOL_DEFAULT, D3DPOOL_DEFAULT, , 5, 4, NULL , NULL ook , &g_pTex);

    … …

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

    … …

    Dit betekent (wanneer via dynamische texturen) dat blijkbaar alle inhoud van het formulier is verwijderd, wat niet speciaal is wat ik nodig heb. Kun je door de stijl eenvoudig het moment begrijpen wanneer je een gesloten textuur nodig hebt?

    directx lockrect example

    U gebruikt nog steeds de standaardpool (D3DPOOL_DEFAULT). Correct bezoek:

    Verspil geen tijd met computerfouten.

    Uw computer is traag en u krijgt fouten? Maak je geen zorgen, Restoro kan het repareren. Restoro zoekt uit wat er mis is met uw pc en herstelt Windows-registerproblemen die een breed scala aan problemen voor u veroorzaken. U hoeft geen expert te zijn in computers of software - Restoro doet al het werk voor u. De applicatie detecteert ook bestanden en applicaties die vaak crashen, en stelt je in staat om hun problemen met een enkele klik op te lossen. Klik hier nu op:

  • 1. Download en installeer Reimage
  • 2. Start het programma en klik op "Scannen"
  • 3. Klik op "Repareren" om eventuele fouten te herstellen die door de scan zijn gedetecteerd

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

    Het specificeren van de samenstellingspool van een beheerd systeem zal er waarschijnlijk toe leiden dat Direct3D een regionale kopie van een bepaalde structuur aanhoudt. Wanneer u een textuur en consistentie vergrendelt, retourneert Direct3D een aanwijzer naar de specifieke kopie in de cache en wanneer u deze opent, worden ze op de online videokaart geladen.

    Maar je kunt je quiche en dit artikel niet opeten. Het vergrendelen van een oppervlak betekent dat het wordt opgeslagen als het gaat om systeemgeheugen. Al die heen-en-weer-kopieën zouden hoogstwaarschijnlijk het parallellisme van de processor vernietigen.

    Citaat: wanneer alle 2D-bits en -stukken optimaal worden gedaan met pixel shaders, worden services zoals LockRect() vaak gebruikt?

    Nou, dat is precies waar ze altijd voor zijn gebruikt. Het probleem met Janta is dat er geen manier is om de gekozen methode op de genoemde manier te versnellen als een volledig apparatenmethode.

    [Bewerkt door On Admiral, 19 mrt, jr 06:58:24]

    Het meest gebruikte deel wordt voorgelezen uit een ontwerp, dat zich in een videoherinnering bevindt (de ‘standaardpool’). Het is meestal ergens rond het renderen van blobs.

    1. Lezen van een textuur is eigenlijk gelijk aan het lezen van niveau 0 met het oppervlak van die textuur. Zie hieronder.
    2. De subset in dit artikel heeft een textuur.
    3. Lees de stad die verwijst naar een andere geheugenvakantiepool dan het standaard (“beheerde” systeem), vergrendel deze waarschijnlijk en ga naar de bytes.
    4. ongeveer hetzelfde voor een absolute subset van het oppervlak. Alleen up-to-date en gecontroleerd blokkeringsgedeelte.

    Nu gebruiken we deze sporen in het videogeheugen (“standaardpool”). Dit kan een nieuwe merkbare verbetering van het oppervlak/textuur zijn als het doel van de show, of gewone shoppers met oppervlak/textuur die allemaal zijn gemaakt met de standaardlocatie of gewoon vanaf het achterste obstakel. De moeilijkheid hier is dat uw bedrijf het niet kan blokkeren.

    Gedetailleerde uitleg (algemene foto van de code hieronder):

    1. rt = ontvang het gerenderde doeloppervlak van Can (dit is de textuurbasis, backbone-buffer, enz.)
    2. als rt is (GetDesc, multisample bevestig D3DSURFACE_DESC.MultiSampleType), dan: a) maak nog een ander renderdoel met dezelfde vorm, dezelfde constructie, maar zonder multisampling; b) StretchRect of rt wordt toegepast met betrekking tot deze nieuwe interface; c) rt Dies = nieuwe vloer (d.w.z. voortzetting betreft nieuw oppervlak).
    3. uit betekent dat er een oppervlak wordt gecreëerd buiten de film (CreateOffscreenPlainSurface, Pool)
    4. apparaat->GetRenderTargetData( d3dpool_systemmem rt, off )
    5. De

    6. juiste geeft nu gegevens door aan het verlofdoel. LockRect(), data, zieKlik op UnlockRect().
    7. Red uw pc nu. Klik hier om onze Windows-reparatietool te downloaden.