Managed textur -> Texture not created with this device.



  • Hallo.
    Ich habe mal ne frage zu managed texturen: sind diese dinger nicht dafür gedacht, dass man sie bei einem device change/reset nicht neu erstellen muß??

    Ich erzeuge mir eine textur mit:

    targetTexture_ = new Texture(dev, txwidth, txheight, 0, 0, Format.A8R8G8B8, Pool.Managed);
    

    und rendere das ganze mit:

    dev.SetTexture(0,targetTexture_);
    
    dev.BeginScene();
    
    dev.SetStreamSource(0, fullPlaneVB_, 0);
    dev.VertexFormat = CustomVertex.PositionTextured.Format;
    dev.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
    
    dev.EndScene();
    

    Funktioniert wunderbar auf einem Monitor, sobald ich das fenster aber Monitor 2 ziehe bekomme ich ein:
    Direct3D9: (ERROR) :Texture not created with this device. SetTexture failed.

    Hab ich das was falsch verstanden (sollten managed resource nicht automatisch in das neue device kopiert werden!?)


  • Mod

    hast du zwei graphikkarten stecken (nicht sli)? in dem falle mußt du bei init von d3d das nötige device selektieren.

    managed sind für device reset afai.



  • Nö, ist nur einer, mit analogen und digital output, das ganze soll aber auch mit 2. funktionieren 😉
    An d3d inti komme ich nicht ran. Ich rendere in surfaces die vom VMR9 kommen, hab also keinen einfluß darauf an welchem device die hängen.
    Ich muß also bei jeden Render call checken ob das noch das selbe device ist vorhin and falls nicht alles device-abhängigen resourcen neu erstellen (auch die managed)? Das dauert ja ewig bis die ganzen texturen wieder da sind.. 🙄 😞


  • Mod

    also managed dinge sollten auf zwei monitoren mit einer graka problemlos laufen... hatte bisher keine probs damit, auf einem monitor war es aber meistens derbe langsam.



  • managed vewende ich auch nur wenn die karte dynamic nicht kann, die werden dann auch neu erstellt da je Pool.Default, hatte nur gehofft dass ich mir das bei Pool.Managed spare kann... 😕



  • Ein HAL Device wird mit einem Adapter verknüpft, nicht nur mit einer Grafikkarte.
    Wenn du einen neuen Monitor ansteuerst, dann brauchst du einen neuen Adapter. Also wird das alte Device zerstört und du verlierst alle Ressourcen. Mit Speicherklassen hat das also eher wenig zu tun.


Anmelden zum Antworten