PFND3DDDI_CREATERESOURCE función de devolución de llamada (d3dumddi.h)
La función CreateResource crea un recurso.
Sintaxis
PFND3DDDI_CREATERESOURCE Pfnd3dddiCreateresource;
HRESULT Pfnd3dddiCreateresource(
HANDLE hDevice,
D3DDDIARG_CREATERESOURCE *unnamedParam2
)
{...}
Parámetros
hDevice
Identificador del dispositivo de visualización (contexto de gráficos) que se usa para crear el recurso.
unnamedParam2
pResource [in, out]
Puntero a una estructura de D3DDDIARG_CREATERESOURCE que describe el recurso que se crea.
Valor devuelto
CreateResource devuelve uno de los siguientes valores:
código de retorno | descripción |
---|---|
S_OK | El recurso se ha creado correctamente. |
E_OUTOFMEMORY | CreateResource no pudo asignar la memoria necesaria para que se complete. |
D3DERR_NOTAVAILABLE | CreateResource no pudo crear el recurso por motivos distintos de no poder asignar memoria. CreateResourcecan devuelve este error solo al crear búferes de vértices o índices. |
Observaciones
La llamada a CreateResource puede contener una lista de superficies. El miembro surfCount de de la estructura de D3DDDIARG_CREATERESOURCE especificada por el parámetro pResource especifica el número de superficies,incluidos los niveles de mapa de MIP, que se van a crear. Por ejemplo, un recurso de mapa MIP de textura de 256x9 de 256x9 contiene una lista de nueve superficies donde el SurfCount miembro y el número de niveles de mapa MIP se establecen en 9. Un mapa de cubo que contenga nueve niveles de mapa MIP debe tener el número de niveles de mapa MIP establecidos en 9 y SurfCount establecido en 54. Una cadena de intercambio de tres superficies debe tener SurfCount establecido en 3 y el número de niveles de mapa MIP establecidos en 0. Tenga en cuenta que el número de niveles de mapa MIP siempre es menor o igual que el valor de SurfCount.
En respuesta a la llamada de CreateResource, el controlador de pantalla en modo de usuario puede llamar a la función pfnAllocateCb para crear una o varias asignaciones de memoria. El controlador de visualización en modo de usuario debe determinar si debe crear varias asignaciones por superficie, una asignación para todas las superficies o una asignación por superficie. Para obtener más información sobre las asignaciones, consulte Administración de memoria de vídeo y programación de GPU.
Los recursos se pueden compartir mediante varios dispositivos (hDevice) y procesos. El entorno de ejecución especifica que un recurso se comparte estableciendo el sharedResource marca de campo de bits en el miembro Flags de D3DDDIARG_CREATERESOURCE. Si se establece esta marca de campo de bits, el controlador de pantalla en modo de usuario debe cumplir las siguientes restricciones en los recursos compartidos:
- El controlador de pantalla en modo de usuario puede llamar al pfnAllocateCb y pfnDeallocateCb funciones exactamente una vez cada una.
- El controlador de visualización en modo de usuario no puede crear asignaciones adicionales para el recurso después de crear el recurso inicialmente y, del mismo modo, puede destruir las asignaciones de recursos solo en el momento en que se destruye el propio recurso.
- Cuando se llama a la función destroyRe source del controlador de visualización en modo de usuario para un recurso compartido que se creó o abrió a través de una llamada al CreateResource del controlador o función openResource, El controlador debe establecer el miembro hResource de la estructura D3DDDICB_DEALLOCATE en distinto de NULL y el miembro NumAllocations de D3DDDICB_DEALLOCATE en cero en una llamada a la función pfnDeallocateCb para destruir o cierre el recurso. Es decir, las asignaciones asociadas a un recurso compartido no se pueden destruir ni cerrar individualmente; El recurso debe destruirse o cerrarse de forma atómica en una llamada a pfnDeallocateCb.
- El número de asignaciones debe ser coherente para el tipo de recurso (es decir, otro proceso que crea el mismo tipo de recurso debe generar el mismo número y tipo de asignaciones). Además, no se permite cambiar el nombre de estos recursos.
- Los bits no definidos del miembro Flags están reservados.
- Si la marca campo de bits principal de no está establecida en Flags, se reservan los miembros RefreshRate y Output.
- Si el RenderTarget, DecodeRenderTarget, o VideoProcessRenderTarget marca de campo de bits no se establece en Marcas, se reservan los MultisampleType y miembros multisampleQuality.
- Si la marca de campo de bits VertexBuffer no está establecida en Marcas, se reserva el miembro Fvf.
- Si el Texture, CubeMapy Volume marcas de campo de bits no se establecen en Flags, se reserva el miembro MipLevels.
El nuevo CreateResource DDI difiere del DdCreateSurface DDI para el modelo de controlador de pantalla de Microsoft Windows 2000 de de las siguientes maneras:
- En el nuevo CreateResource DDI, las superficies nunca se adjuntan explícitamente. Todos los datos adjuntos están implícitos en la creación atómica.
- En el nuevo CreateResource DDI, no se permite la creación parcial de mapas de cubos.
Si el tiempo de ejecución solicita crear un búfer de vértices o índices y si el controlador de pantalla en modo de usuario no puede crear el búfer por motivos distintos de la memoria insuficiente (por ejemplo, una falta de compatibilidad con hardware), el controlador debe producir un error con D3DERR_NOTAVAILABLE.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows. |
de la plataforma de destino de | Escritorio |
encabezado de | d3dumddi.h (incluya D3dumddi.h) |