Toegang krijgen tot de metagegevens van arceringen

Flash Player 10 of hoger, Adobe AIR 1.5 of hoger

Tijdens het maken van een Pixel Bender-arceringskernel, kan de auteur metagegevens over de arcering opgeven in de broncode van Pixel Bender. Tijdens het gebruik van een arcering in ActionScript kunt u de arcering bekijken en de metagegevens van de arcering extraheren.

Wanneer u een Shader-instantie maakt en deze instantie aan een Pixel Bender-arcering koppelt, wordt er een ShaderData-object met gegevens over de arcering gemaakt en opgeslagen in de eigenschap data van het Shader-object. In de ShaderData-klasse zelf worden geen eigenschappen gedefinieerd. Tijdens de uitvoering wordt echter wel dynamisch een eigenschap aan het ShaderData-object toegevoegd voor elke metagegevenswaarde die in de broncode van de arcering is gedefinieerd. De naam die aan elke eigenschap wordt gegeven, is gelijk aan de naam die in de metagegevens is opgegeven. Stel dat in de broncode van een Pixel Bender-arcering de volgende metagegevensdefinitie is opgenomen:

namespace : "Adobe::Example"; 
vendor : "Bob Jones"; 
version : 1; 
description : "Creates a version of the specified image with the specified brightness.";

Het ShaderData-object dat voor die arcering is gemaakt, wordt gemaakt met de volgende eigenschappen en waarden:

  • namespace (String): "Adobe::Example"

  • vendor (String): "Bob Jones"

  • version (String): "1"

  • description (String): "Creates a version of the specified image with the specified brightness"

Omdat eigenschappen van metagegevens dynamisch aan het ShaderData-object worden toegevoegd, kunt u een for..in -lus gebruiken om het ShaderData-object te bekijken. Via deze techniek kunt u te weten komen of de arcering over metagegevens beschikt en wat de waarden van de metagegevens zijn. Naast de eigenschappen van de metagegevens kan een ShaderData-object ook eigenschappen bevatten die invoerwaarden en parameters vertegenwoordigen die in de arcering zijn gedefinieerd. Wanneer u een for..in -lus gebruikt om een ShaderData-object te bekijken, moet u het gegevenstype van elke eigenschap controleren om vast te stellen of het bij de eigenschap om invoer (een ShaderInput-instantie), een parameter (een ShaderParameter-instantie) of een metagegevenswaarde (een String-instantie) gaat. In het volgende voorbeeld wordt getoond hoe u een for..in -lus gebruikt om de dynamische eigenschappen van de eigenschap data van een arcering te bekijken. Elke metagegevenswaarde wordt toegevoegd aan een Vector-instantie met de naam metadata . In dit voorbeeld wordt ervan uitgegaan dat er al een Shader-instantie met de naam myShader is gemaakt:

var shaderData:ShaderData = myShader.data; 
var metadata:Vector.<String> = new Vector.<String>(); 
 
for (var prop:String in shaderData) 
{ 
    if (!(shaderData[prop] is ShaderInput) && !(shaderData[prop] is ShaderParameter)) 
    { 
        metadata[metadata.length] = shaderData[prop]; 
    } 
} 
 
// do something with the metadata

Zie Invoer en parameters van arceringen identificeren voor een versie van dit voorbeeld waarmee ook invoerwaarden en parameters van arceringen worden geëxtraheerd. Zie Waarden voor invoer en parameters van arceringen opgeven voor meer informatie over eigenschappen voor invoer en parameters.