Naslaggids voor Adobe ActionScript® 3.0 voor het Adobe® Flash®-platform
Startpagina  |  Lijst met pakketten en klassen verbergen |  Pakketten  |  Klassen  |  Nieuw  |  Index  |  Bijlagen  |  Waarom in het Engels?
Filters: AIR 30.0 en eerder, Flash Player 30.0 en eerder, Flash Lite 4
Flex 4.6 en eerder, Flash Pro CS6 en eerder
Filters verbergen
flash.display3D 

Context3D  - AS3

Pakkettenx

Hoofdniveau
adobe.utils
air.desktop
air.net
air.update
air.update.events
coldfusion.air
coldfusion.air.errors
coldfusion.air.events
coldfusion.service
coldfusion.service.events
coldfusion.service.mxml
com.adobe.acm.solutions.authoring.domain.extensions
com.adobe.acm.solutions.ccr.domain.extensions
com.adobe.consulting.pst.vo
com.adobe.dct.component
com.adobe.dct.component.datadictionary
com.adobe.dct.component.datadictionaryElement
com.adobe.dct.component.dataElementsPanel
com.adobe.dct.component.toolbars
com.adobe.dct.event
com.adobe.dct.exp
com.adobe.dct.model
com.adobe.dct.service
com.adobe.dct.service.provider
com.adobe.dct.transfer
com.adobe.dct.util
com.adobe.dct.view
com.adobe.ep.taskmanagement.domain
com.adobe.ep.taskmanagement.event
com.adobe.ep.taskmanagement.filter
com.adobe.ep.taskmanagement.services
com.adobe.ep.taskmanagement.util
com.adobe.ep.ux.attachmentlist.component
com.adobe.ep.ux.attachmentlist.domain
com.adobe.ep.ux.attachmentlist.domain.events
com.adobe.ep.ux.attachmentlist.domain.renderers
com.adobe.ep.ux.attachmentlist.skin
com.adobe.ep.ux.attachmentlist.skin.renderers
com.adobe.ep.ux.content.event
com.adobe.ep.ux.content.factory
com.adobe.ep.ux.content.handlers
com.adobe.ep.ux.content.managers
com.adobe.ep.ux.content.model.asset
com.adobe.ep.ux.content.model.preview
com.adobe.ep.ux.content.model.relation
com.adobe.ep.ux.content.model.search
com.adobe.ep.ux.content.model.toolbar
com.adobe.ep.ux.content.search
com.adobe.ep.ux.content.services
com.adobe.ep.ux.content.services.load
com.adobe.ep.ux.content.services.permissions
com.adobe.ep.ux.content.services.preview
com.adobe.ep.ux.content.services.providers
com.adobe.ep.ux.content.services.query
com.adobe.ep.ux.content.services.relationships
com.adobe.ep.ux.content.services.search.lccontent
com.adobe.ep.ux.content.services.version
com.adobe.ep.ux.content.view
com.adobe.ep.ux.content.view.components.activate
com.adobe.ep.ux.content.view.components.grid
com.adobe.ep.ux.content.view.components.grid.hover
com.adobe.ep.ux.content.view.components.grid.hover.component
com.adobe.ep.ux.content.view.components.grid.renderers
com.adobe.ep.ux.content.view.components.relationships
com.adobe.ep.ux.content.view.components.review
com.adobe.ep.ux.content.view.components.search.renderers
com.adobe.ep.ux.content.view.components.searchpod
com.adobe.ep.ux.content.view.components.toolbar
com.adobe.ep.ux.content.view.components.toolbar.controlRenderers
com.adobe.ep.ux.content.view.components.version
com.adobe.ep.ux.documentsubmit.component
com.adobe.ep.ux.documentsubmit.domain
com.adobe.ep.ux.documentsubmit.skin
com.adobe.ep.ux.taskaction.component
com.adobe.ep.ux.taskaction.domain
com.adobe.ep.ux.taskaction.domain.events
com.adobe.ep.ux.taskaction.skin
com.adobe.ep.ux.taskdetails.component
com.adobe.ep.ux.taskdetails.domain
com.adobe.ep.ux.taskdetails.skin
com.adobe.ep.ux.tasklist.component
com.adobe.ep.ux.tasklist.domain
com.adobe.ep.ux.tasklist.skin
com.adobe.ep.ux.webdocumentviewer.domain
com.adobe.exm.expression
com.adobe.exm.expression.error
com.adobe.exm.expression.event
com.adobe.exm.expression.impl
com.adobe.fiber.runtime.lib
com.adobe.fiber.services
com.adobe.fiber.services.wrapper
com.adobe.fiber.styles
com.adobe.fiber.util
com.adobe.fiber.valueobjects
com.adobe.gravity.binding
com.adobe.gravity.context
com.adobe.gravity.flex.bundleloader
com.adobe.gravity.flex.progress
com.adobe.gravity.flex.serviceloader
com.adobe.gravity.framework
com.adobe.gravity.init
com.adobe.gravity.service.bundleloader
com.adobe.gravity.service.logging
com.adobe.gravity.service.manifest
com.adobe.gravity.service.progress
com.adobe.gravity.tracker
com.adobe.gravity.ui
com.adobe.gravity.utility
com.adobe.gravity.utility.async
com.adobe.gravity.utility.error
com.adobe.gravity.utility.events
com.adobe.gravity.utility.factory
com.adobe.gravity.utility.flex.async
com.adobe.gravity.utility.logging
com.adobe.gravity.utility.message
com.adobe.gravity.utility.sequence
com.adobe.gravity.utility.url
com.adobe.guides.control
com.adobe.guides.domain
com.adobe.guides.i18n
com.adobe.guides.spark.components.skins
com.adobe.guides.spark.components.skins.mx
com.adobe.guides.spark.headers.components
com.adobe.guides.spark.headers.skins
com.adobe.guides.spark.layouts.components
com.adobe.guides.spark.layouts.skins
com.adobe.guides.spark.navigators.components
com.adobe.guides.spark.navigators.renderers
com.adobe.guides.spark.navigators.skins
com.adobe.guides.spark.util
com.adobe.guides.spark.wrappers.components
com.adobe.guides.spark.wrappers.skins
com.adobe.guides.submit
com.adobe.icc.dc.domain
com.adobe.icc.dc.domain.factory
com.adobe.icc.editors.events
com.adobe.icc.editors.handlers
com.adobe.icc.editors.managers
com.adobe.icc.editors.model
com.adobe.icc.editors.model.config
com.adobe.icc.editors.model.el
com.adobe.icc.editors.model.el.operands
com.adobe.icc.editors.model.el.operators
com.adobe.icc.enum
com.adobe.icc.external.dc
com.adobe.icc.obj
com.adobe.icc.services
com.adobe.icc.services.category
com.adobe.icc.services.config
com.adobe.icc.services.download
com.adobe.icc.services.export
com.adobe.icc.services.external
com.adobe.icc.services.formbridge
com.adobe.icc.services.fragmentlayout
com.adobe.icc.services.layout
com.adobe.icc.services.letter
com.adobe.icc.services.locator
com.adobe.icc.services.module
com.adobe.icc.services.render
com.adobe.icc.services.submit
com.adobe.icc.services.user
com.adobe.icc.token
com.adobe.icc.vo
com.adobe.icc.vo.render
com.adobe.icomm.assetplacement.controller
com.adobe.icomm.assetplacement.controller.utils
com.adobe.icomm.assetplacement.data
com.adobe.icomm.assetplacement.model
com.adobe.livecycle.assetmanager.client
com.adobe.livecycle.assetmanager.client.event
com.adobe.livecycle.assetmanager.client.handler
com.adobe.livecycle.assetmanager.client.managers
com.adobe.livecycle.assetmanager.client.model
com.adobe.livecycle.assetmanager.client.model.cms
com.adobe.livecycle.assetmanager.client.service
com.adobe.livecycle.assetmanager.client.service.search
com.adobe.livecycle.assetmanager.client.service.search.cms
com.adobe.livecycle.assetmanager.client.utils
com.adobe.livecycle.content
com.adobe.livecycle.rca.model
com.adobe.livecycle.rca.model.constant
com.adobe.livecycle.rca.model.document
com.adobe.livecycle.rca.model.participant
com.adobe.livecycle.rca.model.reminder
com.adobe.livecycle.rca.model.stage
com.adobe.livecycle.rca.service
com.adobe.livecycle.rca.service.core
com.adobe.livecycle.rca.service.core.delegate
com.adobe.livecycle.rca.service.process
com.adobe.livecycle.rca.service.process.delegate
com.adobe.livecycle.rca.token
com.adobe.livecycle.ria.security.api
com.adobe.livecycle.ria.security.service
com.adobe.mosaic.layouts
com.adobe.mosaic.layouts.dragAndDrop
com.adobe.mosaic.layouts.interfaces
com.adobe.mosaic.mxml
com.adobe.mosaic.om.constants
com.adobe.mosaic.om.events
com.adobe.mosaic.om.impl
com.adobe.mosaic.om.interfaces
com.adobe.mosaic.skinning
com.adobe.mosaic.sparklib.editors
com.adobe.mosaic.sparklib.optionMenu
com.adobe.mosaic.sparklib.scrollableMenu
com.adobe.mosaic.sparklib.scrollableMenu.skins
com.adobe.mosaic.sparklib.tabLayout
com.adobe.mosaic.sparklib.tabLayout.events
com.adobe.mosaic.sparklib.tabLayout.layouts
com.adobe.mosaic.sparklib.tabLayout.skins
com.adobe.mosaic.sparklib.text
com.adobe.mosaic.sparklib.util
com.adobe.solutions.acm.authoring.presentation
com.adobe.solutions.acm.authoring.presentation.actionbar
com.adobe.solutions.acm.authoring.presentation.common
com.adobe.solutions.acm.authoring.presentation.events
com.adobe.solutions.acm.authoring.presentation.fragment
com.adobe.solutions.acm.authoring.presentation.letter
com.adobe.solutions.acm.authoring.presentation.letter.data
com.adobe.solutions.acm.authoring.presentation.preview
com.adobe.solutions.acm.authoring.presentation.rte
com.adobe.solutions.acm.ccr.presentation
com.adobe.solutions.acm.ccr.presentation.contentcapture
com.adobe.solutions.acm.ccr.presentation.contentcapture.events
com.adobe.solutions.acm.ccr.presentation.contentcapture.preview
com.adobe.solutions.acm.ccr.presentation.datacapture
com.adobe.solutions.acm.ccr.presentation.datacapture.renderers
com.adobe.solutions.acm.ccr.presentation.pdf
com.adobe.solutions.exm
com.adobe.solutions.exm.authoring
com.adobe.solutions.exm.authoring.components.controls
com.adobe.solutions.exm.authoring.components.toolbars
com.adobe.solutions.exm.authoring.domain
com.adobe.solutions.exm.authoring.domain.expression
com.adobe.solutions.exm.authoring.domain.impl
com.adobe.solutions.exm.authoring.domain.method
com.adobe.solutions.exm.authoring.domain.variable
com.adobe.solutions.exm.authoring.enum
com.adobe.solutions.exm.authoring.events
com.adobe.solutions.exm.authoring.model
com.adobe.solutions.exm.authoring.renderer
com.adobe.solutions.exm.authoring.view
com.adobe.solutions.exm.expression
com.adobe.solutions.exm.impl
com.adobe.solutions.exm.impl.method
com.adobe.solutions.exm.method
com.adobe.solutions.exm.mock
com.adobe.solutions.exm.mock.method
com.adobe.solutions.exm.runtime
com.adobe.solutions.exm.runtime.impl
com.adobe.solutions.exm.variable
com.adobe.solutions.prm.constant
com.adobe.solutions.prm.domain
com.adobe.solutions.prm.domain.factory
com.adobe.solutions.prm.domain.impl
com.adobe.solutions.prm.domain.manager
com.adobe.solutions.prm.presentation.asset
com.adobe.solutions.prm.presentation.constant
com.adobe.solutions.prm.presentation.document
com.adobe.solutions.prm.presentation.event
com.adobe.solutions.prm.presentation.file
com.adobe.solutions.prm.presentation.project
com.adobe.solutions.prm.presentation.team
com.adobe.solutions.prm.presentation.util
com.adobe.solutions.prm.service
com.adobe.solutions.prm.services.impl
com.adobe.solutions.prm.vo
com.adobe.solutions.rca.constant
com.adobe.solutions.rca.domain
com.adobe.solutions.rca.domain.common
com.adobe.solutions.rca.domain.factory
com.adobe.solutions.rca.domain.impl
com.adobe.solutions.rca.domain.impl.manager
com.adobe.solutions.rca.domain.manager
com.adobe.solutions.rca.presentation
com.adobe.solutions.rca.presentation.comment
com.adobe.solutions.rca.presentation.constant
com.adobe.solutions.rca.presentation.event
com.adobe.solutions.rca.presentation.gantt
com.adobe.solutions.rca.presentation.gantt.ruler
com.adobe.solutions.rca.presentation.template
com.adobe.solutions.rca.presentation.template.audit
com.adobe.solutions.rca.presentation.template.definition
com.adobe.solutions.rca.presentation.template.documents
com.adobe.solutions.rca.presentation.template.stages
com.adobe.solutions.rca.presentation.util
com.adobe.solutions.rca.service
com.adobe.solutions.rca.services.impl
com.adobe.solutions.rca.vo
com.adobe.solutions.rca.vo.um
com.adobe.viewsource
fl.accessibility
fl.containers
fl.controls
fl.controls.dataGridClasses
fl.controls.listClasses
fl.controls.progressBarClasses
fl.core
fl.data
fl.display
fl.events
fl.ik
fl.lang
fl.livepreview
fl.managers
fl.motion
fl.motion.easing
fl.rsl
fl.text
fl.transitions
fl.transitions.easing
fl.video
flash.accessibility
flash.concurrent
flash.crypto
flash.data
flash.desktop
flash.display
flash.display3D
flash.display3D.textures
flash.errors
flash.events
flash.external
flash.filesystem
flash.filters
flash.geom
flash.globalization
flash.html
flash.media
flash.net
flash.net.dns
flash.net.drm
flash.notifications
flash.permissions
flash.printing
flash.profiler
flash.sampler
flash.security
flash.sensors
flash.system
flash.text
flash.text.engine
flash.text.ime
flash.ui
flash.utils
flash.xml
flashx.textLayout
flashx.textLayout.compose
flashx.textLayout.container
flashx.textLayout.conversion
flashx.textLayout.edit
flashx.textLayout.elements
flashx.textLayout.events
flashx.textLayout.factory
flashx.textLayout.formats
flashx.textLayout.operations
flashx.textLayout.utils
flashx.undo
ga.controls
ga.layouts
ga.model
ga.uiComponents
ga.util
ga.views
ga.wrappers
lc.foundation
lc.foundation.domain
lc.foundation.events
lc.foundation.ui
lc.foundation.util
lc.preloader
lc.procmgmt
lc.procmgmt.commands
lc.procmgmt.domain
lc.procmgmt.events
lc.procmgmt.formbridge
lc.procmgmt.impl
lc.procmgmt.ui.attachments
lc.procmgmt.ui.controls
lc.procmgmt.ui.controls.card
lc.procmgmt.ui.controls.renderer
lc.procmgmt.ui.help
lc.procmgmt.ui.layout
lc.procmgmt.ui.presentationmodel
lc.procmgmt.ui.process
lc.procmgmt.ui.search
lc.procmgmt.ui.startpoint
lc.procmgmt.ui.task
lc.procmgmt.ui.task.form
lc.procmgmt.ui.task.form.commands
lc.procmgmt.ui.tracking
mx.accessibility
mx.automation
mx.automation.air
mx.automation.delegates
mx.automation.delegates.advancedDataGrid
mx.automation.delegates.charts
mx.automation.delegates.containers
mx.automation.delegates.controls
mx.automation.delegates.controls.dataGridClasses
mx.automation.delegates.controls.fileSystemClasses
mx.automation.delegates.core
mx.automation.delegates.flashflexkit
mx.automation.events
mx.binding
mx.binding.utils
mx.charts
mx.charts.chartClasses
mx.charts.effects
mx.charts.effects.effectClasses
mx.charts.events
mx.charts.renderers
mx.charts.series
mx.charts.series.items
mx.charts.series.renderData
mx.charts.styles
mx.collections
mx.collections.errors
mx.containers
mx.containers.accordionClasses
mx.containers.dividedBoxClasses
mx.containers.errors
mx.containers.utilityClasses
mx.controls
mx.controls.advancedDataGridClasses
mx.controls.dataGridClasses
mx.controls.listClasses
mx.controls.menuClasses
mx.controls.olapDataGridClasses
mx.controls.scrollClasses
mx.controls.sliderClasses
mx.controls.textClasses
mx.controls.treeClasses
mx.controls.videoClasses
mx.core
mx.core.windowClasses
mx.data
mx.data.crypto
mx.data.errors
mx.data.events
mx.data.messages
mx.data.mxml
mx.data.offline.errors
mx.data.utils
mx.effects
mx.effects.easing
mx.effects.effectClasses
mx.events
mx.filters
mx.flash
mx.formatters
mx.geom
mx.graphics
mx.graphics.codec
mx.graphics.shaderClasses
mx.logging
mx.logging.errors
mx.logging.targets
mx.managers
mx.messaging
mx.messaging.channels
mx.messaging.config
mx.messaging.errors
mx.messaging.events
mx.messaging.management
mx.messaging.messages
mx.modules
mx.netmon
mx.olap
mx.olap.aggregators
mx.preloaders
mx.printing
mx.resources
mx.rpc
mx.rpc.events
mx.rpc.http
mx.rpc.http.mxml
mx.rpc.livecycle
mx.rpc.mxml
mx.rpc.remoting
mx.rpc.remoting.mxml
mx.rpc.soap
mx.rpc.soap.mxml
mx.rpc.wsdl
mx.rpc.xml
mx.skins
mx.skins.halo
mx.skins.spark
mx.skins.wireframe
mx.skins.wireframe.windowChrome
mx.states
mx.styles
mx.utils
mx.validators
org.osmf.containers
org.osmf.display
org.osmf.elements
org.osmf.events
org.osmf.layout
org.osmf.logging
org.osmf.media
org.osmf.metadata
org.osmf.net
org.osmf.net.dvr
org.osmf.net.httpstreaming
org.osmf.net.metrics
org.osmf.net.qos
org.osmf.net.rtmpstreaming
org.osmf.net.rules
org.osmf.traits
org.osmf.utils
spark.accessibility
spark.automation.delegates
spark.automation.delegates.components
spark.automation.delegates.components.gridClasses
spark.automation.delegates.components.mediaClasses
spark.automation.delegates.components.supportClasses
spark.automation.delegates.skins.spark
spark.automation.events
spark.collections
spark.components
spark.components.calendarClasses
spark.components.gridClasses
spark.components.mediaClasses
spark.components.supportClasses
spark.components.windowClasses
spark.core
spark.effects
spark.effects.animation
spark.effects.easing
spark.effects.interpolation
spark.effects.supportClasses
spark.events
spark.filters
spark.formatters
spark.formatters.supportClasses
spark.globalization
spark.globalization.supportClasses
spark.layouts
spark.layouts.supportClasses
spark.managers
spark.modules
spark.preloaders
spark.primitives
spark.primitives.supportClasses
spark.skins
spark.skins.mobile
spark.skins.mobile.supportClasses
spark.skins.spark
spark.skins.spark.mediaClasses.fullScreen
spark.skins.spark.mediaClasses.normal
spark.skins.spark.windowChrome
spark.skins.wireframe
spark.skins.wireframe.mediaClasses
spark.skins.wireframe.mediaClasses.fullScreen
spark.transitions
spark.utils
spark.validators
spark.validators.supportClasses
xd.core.axm.enterprise.view.components
xd.core.axm.enterprise.view.skins
xd.core.axm.view.components
xd.core.axm.view.components.support

Taalelementen

Algemene constanten
Algemene functies
Operatoren
Programmeerinstructies, gereserveerde woorden en compileraanwijzingen
Speciale typen

Bijlagen

Nieuw
Compilerfouten
Compilerwaarschuwingen
Uitvoeringsfouten
Migreren naar ActionScript 3
Ondersteunde tekensets
Alleen MXML-labels
Elementen van bewegings-XML
Timed Text-tags
Lijst van vervangen elementen
Constanten voor toegankelijkheidsimplementatie
ActionScript-voorbeelden gebruiken
Juridische kennisgeving
Pakketflash.display3D
Klassepublic final class Context3D
OverervingContext3D Inheritance EventDispatcher Inheritance Object

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

De klasse Context3D verschaft een context voor het renderen van geometrisch gedefinieerde afbeeldingen.

Een renderingcontext omvat een tekenoppervlak en de bijbehorende hulpmiddelen en status. De renderingcontext gebruikt waar mogelijk de GPU (Graphics Processing Unit) van de hardware. Daarnaast maakt de renderingcontext gebruik van software. (Als rendering via Context3D niet op een platform wordt ondersteund, bevat de eigenschap stage3Ds van het Stage-object een lege lijst.)

De Context3D-renderingcontext is een programmeerbare pijplijn die veel lijkt op OpenGL ES 2, maar is geabstraheerd om te zorgen voor compatibiliteit met een reeks hardware- en GPU-interfaces. Hoewel de renderingpijplijn voor 3D-afbeeldingen is ontworpen, hoeft de rendering niet per se driedimensionaal te zijn. Zo kunt u een 2D-renderer creëren door de juiste hoekpunt- en pixel-/fragmentprogramma's te verschaffen. Zowel in de 3D- als in de 2D-gevallen is de driehoek de enige geometrische primitieve die wordt ondersteund.

U kunt een instantie van de klasse Context3D ophalen door de methode requestContext3D() van een Stage3D-object aan te roepen. Er kan een beperkt aantal Context3D-objecten per stage bestaan: een voor elke Stage3D in de lijst Stage.stage3Ds. Wanneer de context wordt gemaakt, verzendt het Stage3D-object een context3DCreate-gebeurtenis. Een renderingcontext kan te allen tijde worden verwijderd en opnieuw worden gemaakt, bijvoorbeeld wanneer een andere toepassing die gebruik maakt van de GPU, de focus krijgt. Uw code moet berekend zijn op de ontvangst van meerdere context3DCreate-gebeurtenissen. Plaats het renderinggebied met gebruik van de eigenschappen x en y van de gekoppelde Stage3D-instantie in het werkgebied.

Voor het renderen en weergeven van een scène (na het ophalen van een Context3D-object) moet u normaal gesproken de volgende stappen uitvoeren:

  1. Configureer de voornaamste kenmerken van de weergavebuffer door configureBackBuffer() aan te roepen.
  2. Maak en initialiseer uw renderingbronnen, waaronder:
    • Hoekpunt- en indexbuffers die de geometrie van de scène definiëren
    • Hoekpunt- en pixelprogramma's (shaders) voor het renderen van de scène
    • Structuren
  3. Render een frame:
    • Stel de renderstatus juist in voor een object of verzameling objecten in de scène.
    • Roep de methode drawTriangles() aan om een verzameling driehoeken te renderen.
    • Wijzig de renderstatus voor de volgende groep objecten.
    • Roep drawTriangles() aan om de driehoeken te tekenen waardoor de objecten worden gedefinieerd.
    • Herhaal deze stappen totdat de scène volledig is gerenderd.
    • Roep de methode present() aan om de gerenderde scène op de stage weer te geven.

Voor rendering gelden de volgende limieten:

Bronlimieten:

BronToegestaan aantalTotaal geheugen
Hoekpuntenbuffers 4096256 MB
Indexbuffers 4096128 MB
Programma's 409616 MB
Structuren 4096128 MB
Kubusstructuren 4096256 MB

AGAL-limieten: 200 op-codes per programma.

Limieten voor tekenaanroepen: 32.768 aanroepen van drawTriangles() voor elke present()-aanroep.

Voor structuren gelden de volgende limieten:

Structuurlimieten voor AIR (32-bits):

StructuurMaximumgrootteTotaal GPU-geheugen
Normale structuur (onder uitgebreide basislijn) 2048 x 2048512 MB
Normale structuur (uitgebreide basislijn en hoger) 4096 x 4096512 MB
Rechthoekige structuur (onder uitgebreide basislijn) 2048 x 2048512 MB
Rechthoekige structuur (uitgebreide basislijn en hoger) 4096 x 4096512 MB
Kubusstructuur 1024 x 1024256 MB

Structuurlimieten voor de 64-bitsversie van AIR (Desktop):

StructuurMaximumgrootteTotaal GPU-geheugen
Normale structuur (onder uitgebreide basislijn) 2048 x 2048512 MB
Normale structuur (Basislijn uitgebreid tot Standaard) 4096 x 4096512 MB
Normale structuur (Standaard uitgebreid en hoger) 4096 x 40962048 MB
Rechthoekige structuur (onder uitgebreide basislijn) 2048 x 2048512 MB
Rechthoekige structuur (Basislijn uitgebreid tot Standaard) 4096 x 4096512 MB
Rechthoekige structuur (Standaard uitgebreid en hoger) 4096 x 40962048 MB
Kubusstructuur 1024 x 1024256 MB

512 MB is de absolute limiet voor structuren, inclusief het voor mipmaps vereiste structuurgeheugen. Voor kubusstructuren is de geheugenlimiet 256 MB.

U kunt geen Context3D-objecten maken met de Context3D-constructor. Het wordt gemaakt en is beschikbaar als eigenschap van een Stage3D-instantie. De klasse Context3D kan zowel op desktop- als mobiele platforms met Flash Player of AIR worden gebruikt.

Bekijk de voorbeelden

Verwante API-elementen



Openbare eigenschappen
 EigenschapGedefinieerd door
  backBufferHeight : int
[alleen-lezen] Geeft de hoogte van de backbuffer op, die kan worden gewijzigd door een succesvolle aanroep van de configureBackBuffer()-methode.
Context3D
  backBufferWidth : int
[alleen-lezen] Geeft de breedte van de backbuffer op, die kan worden gewijzigd door een succesvolle aanroep van de configureBackBuffer()-methode.
Context3D
 Inheritedconstructor : Object
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie.
Object
  driverInfo : String
[alleen-lezen] Het type stuurprogramma voor grafische bibliotheken dat door deze renderingcontext wordt gebruikt.
Context3D
  enableErrorChecking : Boolean
Geeft aan of fouten die door de renderer zijn aangetroffen, aan de toepassing worden gemeld.
Context3D
  maxBackBufferHeight : int
Geeft de maximale hoogte van de backbuffer op.
Context3D
  maxBackBufferWidth : int
Geeft de maximale breedte van de backbuffer op.
Context3D
  profile : String
[alleen-lezen] Het feature-supportprofiel dat wordt gebruikt door dit Context3D-object.
Context3D
  supportsVideoTexture : Boolean
[statisch] [alleen-lezen] Geeft aan of Context3D videostructuur ondersteunt.
Context3D
  totalGPUMemory : Number
[alleen-lezen] Retourneert het totale GPU-geheugen dat wordt toegewezen door Stage3D-gegevensstructuren van een toepassing. Wanneer een GPU-bronobject wordt gemaakt, wordt het gebruikte geheugen opgeslagen in Context3D.
Context3D
Openbare methoden
 MethodeGedefinieerd door
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registreert een gebeurtenislistenerobject bij een object EventDispatcher, zodat de listener een melding van een gebeurtenis ontvangt.
EventDispatcher
  
clear(red:Number = 0.0, green:Number = 0.0, blue:Number = 0.0, alpha:Number = 1.0, depth:Number = 1.0, stencil:uint = 0, mask:uint = 0xffffffff):void
Wist de kleur-, diepte- en stencilbuffer die aan dit Context3D-object zijn gekoppeld, en vult deze met de opgegeven waarden.
Context3D
  
configureBackBuffer(width:int, height:int, antiAlias:int, enableDepthAndStencil:Boolean = true, wantsBestResolution:Boolean = false, wantsBestResolutionOnBrowserZoom:Boolean = false):void
Stelt de viewportgrootte en andere kenmerken van de renderingbuffer in.
Context3D
  
createCubeTexture(size:int, format:String, optimizeForRenderToTexture:Boolean, streamingLevels:int = 0):flash.display3D.textures:CubeTexture
Maakt een CubeTexture-object.
Context3D
  
createIndexBuffer(numIndices:int, bufferUsage:String = "staticDraw"):IndexBuffer3D
Maakt een IndexBuffer3D-object.
Context3D
  
Maakt een Program3D-object.
Context3D
  
createRectangleTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean):flash.display3D.textures:RectangleTexture
Hiermee maakt u een Rectangle Texture-object.
Context3D
  
createTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean, streamingLevels:int = 0):flash.display3D.textures:Texture
Maakt een Texture-object.
Context3D
  
createVertexBuffer(numVertices:int, data32PerVertex:int, bufferUsage:String = "staticDraw"):VertexBuffer3D
Maakt een VertexBuffer3D-object.
Context3D
  
    createVertexBufferForInstances(numVertices:int, data32PerVertex:int, instancesPerElement:int, bufferUsage:String = "staticDraw"):VertexBuffer3D
Maakt een VertexBuffer3D-object voor instantiegegevens.
Context3D
  
Maakt een VideoTexture-object.
Context3D
 Inherited
Verzendt een gebeurtenis naar de gebeurtenisstroom.
EventDispatcher
  
dispose(recreate:Boolean = true):void
Maakt alle bronnen en interne opslagruimte vrij die aan deze Context3D zijn gekoppeld.
Context3D
  
    drawToBitmapData(destination:BitmapData, srcRect:Rectangle = null, destPoint:Point = null):void
Tekent de huidige renderbuffer naar een bitmap.
Context3D
  
drawTriangles(indexBuffer:IndexBuffer3D, firstIndex:int = 0, numTriangles:int = -1):void
De opgegeven driehoeken weergeven met de huidige buffers en toestand van dit Context3D-object.
Context3D
  
    drawTrianglesInstanced(indexBuffer:IndexBuffer3D, numInstances:int, firstIndex:int = 0, numTriangles:int = -1):void
Geef de opgegeven instantiedriehoeken weer met de huidige buffers en toestand van dit Context3D-object.
Context3D
 Inherited
Controleert of het object EventDispatcher listeners heeft geregistreerd voor een specifiek type gebeurtenis.
EventDispatcher
 Inherited
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd.
Object
 Inherited
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven.
Object
  
Geeft de backbuffer voor rendering weer.
Context3D
 Inherited
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Verwijdert een listener uit het object EventDispatcher.
EventDispatcher
  
setBlendFactors(sourceFactor:String, destinationFactor:String):void
Geeft de factoren op die worden gebruikt om de uitvoerkleur van een tekenhandeling over te laten vloeien met de bestaande kleur.
Context3D
  
setColorMask(red:Boolean, green:Boolean, blue:Boolean, alpha:Boolean):void
Stelt het masker in dat wordt gebruikt bij het schrijven van kleuren naar de renderingbuffer.
Context3D
  
setCulling(triangleFaceToCull:String):void
Hiermee stelt u de schiftingmodus voor driehoeken in.
Context3D
  
setDepthTest(depthMask:Boolean, passCompareMode:String):void
Stelt het vergelijkingstype in dat wordt gebruikt voor dieptetests.
Context3D
  
    setFillMode(fillMode:String):void
De standaardvulmodus wordt gebruikt voor de weergave.
Context3D
  
Stelt hoekpunt- en fragmentshaderprogramma's in die vervolgens kunnen worden gebruikt voor rendering.
Context3D
  
setProgramConstantsFromByteArray(programType:String, firstRegister:int, numRegisters:int, data:ByteArray, byteArrayOffset:uint):void
Stel constanten in voor gebruik door shaderprogramma's met behulp van waarden die in een ByteArray zijn opgeslagen.
Context3D
  
setProgramConstantsFromMatrix(programType:String, firstRegister:int, matrix:Matrix3D, transposedMatrix:Boolean = false):void
Hiermee stelt u met behulp van waarden die in een Matrix3D zijn opgeslagen constanten in voor gebruik door shaderprogramma's.
Context3D
  
setProgramConstantsFromVector(programType:String, firstRegister:int, data:Vector.<Number>, numRegisters:int = -1):void
Stelt de constante-invoer in voor de shaderprogramma's.
Context3D
 Inherited
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in.
Object
  
Stelt de backbuffer voor rendering in als het renderdoel.
Context3D
  
setRenderToTexture(texture:flash.display3D.textures:TextureBase, enableDepthAndStencil:Boolean = false, antiAlias:int = 0, surfaceSelector:int = 0, colorOutputIndex:int = 0):void
Stelt de opgegeven structuur in als het renderdoel.
Context3D
  
setSamplerStateAt(sampler:int, wrap:String, filter:String, mipfilter:String):void
Overschrijf handmatig de structuursamplerstatus.
Context3D
  
Stelt een sscissor-rechthoek in, dit is een type tekenmasker.
Context3D
  
setStencilActions(triangleFace:String = "frontAndBack", compareMode:String = "always", actionOnBothPass:String = "keep", actionOnDepthFail:String = "keep", actionOnDepthPassStencilFail:String = "keep"):void
Stelt de stencilmodus- en bewerking in.
Context3D
  
setStencilReferenceValue(referenceValue:uint, readMask:uint = 255, writeMask:uint = 255):void
Stelt de stencilvergelijkingswaarde in die wordt gebruikt voor stenciltests.
Context3D
  
Geeft de structuur aan die moet worden gebruikt voor een structuurinvoerregister van een fragmentprogramma.
Context3D
  
setVertexBufferAt(index:int, buffer:VertexBuffer3D, bufferOffset:int = 0, format:String = "float4"):void
Geeft op welke hoekpuntgegevenscomponenten overeenkomen met één invoerwaarde voor hoekpuntshaderprogramma's.
Context3D
 Inherited
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies.
Object
 Inherited
Retourneert een tekenreeksrepresentatie van het opgegeven object.
Object
 Inherited
Retourneert de primitieve waarde van het opgegeven object.
Object
 Inherited
Controleert of een gebeurtenislistener is geregistreerd bij dit object EventDispatcher of een van de voorouders voor het opgegeven type gebeurtenis.
EventDispatcher
Gebeurtenissen
 Gebeurtenis Overzicht Gedefinieerd door
 Inherited[uitgezonden gebeurtenis] Wordt verzonden wanneer Flash Player of de AIR-toepassing de besturingssysteemfocus krijgt en actief wordt.EventDispatcher
 Inherited[uitgezonden gebeurtenis] Wordt verzonden wanneer Flash Player of de AIR-toepassing de systeemfocus verliest en inactief wordt.EventDispatcher
Eigenschapdetails

backBufferHeight

eigenschap
backBufferHeight:int  [alleen-lezen]

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 15, AIR 15

Geeft de hoogte van de backbuffer op, die kan worden gewijzigd door een succesvolle aanroep van de configureBackBuffer()-methode. De hoogte kan worden gewijzigd wanneer de zoomfactor van de browser wijzigt als wantsBestResolutionOnBrowserZoom is ingesteld op true in de laatste succesvolle aanroep van de configureBackBuffer()-methode. De wijziging in hoogte kan worden gedetecteerd door een gebeurtenislistener te registreren voor de gebeurtenis voor het wijzigen van de browserzoom.



Implementatie
    public function get backBufferHeight():int

Verwante API-elementen

backBufferWidth

eigenschap 
backBufferWidth:int  [alleen-lezen]

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 15, AIR 15

Geeft de breedte van de backbuffer op, die kan worden gewijzigd door een succesvolle aanroep van de configureBackBuffer()-methode. De hoogte kan worden gewijzigd wanneer de zoomfactor van de browser wijzigt als wantsBestResolutionOnBrowserZoom is ingesteld op true in de laatste succesvolle aanroep van de configureBackBuffer()-methode. De wijziging in breedte kan worden gedetecteerd door een gebeurtenislistener te registreren voor de gebeurtenis voor het wijzigen van de browserzoom.



Implementatie
    public function get backBufferWidth():int

Verwante API-elementen

driverInfo

eigenschap 
driverInfo:String  [alleen-lezen]

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Het type stuurprogramma voor grafische bibliotheken dat door deze renderingcontext wordt gebruikt. Geeft aan of de rendering wordt uitgevoerd met gebruik van software, een DirectX-stuurprogramma of een OpenGL-stuurprogramma. Geeft ook aan of hardwarerendering al dan niet is mislukt. Als de hardwarerendering mislukt, gebruikt Flash Player softwarerendering voor Stage3D en bevat driverInfo een van de volgende waarden:

  • "Software Hw_disabled=userDisabled" - Het selectievakje Hardwareversnelling inschakelen in de gebruikersinterface Instellingen Adobe Flash Player is niet ingeschakeld.
  • "Software Hw_disabled=oldDriver" - Er zijn bekende problemen met het grafische stuurprogramma voor de hardware. Dit probleem kan worden verholpen door het grafische stuurprogramma bij te werken.
  • "Software Hw_disabled=unavailable" - Bekende problemen met het grafische stuurprogramma voor de hardware, of fout bij de initialisatie van de grafische hardware.
  • "Software Hw_disabled=explicit" - De inhoud heeft expliciet gevraagd om softwarerendering via requestContext3D.
  • "Software Hw_disabled=domainMemory" - De inhoud gebruikt domainMemory die een licentie vereist bij gebruik met Stage3D-hardwarerendering. Ga naar adobe.com/go/fpl_nl.



Implementatie
    public function get driverInfo():String

enableErrorChecking

eigenschap 
enableErrorChecking:Boolean

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Geeft aan of fouten die door de renderer zijn aangetroffen, aan de toepassing worden gemeld.

Als enableErrorChecking true is, zijn de methoden clear() en drawTriangles() synchroon en kunnen deze methoden fouten genereren. Als enableErrorChecking false (de standaardwaarde) is, zijn de methoden clear() en drawTriangles() asynchroon en worden fouten niet gemeld. Wanneer foutcontrole wordt ingeschakeld, gaan de renderprestaties achteruit. Schakel foutcontrole alleen in voor foutopsporingsdoeleinden.



Implementatie
    public function get enableErrorChecking():Boolean
    public function set enableErrorChecking(value:Boolean):void

Verwante API-elementen

maxBackBufferHeight

eigenschap 
maxBackBufferHeight:int

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 15, AIR 15

Geeft de maximale hoogte van de backbuffer op. De oorspronkelijke waarde is de systeemlimiet in het platform. De eigenschap kan worden ingesteld op een waarde kleiner dan of gelijk aan, maar niet groter dan, de systeemlimiet. De eigenschap kan worden ingesteld op een waarde groter dan of gelijk aan, maar niet kleiner dan, de systeemlimiet. De minimale limiet is een constante waarde, 32, als de backbuffer niet is geconfigureerd. De minimale limiet wordt de waarde van de hoogteparameter in de laatste succesvolle aanroep van de configureBackBuffer()-methode nadat de backbuffer is geconfigureerd.



Implementatie
    public function get maxBackBufferHeight():int
    public function set maxBackBufferHeight(value:int):void

maxBackBufferWidth

eigenschap 
maxBackBufferWidth:int

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 15, AIR 15

Geeft de maximale breedte van de backbuffer op. De oorspronkelijke waarde is de systeemlimiet in het platform. De eigenschap kan worden ingesteld op een waarde kleiner dan of gelijk aan, maar niet groter dan, de systeemlimiet. De eigenschap kan worden ingesteld op een waarde groter dan of gelijk aan, maar niet kleiner dan, de systeemlimiet. De minimale limiet is een constante waarde, 32, als de backbuffer niet is geconfigureerd. De minimale limiet wordt de waarde van de breedteparameter in de laatste succesvolle aanroep van de configureBackBuffer()-methode nadat de backbuffer is geconfigureerd.



Implementatie
    public function get maxBackBufferWidth():int
    public function set maxBackBufferWidth(value:int):void

profile

eigenschap 
profile:String  [alleen-lezen]

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 12, AIR 4

Het feature-supportprofiel dat wordt gebruikt door dit Context3D-object.



Implementatie
    public function get profile():String

Verwante API-elementen

supportsVideoTexture

eigenschap 
supportsVideoTexture:Boolean  [alleen-lezen]

Taalversie: ActionScript 3.0
Runtimeversies: AIR 17.0, Flash Player 18.0

Geeft aan of Context3D videostructuur ondersteunt.



Implementatie
    public static function get supportsVideoTexture():Boolean

totalGPUMemory

eigenschap 
totalGPUMemory:Number  [alleen-lezen]

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 21, AIR 21

Retourneert het totale GPU-geheugen dat wordt toegewezen door Stage3D-gegevensstructuren van een toepassing.

Wanneer een GPU-bronobject wordt gemaakt, wordt het gebruikte geheugen opgeslagen in Context3D. Dit geheugen bevat indexbuffers, hoekpuntbuffers, structuren (met uitzondering van videostructuren) en programma's die zijn gemaakt via deze Context3D.

API totalGPUMemory retourneert het totale geheugengebruik door de bovenstaande bronnen aan de gebruiker. De standaardwaarde is 0. Het totale GPU-geheugen wordt geretourneerd in bytes. De informatie is alleen beschikbaar in de modus Direct op mobiele apparaten en in de modus Direct of GPU op bureaublad-pc's. (Als u <renderMode>gpu</renderMode> gebruikt op bureaublad-pc's, wordt de modus <renderMode>direct</renderMode> toegepast)

Deze API kan worden gebruikt bij SWF-versie 32 en hoger.



Implementatie
    public function get totalGPUMemory():Number
Methodedetails

clear

()methode
public function clear(red:Number = 0.0, green:Number = 0.0, blue:Number = 0.0, alpha:Number = 1.0, depth:Number = 1.0, stencil:uint = 0, mask:uint = 0xffffffff):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Wist de kleur-, diepte- en stencilbuffer die aan dit Context3D-object zijn gekoppeld, en vult deze met de opgegeven waarden.

Stel de parameter mask in om op te geven welke buffers moeten worden gewist. Gebruik de constanten die in de klasse Context3DClearMask zijn gedefinieerd om de parameter mask in te stellen. Gebruik de bitsgewijze operator OR (|) om meerdere buffers aan het masker toe te voegen (of gebruik Context3DClearMask.ALL). Bij rendering naar de backbuffer moet de methode configureBackBuffer() worden aangeroepen voordat clear() wordt aangeroepen.

Opmerking: als u een parameterwaarde buiten het toegestane bereik opgeeft, worden numerieke parameterwaarden aan het bereik 0-1 vastgeklemd. Dit wordt niet gemeld. En als stencil groter is dan 0xff, wordt deze op die waarde ingesteld.

Parameters

red:Number (default = 0.0) — de rode component van de kleur waarmee de kleurbuffer moet worden gewist, in het bereik 0-1.
 
green:Number (default = 0.0) — de groene component van de kleur waarmee de kleurbuffer moet worden gewist, in het bereik 0-1.
 
blue:Number (default = 0.0) — de blauwe component van de kleur waarmee de kleurbuffer moet worden gewist, in het bereik 0-1.
 
alpha:Number (default = 1.0) — de alfacomponent van de kleur waarmee de kleurbuffer moet worden gewist, in het bereik 0-1. De alfacomponent wordt niet gebruikt voor overvloeiing. Deze wordt rechtstreeks in de alfabuffer geschreven.
 
depth:Number (default = 1.0) — de waarde waarmee de dieptebuffer moet worden gewist, in het bereik 0-1.
 
stencil:uint (default = 0) — de 8 bitswaarde waarmee de dieptebuffer moet worden gewist, in het bereik 0x00-0xff.
 
mask:uint (default = 0xffffffff) — geeft aan welke buffers moeten worden gewist.


Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — 3768: De Stage3D-API kan niet worden gebruikt tijdens uitvoering op de achtergrond.

Verwante API-elementen

configureBackBuffer

()methode 
public function configureBackBuffer(width:int, height:int, antiAlias:int, enableDepthAndStencil:Boolean = true, wantsBestResolution:Boolean = false, wantsBestResolutionOnBrowserZoom:Boolean = false):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt de viewportgrootte en andere kenmerken van de renderingbuffer in.

Rendering is dubbel gebufferd. De backbuffer wordt omgewisseld met de zichtbare voorbuffer wanneer de methode present() wordt aangeroepen. De minimumgrootte van de buffer is 32x32 pixels. De grootte van de backbuffer wordt beperkt door de mogelijkheden van het apparaat en kan ook door de gebruiker worden ingesteld via de eigenschappen maxBackBufferWidth en maxBackBufferHeight. Het configureren van de buffer neemt veel tijd in beslag. U kunt de buffergrootte of -kenmerken beter niet tijdens normale renderbewerkingen wijzigen.

Parameters

width:int — breedte in pixels van de buffer.
 
height:int — hoogte in pixels van de buffer.
 
antiAlias:int — een geheel getal dat de gewenste antialiasingkwaliteit aangeeft. De waarde correleert met het aantal subsamples dat bij antialiasing wordt gebruikt. Bij gebruik van meer subsamples moeten meer berekeningen worden uitgevoerd, hoewel de relatieve invloed op prestaties afhankelijk is van de specifieke renderinghardware. Het type antialiasing en of antialiasing überhaupt wordt uitgevoerd, is afhankelijk van het apparaat en de renderingmodus. Antialiasing wordt helemaal niet ondersteund door de softwarerenderingcontext.
0Geen antialiasing.
2Minimale antialiasing.
4Hoogwaardige antialiasing.
16Bijzonder hoogwaardige antialiasing.
 
enableDepthAndStencil:Boolean (default = true) — Bij false is er geen diepte-of stencilbuffer gemaakt, bij true wordt een diepte- en stencilbuffer gemaakt. Als het element renderMode in het descriptorbestand van de toepassing direct is in geval van AIR 3.2. of een latere toepassing die is gecompileerd met SWF-versie 15 of hoger, moet het element depthAndStencil in het descriptorbestand van de toepassing dezelfde waarde hebben als dit argument. Standaard heeft het elementdepthAndStencil de waarde false.
 
wantsBestResolution:Boolean (default = false)true geeft aan dat als het apparaat HiDPI-schermen ondersteunt, het zal proberen een grotere backbuffer toe te wijzen dan aangeduid met de breedte- en hoogteparameters. Omdat dit meer pixels toevoegt en mogelijk het resultaat van arceringsbewerkingen wijzigt, is dit standaard uitgeschakeld. Gebruik Stage.contentsScaleFactor om te bepalen hoeveel de native backbuffer omhoog is geschaald.
 
wantsBestResolutionOnBrowserZoom:Boolean (default = false)true geeft aan dat de grootte van de backbuffer moet toenemen in verhouding tot de toename in de zoomfactor van de browser. De instelling van deze waarde is blijvend voor meerdere zoomacties van de browser. De standaardwaarde van de parameter is false. Stel de eigenschappen maxBackBufferWidth en maxBackBufferHeight in om de toename van de backbuffergrootte te beperken. Gebruik backBufferWidth en backBufferHeight om de huidig grootte van de backbuffer te bepalen.


Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Onjuiste invoergrootte: De parameter voor hoogte of breedte is kleiner dan de minimaal toegestane backbuffer of groter dan de maximaal toegestane backbuffer.
 
Error — 3709: De markering depthAndStencil in het descriptorbestand van de toepassing moet overeenkomen met de Booleaanse waardeenableDepthAndStencil die is doorgegeven aan configureBackBuffer() op het Context3D-object.

createCubeTexture

()methode 
public function createCubeTexture(size:int, format:String, optimizeForRenderToTexture:Boolean, streamingLevels:int = 0):flash.display3D.textures:CubeTexture

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Maakt een CubeTexture-object.

Gebruik een CubeTexture-object om kubusstructuurbitmaps te uploaden naar de renderingcontext en om tijdens rendering te verwijzen naar een kubusstructuur. Een kubusstructuur bestaat uit zes vierkante structuren van hetzelfde formaat die in een kubieke topologie zijn gerangschikt en nuttig zijn voor het beschrijven van omgevingstoewijzingen.

U kunt geen CubeTexture-objecten maken met een CubeTexture-constructor; gebruik in plaats daarvan deze methode. Na het maken van een CubeTexture-object, uploadt u de structuurbitmapgegevens met gebruik van de CubeTexture-methoden uploadFromBitmapData(), uploadFromByteArray() of uploadCompressedTextureFromByteArray().

Parameters

size:int — De structuurrandlengte in texels.
 
format:String — Het texelformaat van de opsommingslijst Context3DTextureFormat.

Met structuurcompressie kunt u structuurafbeeldingen rechtstreeks in gecomprimeerde vorm opslaan op de GPU. Zo bespaart u GPU-geheugen en geheugenbandbreedte. Gewoonlijk worden gecomprimeerde structuren offline gecomprimeerd en in gecomprimeerde vorm geüpload naar de GPU met gebruik van de methode Texture.uploadCompressedTextureFromByteArray. In Flash Player 11.4 en AIR 3.4 voor desktopplatforms is ondersteuning toegevoegd voor structuurcompressie tijdens de runtime. Dit kan in bepaalde situaties nuttig zijn, zoals bij het renderen van dynamische structuren van vectorillustraties. Let op: deze functie is momenteel niet beschikbaar op mobiele platforms. Dan wordt een ArgumentError (niet-overeenkomende structuurindeling) weergegeven. Voer de volgende stappen uit als u structuurcompressie tijdens de runtime wilt gebruiken. 1. Maak het structuurobject door de Context3D.createCubeTexture()-methode aan te roepen door flash.display3D.Context3DTextureFormat.COMPRESSED of flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA door te geven als de indelingsparameter. 2. Roep aan de hand van de instantie flash.display3D.textures.Texture die is geretourneerd door createCubeTexture() ofwel flash.display3D.textures.CubeTexture.uploadFromBitmapData() ofwel flash.display3D.textures.CubeTexture.uploadFromByteArray() aan om de structuur in één stap te uploaden en te comprimeren.

 
optimizeForRenderToTexture:Boolean — Stel de waarde in op true als de structuur waarschijnlijk wordt gebruikt als een renderdoel.
 
streamingLevels:int (default = 0) — Het MIP-mapniveau dat moet worden geladen voordat de afbeelding wordt gerenderd. Structuurstreaming maakt het mogelijk om de kleinste mip-niveaus eerst te laden en weer te geven en vervolgens afbeeldingen van steeds hogere kwaliteit weer te geven terwijl de structuren worden geladen. Eindgebruikers kunnen de afbeeldingen bij een lagere kwaliteit in de toepassing bekijken terwijl de afbeeldingen van hogere kwaliteit worden geladen.

Standaard is streamingLevels ingesteld op 0. Dit betekent dat de afbeelding met de hoogste kwaliteit in de mipmap moet worden geladen voordat de afbeelding wordt gerenderd. Deze parameter is toegevoegd in Flash Player 11.3 en AIR 3.3. Als u de standaardwaarde gebruikt, blijft de functionaliteit van de vorige versies van Flash Player en AIR behouden.

Stel streamingLevels in op een waarde tussen 1 en het aantal afbeeldingen in de MIP-map om structuurstreaming toe te staan. Stel dat u een MIP-map hebt met een hoofdafbeelding van 64x64 pixels. Dit is tevens de afbeelding met de hoogste kwaliteit. Afbeeldingen van lagere kwaliteit in de MIP-map hebben afmetingen van 32x32, 16x16, 8x8, 4x4, 2x2 en 1x1 pixel. Dit geldt voor 7 afbeeldingen in totaal (of 7 niveaus). Niveau 0 staat voor afbeeldingen van de hoogste kwaliteit. De maximale waarde van deze eigenschap is log2(min(breedte,hoogte)). Voor een hoofdafbeelding van 64 x 64 pixels geldt dus dat de maximale waarde voor streamingLevels gelijk is aan 7. Stel deze eigenschap in op 3 om de afbeelding te renderen nadat de afbeelding van 8x8 pixel is geladen

Opmerking: Als u deze eigenschap instelt op een waarde > 0, is dat van invloed op het geheugengebruik en de prestaties.

Geretourneerde waarde
flash.display3D.textures:CubeTexture

Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Bronlimiet overschreden: wanneer er te veel structuurobjecten zijn gemaakt of wanneer de hoeveelheid aan structuren toegewezen geheugen wordt overschreden.
 
ArgumentError — Dieptestructuur niet geïmplementeerd: wanneer u probeert een dieptestructuur te maken.
 
ArgumentError — Structuurformaat is nul: wanneer de parameter size niet groter is dan nul.
 
ArgumentError — Structuur geen macht van twee: als de parameter size geen macht van twee is.
 
ArgumentError — Structuur te groot: als de parameter size groter is dan 1024.
 
Error — Maken van structuur mislukt: als het object CubeTexture niet kan worden gemaakt door de renderingcontext (en er geen informatie over de oorzaak beschikbaar is).
 
ArgumentError — Ongeldig streamingniveau: als de waarde van streamingLevels groter of gelijk is aan log2(grootte).

Verwante API-elementen

createIndexBuffer

()methode 
public function createIndexBuffer(numIndices:int, bufferUsage:String = "staticDraw"):IndexBuffer3D

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Maakt een IndexBuffer3D-object.

Gebruik een IndexBuffer3D-object om een set driehoekindices te uploaden naar de rendering context en om voor de rendering te verwijzen naar deze set. Elke index in de indexbuffer verwijst naar een corresponderend hoekpunt in een hoekpuntbuffer. Elke set met drie indices vormt een driehoek. Geef het IndexBuffer3D-object door aan de methode drawTriangles() om een of meerdere in de indexbuffer gedefinieerde driehoeken te renderen.

U kunt geen IndexBuffer3D-objecten maken met de IndexBuffer3D-klasseconstructor; gebruik daarvoor deze methode. Na het maken van een IndexBuffer3D-object, uploadt u de indices met gebruik van de IndexBuffer3D-methode uploadFromVector() of uploadFromByteArray().

Parameters

numIndices:int — het aantal hoekpunten dat in de buffer moet worden opgeslagen.
 
bufferUsage:String (default = "staticDraw") — het verwachte buffergebruik. Gebruik een van de constante waarden die zijn gedefinieerd in Context3DBufferUsage. De hardwaredriver kan de desbetreffende optimalisatie uitvoeren als u deze op de juiste manier instelt. Deze parameter is alleen beschikbaar in versies na Flash 12 / AIR 4.

Geretourneerde waarde
IndexBuffer3D

Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Bronlimiet overschreden: als er te veel indexbuffers zijn gemaakt of wanneer de hoeveelheid aan indexbuffers toegewezen geheugen wordt overschreden.
 
Error — 3768: De Stage3D-API kan niet worden gebruikt tijdens uitvoering op de achtergrond.
 
ArgumentError — Buffer te groot: wanneer numIndices groter is dan of gelijk is aan 0xf0000.

Verwante API-elementen

createProgram

()methode 
public function createProgram():Program3D

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Maakt een Program3D-object.

Gebruik een Program3D-object om shaderprogramma's te uploaden naar de renderingcontext en om tijdens de rendering te verwijzen naar geüploade programma's. Een Program3D-object slaat twee programma's op, namelijk een hoekpuntprogramma en een fragmentprogramma (ook wel een pixelprogramma genoemd). De programma's worden geschreven in een assembleertaal voor binaire shaders.

U kunt geen Program3D -objecten maken met een Program3D-constructor; gebruik daarvoor deze methode. Na het maken van een Program3D-object, uploadt u de programma's met gebruik van de Program3D-methode upload().

Geretourneerde waarde
Program3D

Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Het aantal programma's is hoger dan 4096 of het totale geheugen is groter dan 16 MB (gebruik dispose om Program3D-bronnen te ontlasten).

Verwante API-elementen


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

In dit voorbeeld wordt geïllustreerd hoe u paren hoekpunt- en pixelprogramma's kunt maken, uploaden en activeren voor een renderingcontext. Het object renderContext is een instantie van de Context3D-klasse. De programma's in dit voorbeeld zijn geschreven in AGAL (Adobe Graphics Assembly Language).
//A simple vertex program in AGAL
const VERTEX_SHADER:String =
    "m44 op, va0, vc0 \n" +    
    "mov v0, va1"; 

//A simple fragment (or pixel) program in AGAL        
const FRAGMENT_SHADER:String = "mov oc, v0";  

var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
var programPair:Program3D;

//Compile shaders
vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );            

//Upload programs to render context
programPair = renderContext.createProgram();
programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
renderContext.setProgram( programPair );
            

createRectangleTexture

()methode 
public function createRectangleTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean):flash.display3D.textures:RectangleTexture

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11.8, AIR 3.8

Hiermee maakt u een Rectangle Texture-object.

Gebruik een RectangleTexture-object om structuurbitmaps te uploaden naar de renderingcontext en om tijdens rendering te verwijzen naar een structuur.

U kunt geen RectangleTexture-objecten maken met een RectangleTexture-constructor; gebruik in plaats daarvan deze methode. Na het maken van een RectangleTexture-object, uploadt u de structuurbitmaps met gebruik van de Texture-methoden uploadFromBitmapData() of uploadFromByteArray().

Merk op dat 32-bits geheel-getalstructuren opgeslagen zijn in een gecomprimeerde BGRA-indeling in overeenkomst met de BitmapData-indeling in Flash. Drijvende-kommatexturen gebruiken een conventionele RGBA-indeling.

Rechthoekige structuren zijn anders dan gewone 2D-structuren omdat de hoogte en breedte van rechthoekige structuren geen machten van 2 hoeven te zijn. Bovendien bevatten rechthoekige structuren geen MIP-maps. Rechthoekige structuren zijn erg handig wanneer er naar structuren wordt gerenderd. Als een Rectangle Texture-object wordt gebruikt met een sampler die mip-mapfiltering of de wrap-modus Herhalen gebruikt, mislukt de drawTriangles-aanroep. Bij Rectangle Texture-objecten is streaming ook niet toegestaan. De enige structuurindelingen die door rechthoekige structuren worden ondersteund, zijn BGRA, BGR_PACKED, BGRA_PACKED. De gecomprimeerde structuurindelingen worden niet ondersteund door rechthoekige structuren.

Parameters

width:int — De structuurbreedte in texels.
 
height:int — De structuurhoogte in texels.
 
format:String — Het texelformaat van de opsommingslijst Context3DTextureFormat.
 
optimizeForRenderToTexture:Boolean — Stel de waarde in op true als de structuur waarschijnlijk wordt gebruikt als een renderdoel.

Geretourneerde waarde
flash.display3D.textures:RectangleTexture

Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Bronlimiet overschreden: wanneer er te veel structuurobjecten zijn gemaakt of wanneer de hoeveelheid aan structuren toegewezen geheugen wordt overschreden.
 
ArgumentError — Structuurformaat is nul: wanneer zowel de parameterwidth als de parameter height niet groter is dan nul.
 
ArgumentError — Structuur te groot: als een van de parameters width of height groter is dan 2048.
 
Error — Maken van structuur mislukt: als het object Texture niet kan worden gemaakt door de renderingcontext (en er geen informatie over de oorzaak beschikbaar is).
 
Error — Vereist basislijnprofiel of hoger: als de rechthoekige structuur wordt gemaakt met een beperkt basislijnprofiel

Verwante API-elementen

createTexture

()methode 
public function createTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean, streamingLevels:int = 0):flash.display3D.textures:Texture

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Maakt een Texture-object.

Gebruik een Texture-object om structuurbitmaps te uploaden naar de renderingcontext en om tijdens rendering te verwijzen naar een structuur.

U kunt geen Texture-objecten maken met een Texture-constructor; gebruik in plaats daarvan deze methode. Na het maken van een Texture-object, uploadt u de structuurbitmaps met gebruik van de Texture-methoden uploadFromBitmapData(), uploadFromByteArray() of uploadCompressedTextureFromByteArray().

Merk op dat 32-bits geheel-getalstructuren opgeslagen zijn in een gecomprimeerde BGRA-indeling in overeenkomst met de BitmapData-indeling in Flash. Drijvende-kommatexturen gebruiken een conventionele RGBA-indeling.

Parameters

width:int — De structuurbreedte in texels.
 
height:int — De structuurhoogte in texels.
 
format:String — Het texelformaat van de opsommingslijst Context3DTextureFormat.

Met structuurcompressie kunt u structuurafbeeldingen rechtstreeks in gecomprimeerde vorm opslaan op de GPU. Zo bespaart u GPU-geheugen en geheugenbandbreedte. Gewoonlijk worden gecomprimeerde structuren offline gecomprimeerd en in gecomprimeerde vorm geüpload naar de GPU met gebruik van de methode Texture.uploadCompressedTextureFromByteArray. In Flash Player 11.4 en AIR 3.4 voor desktopplatforms is ondersteuning toegevoegd voor structuurcompressie tijdens de runtime. Dit kan in bepaalde situaties nuttig zijn, zoals bij het renderen van dynamische structuren van vectorillustraties. Let op: deze functie is momenteel niet beschikbaar op mobiele platforms. Dan wordt een ArgumentError (niet-overeenkomende structuurindeling) weergegeven. Voer de volgende stappen uit als u structuurcompressie tijdens de runtime wilt gebruiken. 1. Maak het structuurobject door de Context3D.createTexture()-methode aan te roepen of door flash.display3D.Context3DTextureFormat.COMPRESSED of flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA door te geven als de indelingsparameter. 2. Roep aan de hand van de instantie flash.display3D.textures.Texture die is geretourneerd door createTexture() ofwel flash.display3D.textures.Texture.uploadFromBitmapData() ofwel flash.display3D.textures.Texture.uploadFromByteArray() aan om de structuur in één stap te uploaden en te comprimeren.

 
optimizeForRenderToTexture:Boolean — Stel de waarde in op true als de structuur waarschijnlijk wordt gebruikt als een renderdoel.
 
streamingLevels:int (default = 0) — Het MIP-mapniveau dat moet worden geladen voordat de afbeelding wordt gerenderd. Structuurstreaming maakt het mogelijk om de kleinste mip-niveaus eerst te laden en weer te geven en vervolgens afbeeldingen van steeds hogere kwaliteit weer te geven terwijl de structuren worden geladen. Eindgebruikers kunnen de afbeeldingen bij een lagere kwaliteit in de toepassing bekijken terwijl de afbeeldingen van hogere kwaliteit worden geladen.

Standaard is streamingLevels ingesteld op 0. Dit betekent dat de afbeelding met de hoogste kwaliteit in de mipmap moet worden geladen voordat de afbeelding wordt gerenderd. Deze parameter is toegevoegd in Flash Player 11.3 en AIR 3.3. Als u de standaardwaarde gebruikt, blijft de functionaliteit van de vorige versies van Flash Player en AIR behouden.

Stel streamingLevels in op een waarde tussen 1 en het aantal afbeeldingen in de MIP-map om structuurstreaming toe te staan. Stel dat u een MIP-map hebt met een hoofdafbeelding van 64x64 pixels. Dit is tevens de afbeelding met de hoogste kwaliteit. Afbeeldingen van lagere kwaliteit in de MIP-map hebben afmetingen van 32x32, 16x16, 8x8, 4x4, 2x2 en 1x1 pixel. Dit geldt voor 7 afbeeldingen in totaal (of 7 niveaus). Niveau 0 staat voor afbeeldingen van de hoogste kwaliteit. De maximale waarde van deze eigenschap is log2(min(breedte,hoogte)). Voor een hoofdafbeelding van 64 x 64 pixels geldt dus dat de maximale waarde voor streamingLevels gelijk is aan 7. Stel deze eigenschap in op 3 om de afbeelding te renderen nadat de afbeelding van 8x8 pixel is geladen

Opmerking: Als u deze eigenschap instelt op een waarde > 0, is dat van invloed op het geheugengebruik en de prestaties.

Geretourneerde waarde
flash.display3D.textures:Texture

Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Bronlimiet overschreden: wanneer er te veel structuurobjecten zijn gemaakt of wanneer de hoeveelheid aan structuren toegewezen geheugen wordt overschreden.
 
ArgumentError — Dieptestructuur niet geïmplementeerd: wanneer u probeert een dieptestructuur te maken.
 
ArgumentError — Structuurformaat is nul: wanneer zowel de parameterwidth als de parameter height niet groter is dan nul.
 
ArgumentError — Structuur geen macht van twee: als de parameter width en de parameterheight een macht van twee is.
 
ArgumentError — Structuur te groot: als de parameter width of height groter is dan 2048 voor een basislijnprofiel en een beperkt basislijnprofiel of als de parameter width of height groter is dan 4096 voor uitgebreid basislijnprofiel en hoger.
 
Error — Maken van structuur mislukt: als het object Texture niet kan worden gemaakt door de renderingcontext (en er geen informatie over de oorzaak beschikbaar is).
 
ArgumentError — Ongeldig streamingniveau: als de waarde van streamingLevels groter of gelijk is aan log2(min(breedte,hoogte)).

Verwante API-elementen

createVertexBuffer

()methode 
public function createVertexBuffer(numVertices:int, data32PerVertex:int, bufferUsage:String = "staticDraw"):VertexBuffer3D

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Maakt een VertexBuffer3D-object.

Gebruik een VertexBuffer3D-object om een set hoekpuntgegevens te uploaden naar de renderingcontext. Een hoekpuntbuffer bevat de gegevens die nodig zijn om elk punt in de scènegeometrie te renderen. De aan elk hoekpunt gekoppelde gegevenskenmerken bevatten doorgaans de positie-, kleur- en structuurcoördinaten en dienen als de invoer voor het shaderprogramma voor hoekpunten. Stel met gebruik van de setVertexBufferAt()-methode vast welke gegevenswaarden overeenkomen met een van de invoeren van het hoekpuntprogramma. U kunt maximaal 64 32-bits waarden opgeven voor elk hoekpunt.

U kunt geen VertexBuffer3D-objecten maken met de VertexBuffer3D-constructor; gebruik daarvoor deze methode. Na het maken van een VertexBuffer3D-object, uploadt u de hoekpuntgegevens met gebruik van de VertexBuffer3D-methode uploadFromVector() of uploadFromByteArray().

Parameters

numVertices:int — Het aantal hoekpunten dat in de buffer moet worden opgeslagen. Het maximumaantal hoekpunten in één buffer is 65535.
 
data32PerVertex:int — Het aantal 32-bits (4 bytes) gegevenswaarden dat is gekoppeld aan elk hoekpunt. Het maximum aantal 32-bits gegevenselementen per hoekpunt is 64 (of 256 bytes). Let op: slechts acht kenmerkenregisters tegelijk zijn toegankelijk met een shaderprogramma voor hoekpunten. Gebruik SetVertextBufferAt() om kenmerken in een hoekpuntenbuffer te selecteren.
 
bufferUsage:String (default = "staticDraw") — het verwachte buffergebruik. Gebruik een van de constante waarden die zijn gedefinieerd in Context3DBufferUsage. De hardwaredriver kan de desbetreffende optimalisatie uitvoeren als u deze op de juiste manier instelt. Deze parameter is alleen beschikbaar in versies na Flash 12 / AIR 4.

Geretourneerde waarde
VertexBuffer3D

Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Bronlimiet overschreden: als er te veel hoekpuntbufferobjecten zijn gemaakt of wanneer de hoeveelheid aan hoekpuntbuffers toegewezen geheugen is overschreden.
 
ArgumentError — Buffer te groot: wanneer numVertices groter is dan 0x10000 of data32PerVertex groter is dan 64.
 
ArgumentError — Buffer heeft grootte van nul: wanneer numVertices of data32PerVertex gelijk is aan nul.
 
ArgumentError — Maken van buffer mislukt: als het object VertexBuffer3D niet kan worden gemaakt door de renderingcontext (en er geen informatie over de oorzaak beschikbaar is).
 
Error — 3768: De Stage3D-API kan niet worden gebruikt tijdens uitvoering op de achtergrond.

Verwante API-elementen


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

Het volgende voorbeeld illustreert het maken en laden van een hoekpuntgegevensbuffer. De buffer in het voorbeeld bevat twee typen gegevens voor elk hoekpunt: de positie, uitgedrukt in x-, y- en z-coördinaten, plus de kleur, uitgedrukt in RGB-componenten. Nadat de hoekpuntbuffer is gemaakt, roept het voorbeeld de methode setVertexBufferAt() aan om op te geven dat de eerste drie gegevenspunten als drie zwevende-kommawaarden in va0 worden doorgegeven aan het hoekpuntprogramma en dat de tweede set van drie gegevenspunten worden doorgegeven als va1. Er kunnen op deze manier maximaal 8 invoerwaarden, ook wel registers voor hoekpuntkenmerken genoemd, worden gedefinieerd voor een hoekpuntprogramma.
const dataPerVertex:int = 6;
var vertexData:Vector.<Number> = Vector.<Number>(
    [
      // x, y, z    r, g, b format
         0, 0, 0,   1, 1, 1,
        -1, 1, 0,   0, 0,.5,
         1, 1, 0,   0, 0, 1,
         1,-1, 0,  .5, 0, 0,
        -1,-1, 0,   1, 0, 0
    ]
);
var vertexes:VertexBuffer3D = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
//Identify vertex data inputs for vertex program
renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //Defines shader input va0 as the position data
renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //Defines shader input va1 as the color data

    createVertexBufferForInstances

()methode 
public function createVertexBufferForInstances(numVertices:int, data32PerVertex:int, instancesPerElement:int, bufferUsage:String = "staticDraw"):VertexBuffer3D

Taalversie: ActionScript 3.0
Runtimeversies: AIR 20.0

Maakt een VertexBuffer3D-object voor instantiegegevens.

Gebruik een VertexBuffer3D-object om een set instantiegegevens te uploaden naar de renderingcontext. De hoekpuntbuffer bevat de gegevens die nodig zijn om elke instantie in de scènegeometrie te renderen. Hoekpuntbuffers met instantiegegevens bieden kenmerken die gemeenschappelijk zijn voor alle hoekpunten van een instantie en die dienen als invoer voor het hoekpuntshaderprogramma. Stel met gebruik van de setVertexBufferAt()-methode vast welke gegevenswaarden overeenkomen met een van de invoeren van het hoekpuntprogramma. U kunt maximaal 64 32-bits waarden opgeven voor elk element van de hoekpuntbuffer.

U kunt geen VertexBuffer3D-objecten maken met de VertexBuffer3D-constructor; gebruik daarvoor deze methode. Na het maken van een VertexBuffer3D-object, uploadt u de hoekpuntgegevens met gebruik van de VertexBuffer3D-methode uploadFromVector() of uploadFromByteArray().

Parameters

numVertices:int — het aantal elementen dat in de buffer moet worden opgeslagen. Het maximale aantal elementen in één buffer is 65535.
 
data32PerVertex:int — het aantal 32-bits (4 bytes) gegevenswaarden dat is gekoppeld aan elk element. Het maximum aantal 32-bits gegevenselementen per hoekpunt is 64 (of 256 bytes).
 
instancesPerElement:int — het aantal instanties dat één element van de hoekpuntbuffer wordt gebruikt.
 
bufferUsage:String (default = "staticDraw") — het verwachte buffergebruik. Gebruik een van de constante waarden die zijn gedefinieerd in Context3DBufferUsage. De hardwaredriver kan de desbetreffende optimalisatie uitvoeren als u deze op de juiste manier instelt. Deze parameter is alleen beschikbaar in versies na Flash 12 / AIR 4.

Geretourneerde waarde
VertexBuffer3D

Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Bronlimiet overschreden: als er te veel hoekpuntbufferobjecten zijn gemaakt of wanneer de hoeveelheid aan hoekpuntbuffers toegewezen geheugen is overschreden.
 
ArgumentError — Buffer te groot: wanneer numVertices groter is dan 0x10000 of data32PerVertex groter is dan 64.
 
ArgumentError — Buffer heeft grootte van nul: wanneer numVertices of data32PerVertex gelijk is aan nul.
 
ArgumentError — Maken van buffer mislukt: als het object VertexBuffer3D niet kan worden gemaakt door de renderingcontext (en er geen informatie over de oorzaak beschikbaar is).
 
Error — 3768: De Stage3D-API kan niet worden gebruikt tijdens uitvoering op de achtergrond.
 
Error — Vereist Standard Extended-profiel of hoger: als deze methode wordt aangeroepen wanneer het gevraagde profiel een lagere waarde heeft dan het Standard Extended-profiel.
 
Error — Ongeldige instanties per element: als instancesPerElement niet groter is dan nul.

Verwante API-elementen

createVideoTexture

()methode 
public function createVideoTexture():flash.display3D.textures:VideoTexture

Taalversie: ActionScript 3.0
Runtimeversies: AIR 17.0, Flash Player 18.0

Maakt een VideoTexture-object.

Gebruik een VideoTexture-object om videoframes te verkrijgen als structuur uit een NetStream- of Camera-object en om de videoframes te uploaden naar de renderingcontext.

Het VideoTexture-object kan niet worden gemaakt met de VideoTexture-constructor. Gebruik in plaats daarvan deze methode. Na het maken van een VideoTexture-object, voegt u een NetStream-of een Camera-object bij om de videoframes aan te roepen met de VideoTexture-methode attachNetStream() of attachCamera().

Deze methode retourneert null als het systeem deze functie niet ondersteunt.

VideoTexture bevat geen mipmaps. Als VideoTexture wordt gebruikt met een sampler die mip-mapfiltering of de wrap-modus Herhalen gebruikt, mislukt de drawTriangles-aanroep. VideoTexture kan door de shaders worden behandeld als een BGRA-structuur. De poging om een instantie te maken van het VideoTexture-object mislukt als Context3D wordt aangevraagd met de modus voor softwarerendering.

Er zijn maximaal 4 VideoTexture-objecten beschikbaar per Context3D-instantie. Op mobiele apparatuur kan het aantal ondersteunde VideoTexture-objecten minder dan 4 zijn vanwege platformbeperkingen.

Geretourneerde waarde
flash.display3D.textures:VideoTexture

Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Bronlimiet overschreden: wanneer er te veel structuurobjecten zijn gemaakt of wanneer de hoeveelheid aan structuren toegewezen geheugen wordt overschreden.
 
Error — Maken van structuur mislukt: als het object Texture niet kan worden gemaakt door de renderingcontext (en er geen informatie over de oorzaak beschikbaar is).

dispose

()methode 
public function dispose(recreate:Boolean = true):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Maakt alle bronnen en interne opslagruimte vrij die aan deze Context3D zijn gekoppeld.

Alle indexbuffers, hoekpuntbuffers, structuren en programma's die zijn gemaakt via deze Context3D worden verwijderd, net zoals wanneer dispose() zou zijn aangeroepen voor elk afzonderlijk element. Bovendien wordt Context3D zelf verwijderd waardoor alle tijdelijke buffers en de backbuffer worden vrijgemaakt. Als configureBackBuffer(), clear(), drawTriangles(), createCubeTexture(), createTexture(), createProgram(), createIndexBuffer(), createVertexBuffer() of drawToBitmapData() wordt aangeroepen nadat dispose() is aangeroepen, genereert de runtime een uitzondering.

Waarschuwing: Wanneer dispose() wordt aangeroepen voor een Context3D terwijl er nog een gebeurtenislistener voor Events.CONTEXT3D_CREATE ingesteld is in het bijbehorende Stage3D-object, wordt door de dispose()-aanroep een apparaatverlies gesimuleerd. In dat geval wordt een nieuwe Context3D voor de Stage3D gemaakt en wordt de gebeurtenis Events.CONTEXT3D_CREATE nogmaals gegenereerd. Als u dit niet wenst, verwijdert u de gebeurtenislistener van het Stage3D-object voordat u dispose() aanroept of stelt u de parameter recreate in op false.

Parameters

recreate:Boolean (default = true)

Verwante API-elementen

    drawToBitmapData

()methode 
public function drawToBitmapData(destination:BitmapData, srcRect:Rectangle = null, destPoint:Point = null):void

Taalversie: ActionScript 3.0
Runtimeversies: AIR 3

Tekent de huidige renderbuffer naar een bitmap.

De actuele inhoud van de backrenderbuffer wordt naar een BitmapData-object gekopieerd. Dit is een mogelijk trage bewerking die soms een seconde in beslag kan nemen. Wees voorzichtig in uw gebruik hiervan. Merk op dat dit niet de voorrenderbuffer is (de buffer die wordt weergegeven in het werkgebied), maar de buffer waarnaar wordt getekend. Roep drawToBitmapData() aan vlak voordat u present() aanroept om de gerenderde afbeelding precies zo vast te leggen als deze in het werkgebied wordt weergegeven.

Vanaf AIR 25 zijn er twee nieuwe parameters geïntroduceerd in de API drawToBitmapData (). Deze API werkt nu met drie parameters. De eerste is de bestaande parameterdestination:BitmapData. De tweede parameter is srcRect:Rectangle; dit is de doelrechthoek op stage3D. De derde parameter is destPoint:Point; dit is de coördinaat op de doelbitmap. De parameters srcRect en destPoint zijn optioneel en standaard ingesteld op (0,0,bitmapWidth,bitmapHeight) en (0,0) respectievelijk.

De afbeelding wordt tijdens het tekenen niet geschaald naar de grootte van de bitmap. De inhoud wordt in plaats daarvan bijgesneden naar de grootte van de doelbitmap.

In Flash BitmapData-objecten worden de kleuren opgeslagen die al zijn vermenigvuldigd door de alfacomponent. Als de 'zuivere' RGB-kleurcomponenten van een pixel bijvoorbeeld (0x0A, 0x12, 0xBB) zijn en de alfacomponent 0x7F (,5) is, wordt de pixel met de volgende RGBA-waarden opgeslagen in het BitmapData-object: (0x05, 0x09, 0x5D, 0x7F). U kunt de overvloeifactoren zodanig instellen dat de naar de buffer gerenderde kleuren vermenigvuldigd worden met alfa of u kunt de bewerking uitvoeren in de fragmentshader. De renderingcontext valideert niet of de kleuren in vooraf vermenigvuldigde indeling worden opgeslagen.

Parameters

destination:BitmapData
 
srcRect:Rectangle (default = null)
 
destPoint:Point (default = null)


Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — 3768: De Stage3D-API kan niet worden gebruikt tijdens uitvoering op de achtergrond.
 
Error — 3802: Als een van de parameters destPoint:Point of srcRect:Rectangle zich buiten de bitmap/stage3D-coördinaatgrens bevindt, of niet-numerieke waarden (NaN) worden doorgegeven als invoer.

Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

Het volgende voorbeeld rendert twee driehoeken naar zowel de normale renderbuffer als naar een BitmapData-object. Het BitmapData-object wordt weergegeven met een Bitmap-object dat aan de gewone weergavelijst is toegevoegd. Er wordt een slagschaduwfilter toegepast op de bitmaprendering.
package
{
    import com.adobe.utils.AGALMiniAssembler;
    
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DRenderMode;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.Event;
    import flash.filters.DropShadowFilter;
    
    public class Context3D_drawToBitmapData extends Sprite
    {
        public const viewWidth:Number = 320;
        public const viewHeight:Number = 200;
        
        private var bitmap:Bitmap;
        private var stage3D:Stage3D;
        private var renderContext:Context3D;
        private var indexList:IndexBuffer3D;
        private var vertexes:VertexBuffer3D;
        
        private const VERTEX_SHADER:String =
            "mov op, va0    \n" +    //copy position to output 
            "mov v0, va1"; //copy color to varying variable v0
        
        private const FRAGMENT_SHADER:String = 
            "mov oc, v0"; //Set the output color to the value interpolated from the three triangle vertices 

        private var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var programPair:Program3D;
        
        public function Context3D_drawToBitmapData()
        {
            stage3D = this.stage.stage3Ds[0];
            stage3D.x = 0;
            stage3D.y = 0;

            //Add event listener before requesting the context
            stage3D.addEventListener( Event.CONTEXT3D_CREATE, contextCreated );            
            stage3D.requestContext3D( Context3DRenderMode.AUTO );
            
            //Compile shaders
            vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
            fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );            
        }
        
        //Note, context3DCreate event can happen at any time, such as when the hardware resources are taken by another process
        private function contextCreated( event:Event ):void
        {
            renderContext = Stage3D( event.target ).context3D;
            trace( "3D driver: " + renderContext.driverInfo );

            renderContext.enableErrorChecking = true; //Can slow rendering - only turn on when developing/testing
            renderContext.configureBackBuffer( viewWidth, viewHeight, 2, false );
            
            //Create vertex index list for the triangles
            var triangles:Vector.<uint> = Vector.<uint>( [ 0, 1, 2, 0, 3, 4 ] );
            indexList = renderContext.createIndexBuffer( triangles.length );
            indexList.uploadFromVector( triangles, 0, triangles.length );
            
            //Create vertexes
            const dataPerVertex:int = 6;
            var vertexData:Vector.<Number> = Vector.<Number>(
                [
                  // x, y, z    r, g, b format
                     0, 0, 0,   1, 1, 1,
                    -1, 1, 0,   0, 0,.5,
                     1, 1, 0,   0, 0, 1,
                     1,-1, 0,  .5, 0, 0,
                    -1,-1, 0,   1, 0, 0
                ]
            );
            vertexes = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
            vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
            //Identify vertex data inputs for vertex program
            renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //va0 is position
            renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //va1 is color
            
            //Upload programs to render context
            programPair = renderContext.createProgram();
            programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
            renderContext.setProgram( programPair );
            
            //Clear required before first drawTriangles() call
            renderContext.clear( .3,.3,.3 );
            
            
            //Draw the 2 triangles
            renderContext.drawTriangles( indexList, 0, 2 );
            
            var renderedBitmapData:BitmapData = new BitmapData( viewWidth, viewHeight, true );
            renderContext.drawToBitmapData( renderedBitmapData );
            
            renderContext.present();
            
            //Add to stage
            bitmap = new Bitmap( renderedBitmapData );
            this.addChild( bitmap );
            bitmap.x = 55;
            bitmap.y = 25;
            bitmap.filters = [new DropShadowFilter( 8, 235, .4 )];
        }
    }
}

drawTriangles

()methode 
public function drawTriangles(indexBuffer:IndexBuffer3D, firstIndex:int = 0, numTriangles:int = -1):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

De opgegeven driehoeken weergeven met de huidige buffers en toestand van dit Context3D-object.

Voor elke driehoek worden de hoekpunten door het hoekpuntshaderprogramma verwerkt, en het oppervlak door het pixelshaderprogramma. De uitvoerkleur van het pixelprogramma voor elke pixel wordt naar het renderdoel getekend afhankelijk van de stencilbewerkingen, dieptetest en bron- en doelalfa, en de huidige overvloeimodus. Het renderdoel kan de hoofdrenderbuffer of een structuur zijn.

Als schifting (culling) ingeschakeld is, (met de methode setCulling()), kunnen driehoeken uit de scène worden verwijderd voordat het pixelprogramma wordt uitgevoerd. Als stencil- en dieptetests zijn ingeschakeld, kunnen uitvoerpixels van het pixelprogramma worden verwijderd zonder de renderbestemming bij te werken. Bovendien kan het pixelprogramma besluiten geen kleur voor een pixel uit te voeren.

De gerenderde driehoeken worden pas weergegeven in de viewport als u de methode present() aanroept. Na elke aanroep van present(), dient de methode clear() te worden aangeroepen vóór de eerste aanroep van drawTriangles(), anders mislukt de rendering.

Wanneer enableErrorChecking false is, wordt deze functie direct verwerkt zonder op resultaten te wachten, en worden alleen uitzonderingen gegenereerd als deze Context3D-instantie is verwijderd of er te veel tekenaanroepen zijn. Als de toestand van de renderingcontext ongeldig is, mislukt renderen (dit wordt niet gemeld). Als de eigenschap enableErrorChecking true is, wordt deze functie verwerkt nadat de driehoeken zijn getekend, en worden uitzonderingen gegenereerd voor alle tekenfouten en ongeldige contexttoestanden.

Parameters

indexBuffer:IndexBuffer3D — Een set hoekpuntindices die verwijzen naar de hoekpunten die moeten worden gerenderd.
 
firstIndex:int (default = 0) — De index van de eerste hoekpuntindex die is geselecteerd voor de rendering. Standaard 0.
 
numTriangles:int (default = -1) — Het aantal driehoeken dat moet worden gerenderd. Elke driehoek gebruikt drie indices. Geef -1 door om alle driehoeken in de indexbuffer te tekenen. Standaard -1.


Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Als deze methode te vaak wordt aangeroepen tussen aanroepen van present(). Het maximum aantal aanroepen is 32.768.

De volgende fouten treden alleen op wanneer de eigenschap enableErrorChecking de waarde true heeft:

 
Error — Eerst wissen voor tekenen: als de buffer niet is gewist sinds de laatste keer dat present() is aangeroepen.
 
Error — Als er geen geldig Program3D-object is ingesteld.
 
Error — Geen geldige indexbuffer ingesteld: als er geen IndexBuffer3D-object is ingesteld.
 
Error — Parametergezondheidscontrole mislukt: wanneer het aantal driehoeken dat moet worden getekend of de firstIndex de toegestane waarden overschrijdt.
 
RangeError — Onvoldoende indices in deze buffer: als er onvoldoende indices in de buffer zijn om het aantal te tekenen driehoeken te definiëren.
 
Error — Aan structuur gekoppeld sample ook gekoppeld aan render: wanneer het renderdoel een structuur is en die structuur is toegewezen aan een structuurinvoer van het huidige fragmentprogramma.
 
Error — Sample gekoppeld aan ongeldige structuur: er is een ongeldige structuur opgegeven als de invoer voor het huidige fragmentprogramma.
 
Error — Samplerindeling komt niet overeen met structuurindeling: wanneer de structuur die is toegewezen als de invoer voor het huidige fragmentprogramma een andere indeling heeft dan is opgegeven voor het samplerregister. Bijvoorbeeld wanneer een 2D-structuur wordt toegewezen aan een kubusstructuursampler.
 
Error — Sample koppelt niet-gedefinieerde structuur: het huidige fragmentprogramma benadert een structuurregister dat niet is ingesteld (met gebruik van setTextureAt().
 
Error — Dezelfde structuur vereist dezelfde samplerparameters: als een structuur voor meerdere samplerregisters wordt gebruikt, dienen alle samplers over dezelfde instellingen te beschikken. U kunt bijvoorbeeld niet een sampler instellen op beperken en een andere op insluiten.
 
Error — Structuur gekoppeld, maar niet gebruikt: een structuur is ingesteld als shaderinvoer, maar wordt niet gebruikt.
 
Error — Stream wordt niet gebruikt: er is een hoekpuntbuffer toegewezen aan invoer voor hoekpuntkenmerken, maar het hoekpuntprogramma verwijst niet naar het corresponderende register.
 
Error — Stream is ongeldig: een VertexBuffer3D-object dat is toegewezen aan invoer voor een hoekpuntprogramma is geen geldig object.
 
RangeError — Stream heeft onvoldoende hoekpunten: een hoekpuntbuffer die gegevens verschaft voor het tekenen van de opgegeven driehoeken beschikt over onvoldoende gegevens.
 
RangeError — Stream-hoekpuntverschuivingen buiten bereik: de verschuiving die is opgegeven in een setVertexBufferAt()-aanroep is negatief of passeert het einde van de buffer.
 
Error — Stream gelezen, maar niet ingesteld: een hoekpuntkenmerk dat wordt gebruikt door het actuele hoekpuntprogramma is niet ingesteld (met setVertexBufferAt()).

Verwante API-elementen


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

De volgende klasse tekent twee driehoeken naar een Stage3D-viewport in het werkgebied. De driehoeken hebben één hoekpunt gemeen, dat zich bevindt op de oorsprong (0,0,0).

De driehoeken worden gedefinieerd met de hoekpuntenbuffer en de indexbuffer. De hoekpuntenbuffer bevat de positie- en kleurgegevens voor elk hoekpunt van de driehoek. De indexbuffer bevat indexen op de hoekpuntenbuffer. Een driehoek wordt door drie indexen gedefinieerd. Een driehoek die uit de eerste drie punten in de hoekpuntenbuffer bestaat, wordt in de indexbuffer bijvoorbeeld als 0,1,2 vermeld.

In dit eenvoudige voorbeeld wordt geen 3D-transformatie uitgevoerd. Alleen objecten binnen het canonieke weergavegebied (eenheidsvolume 2x2x1) kunnen worden weergegeven en de coördinaten van de driehoeken worden zodanig gedefinieerd dat ze binnen dit gebied blijven. Bij het renderen van een gebruikelijke 3D-scène projecteert u de te renderen objecten uit het globale coördinatensysteem echter in dit weergavegebied met een orthogonale of perspectiefprojectie.

package
{
    import com.adobe.utils.AGALMiniAssembler;
    
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DRenderMode;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.Event;
    
    public class Context3D_drawTriangles extends Sprite
    {
        public const viewWidth:Number = 320;
        public const viewHeight:Number = 200;
        
        private var stage3D:Stage3D;
        private var renderContext:Context3D;
        private var indexList:IndexBuffer3D;
        private var vertexes:VertexBuffer3D;
        
        private const VERTEX_SHADER:String =
            "mov op, va0    \n" +    //copy position to output 
            "mov v0, va1"; //copy color to varying variable v0
        
        private const FRAGMENT_SHADER:String = 
            "mov oc, v0"; //Set the output color to the value interpolated from the three triangle vertices 

        private var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var programPair:Program3D;
        
        public function Context3D_drawTriangles()
        {
            stage3D = this.stage.stage3Ds[0];
            stage3D.x = 10;
            stage3D.y = 10;

            //Add event listener before requesting the context
            stage3D.addEventListener( Event.CONTEXT3D_CREATE, contextCreated );            
            stage3D.requestContext3D( Context3DRenderMode.AUTO );
            
            //Compile shaders
            vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
            fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );            
        }
        
        //Note, context3DCreate event can happen at any time, such as when the hardware resources are taken by another process
        private function contextCreated( event:Event ):void
        {
            renderContext = Stage3D( event.target ).context3D;
            trace( "3D driver: " + renderContext.driverInfo );

            renderContext.enableErrorChecking = true; //Can slow rendering - only turn on when developing/testing
            renderContext.configureBackBuffer( viewWidth, viewHeight, 2, false );
            
            //Create vertex index list for the triangles
            var triangles:Vector.<uint> = Vector.<uint>( [ 0, 1, 2, 0, 3, 4 ] );
            indexList = renderContext.createIndexBuffer( triangles.length );
            indexList.uploadFromVector( triangles, 0, triangles.length );
            
            //Create vertexes
            const dataPerVertex:int = 6;
            var vertexData:Vector.<Number> = Vector.<Number>(
                [
                  // x, y, z    r, g, b format
                     0, 0, 0,   1, 1, 1,
                    -1, 1, 0,   0, 0,.5,
                     1, 1, 0,   0, 0, 1,
                     1,-1, 0,  .5, 0, 0,
                    -1,-1, 0,   1, 0, 0
                ]
            );
            vertexes = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
            vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
            //Identify vertex data inputs for vertex program
            renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //va0 is position
            renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //va1 is color
            
            //Upload programs to render context
            programPair = renderContext.createProgram();
            programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
            renderContext.setProgram( programPair );
            
            //Clear required before first drawTriangles() call
            renderContext.clear( .3,.3,.3 );
            
            //Draw the 2 triangles
            renderContext.drawTriangles( indexList, 0, 2 );
            
            //Show the frame
            renderContext.present();
        }
    }
}

    drawTrianglesInstanced

()methode 
public function drawTrianglesInstanced(indexBuffer:IndexBuffer3D, numInstances:int, firstIndex:int = 0, numTriangles:int = -1):void

Taalversie: ActionScript 3.0
Runtimeversies: AIR 20.0

Geef de opgegeven instantiedriehoeken weer met de huidige buffers en toestand van dit Context3D-object.

Voor elke driehoek van elke instantie worden de hoekpunten door het hoekpuntshaderprogramma verwerkt, en het oppervlak door het pixelshaderprogramma. De uitvoerkleur van het pixelprogramma voor elke pixel wordt naar het renderdoel getekend afhankelijk van de stencilbewerkingen, dieptetest en bron- en doelalfa, en de huidige overvloeimodus. Het renderdoel kan de hoofdrenderbuffer of een structuur zijn.

Als schifting (culling) ingeschakeld is, (met de methode setCulling()), kunnen driehoeken uit de scène worden verwijderd voordat het pixelprogramma wordt uitgevoerd. Als stencil- en dieptetests zijn ingeschakeld, kunnen uitvoerpixels van het pixelprogramma worden verwijderd zonder de renderbestemming bij te werken. Bovendien kan het pixelprogramma besluiten geen kleur voor een pixel uit te voeren.

De gerenderde instantiedriehoeken worden pas weergegeven in de viewport als u de methode present() aanroept. Na elke aanroep van present(), moet de methode clear() worden aangeroepen vóór de eerste aanroep van drawTrianglesInstanced(), anders mislukt de rendering.

Wanneer enableErrorChecking false is, wordt deze functie direct verwerkt zonder op resultaten te wachten, en worden alleen uitzonderingen gegenereerd als deze Context3D-instantie is verwijderd of er te veel tekenaanroepen zijn. Als de toestand van de renderingcontext ongeldig is, mislukt renderen (dit wordt niet gemeld). Als de eigenschap enableErrorChecking true is, wordt deze functie verwerkt nadat de driehoeken zijn getekend, en worden uitzonderingen gegenereerd voor alle tekenfouten en ongeldige contexttoestanden.

Deze methode kan een uitzondering genereren als de volgorde van de geïnstantieerde buffer niet correct is ingesteld met SetVertexAt(). Met Direct 3D 9 bijvoorbeeld, moeten de geïndexeerde geometriegegevens en het aantal te tekenen instanties altijd zijn ingesteld in stream nul met SetStreamSourceFreq()-API.

Dit betekent dat de hoekpuntbuffer die CreateVertexBufferForInstance() gebruikt, niet moet worden geplaatst met het minimale indexnummer wanneer deze buffer wordt gerangschikt met SetVertexBufferAt() als invoer voor het hoekpuntshaderprogramma. De gegenereerde hoekpuntbuffer die CreateVertexBuffer() gebruikt, moet worden geplaatst met een kleiner indexnummer dan het nummer dat is toegewezen aan CreateVertexBufferForInstance(). In het algemeen geldt dat geometriegegevens moeten worden geplaatst voordat per-instantiegegevens worden geplaatst, met SetVertexBufferAt().

Parameters

indexBuffer:IndexBuffer3D — Een set hoekpuntindices die verwijzen naar de hoekpunten die moeten worden gerenderd.
 
numInstances:int — Het aantal instanties dat moet worden weergegeven.
 
firstIndex:int (default = 0) — De index van de eerste hoekpuntindex die is geselecteerd voor de rendering. Standaard 0.
 
numTriangles:int (default = -1) — Het aantal driehoeken dat moet worden gerenderd. Elke driehoek gebruikt drie indices. Geef -1 door om alle driehoeken in de indexbuffer te tekenen. Standaard -1.


Gegenereerde uitzondering
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.
 
Error — Als deze methode te vaak wordt aangeroepen tussen aanroepen van present(). Het maximum aantal aanroepen is 32.768.
 
Error — Vereist Standard Extended-profiel of hoger: als deze methode wordt aangeroepen wanneer het gevraagde profiel een lagere waarde heeft dan het Standard Extended-profiel.
 
Error — Als deze methode wordt aangeroepen met negatieve numInstances.

De volgende fouten treden alleen op wanneer de eigenschap enableErrorChecking de waarde true heeft:

 
Error — Eerst wissen voor tekenen: als de buffer niet is gewist sinds de laatste keer dat present() is aangeroepen.
 
Error — Als er geen geldig Program3D-object is ingesteld.
 
Error — Geen geldige indexbuffer ingesteld: als er geen IndexBuffer3D-object is ingesteld.
 
Error — Parametergezondheidscontrole mislukt: wanneer het aantal driehoeken dat moet worden getekend of de firstIndex de toegestane waarden overschrijdt.
 
RangeError — Onvoldoende indices in deze buffer: als er onvoldoende indices in de buffer zijn om het aantal te tekenen driehoeken te definiëren.
 
Error — Aan structuur gekoppeld sample ook gekoppeld aan render: wanneer het renderdoel een structuur is en die structuur is toegewezen aan een structuurinvoer van het huidige fragmentprogramma.
 
Error — Sample gekoppeld aan ongeldige structuur: er is een ongeldige structuur opgegeven als de invoer voor het huidige fragmentprogramma.
 
Error — Samplerindeling komt niet overeen met structuurindeling: wanneer de structuur die is toegewezen als de invoer voor het huidige fragmentprogramma een andere indeling heeft dan is opgegeven voor het samplerregister. Bijvoorbeeld wanneer een 2D-structuur wordt toegewezen aan een kubusstructuursampler.
 
Error — Sample koppelt niet-gedefinieerde structuur: het huidige fragmentprogramma benadert een structuurregister dat niet is ingesteld (met gebruik van setTextureAt().
 
Error — Dezelfde structuur vereist dezelfde samplerparameters: als een structuur voor meerdere samplerregisters wordt gebruikt, dienen alle samplers over dezelfde instellingen te beschikken. U kunt bijvoorbeeld niet een sampler instellen op beperken en een andere op insluiten.
 
Error — Structuur gekoppeld, maar niet gebruikt: een structuur is ingesteld als shaderinvoer, maar wordt niet gebruikt.
 
Error — Stream wordt niet gebruikt: er is een hoekpuntbuffer toegewezen aan invoer voor hoekpuntkenmerken, maar het hoekpuntprogramma verwijst niet naar het corresponderende register.
 
Error — Stream is ongeldig: een VertexBuffer3D-object dat is toegewezen aan invoer voor een hoekpuntprogramma is geen geldig object.
 
RangeError — Stream heeft onvoldoende hoekpunten: een hoekpuntbuffer die gegevens verschaft voor het tekenen van de opgegeven driehoeken beschikt over onvoldoende gegevens.
 
RangeError — Stream-hoekpuntverschuivingen buiten bereik: de verschuiving die is opgegeven in een setVertexBufferAt()-aanroep is negatief of passeert het einde van de buffer.
 
Error — Stream gelezen, maar niet ingesteld: een hoekpuntkenmerk dat wordt gebruikt door het actuele hoekpuntprogramma is niet ingesteld (met setVertexBufferAt()).
 
Error — Hoekpuntbufferstream bevat onvoldoende elementen voor instanties: als een hoekpuntbufferstream onvoldoende elementen bevat voor het aantal instanties.
 
Error — Hoekpuntbufferstream voor instanties is niet correct ingesteld bij het minimale indexkenmerkenregister: Als de gegenereerde hoekpuntenbuffer die gebruikmaakt van CreateVertexBuffer() een groter indexnummer krijgt dan het nummer dat is toegewezen aan de gegenereerde hoekpuntbuffer die gebruikmaakt van CreateVertexBufferForInstance().

Verwante API-elementen


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

De volgende klasse tekent drie driehoeken met de instantietekenfunctie. Hierbij wordt één tekenaanroep gebruikt in plaats van meerdere tekenaanroepen.
package
{
    import com.adobe.utils.v3.AGALMiniAssembler;
    
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DTriangleFace;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.Event;
    import flash.geom.Matrix3D;
    import flash.utils.ByteArray;
    
    public class Context3D_HelloInstancedDrawing extends Sprite
    {
        private var W:int;
        private var H:int;
        
        private var renderContext:Context3D;
        private var program:Program3D;
        private var vertexBuffer:VertexBuffer3D;
        private var instanceBufferColor:VertexBuffer3D;
        private var instanceBufferTranslation:VertexBuffer3D;
        private var indexBuffer:IndexBuffer3D;
        private var m:Matrix3D;
        private var vertexShader:ByteArray;
        private var fragmentShader:ByteArray;
        
        public function Context3D_HelloInstancedDrawing()
        {
            if (hasEventListener(Event.ADDED_TO_STAGE))
                removeEventListener(Event.ADDED_TO_STAGE, init);
            W = stage.stageWidth;
            H = stage.stageHeight;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, contextCreated);
            //We need to request context3D in standard extended profile as instanced drawing requires standard extended profile.
            stage.stage3Ds[0].requestContext3D("auto","standardExtended");            
            
        }
        
        //Note: <code>context3DCreate</code> event can happen at any time. For example, when the hardware resources are taken up by another process.
        private function contextCreated( event:Event ):void
        {
            var t:Stage3D = event.target as Stage3D;
            renderContext = t.context3D;
            trace( "3D driver: " + renderContext.driverInfo );
            setupScene();
        }
        
        
        private function setupScene():void
        {
            renderContext.enableErrorChecking = true;
            renderContext.configureBackBuffer( W, H, 2, false );
            renderContext.setCulling( Context3DTriangleFace.BACK );
            
            //create vertex buffer for geometry information of the instances (same geometry of the instances)
            vertexBuffer = renderContext.createVertexBuffer(3, 3);
            
            //The color and translation information varies across the instances. Use <code>createVertexBufferForInstances</code> for color and translation information.
            //the intancesPerElement parameter used is 1 which means that each instance will use unique element of the instances buffer
            //if the intancesPerElement is 3 then sets of 3 instances will use the same element of the instances buffer
            instanceBufferColor = renderContext.createVertexBufferForInstances(4,3,1);
            instanceBufferTranslation = renderContext.createVertexBufferForInstances(4,3,1);
            //create index buffer for the triangle
            indexBuffer = renderContext.createIndexBuffer(3);
            
            //create and compile program
            program = renderContext.createProgram();
            var assembler:AGALMiniAssembler = new AGALMiniAssembler();
            
            // VERTEX SHADER
            var code:String = "";
            //The vertex shader code runs for every vertex of each instance.
            //The vertex buffers uploaded for instance data (va1,va2) are used when the vertex shader for that particular instance is being executed.
            code += "add vt0, va0, va2\n";
            code += "mov op, vt0\n";
            code += "mov v0, va1\n";
            
            vertexShader = assembler.assemble(Context3DProgramType.VERTEX, code);
            
            //FRAGMENT SHADER
            code = "mov oc, v0\n"; 
            
            // Compile the agal code into bytecode using agalminiassembler
            fragmentShader = assembler.assemble(Context3DProgramType.FRAGMENT, code);
            
            //upload program to gpu
            program.upload(vertexShader, fragmentShader);
            
            //geometry data for the instances
            var vertexData:Vector.<Number>=Vector.<Number>([
                -0.3, -0.3, 0,     // - 1st vertex x,y,z
                0, 0.3, 1,         // - 2nd vertex x,y,z 
                0.3, -0.3, 0    // - 3rd vertex x,y,z
            ]);
            
            //per instance color data
            var instanceColorData:Vector.<Number>=Vector.<Number>([
                1.0, 0.0, 0.0,     // - 1st instance r,g,b
                0.0, 1.0, 0.0,  // - 2nd instance r,g,b
                1.0, 1.0, 1.0,    // - 3rd instance r,g,b
                0.7, 0.0, 1.0   // - 4th instance r,g,b
            ]);
            //per instance translation data
            var instanceTranslationData:Vector.<Number>=Vector.<Number>([
                -0.3, -0.3, 0.0,     // - 1st instance x,y,z
                0.3, 0.3, 0.0,         // - 2nd instance x,y,z
                -0.3, 0.3, 0.0,        // - 3rd instance x,y,z
                0.3, -0.3, 0.0      // - 4th instance x,y,z
            ]);
            
            vertexBuffer.uploadFromVector(vertexData, 0, 3);
            instanceBufferColor.uploadFromVector(instanceColorData, 0, 4);
            indexBuffer.uploadFromVector(Vector.<uint>([0, 1, 2]), 0, 3);
            instanceBufferTranslation.uploadFromVector(instanceTranslationData, 0, 4);
            
            //pass data to program
            renderContext.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3);
            renderContext.setVertexBufferAt(1, instanceBufferColor, 0, Context3DVertexBufferFormat.FLOAT_3);
            renderContext.setVertexBufferAt(2, instanceBufferTranslation, 0, Context3DVertexBufferFormat.FLOAT_3);
            
            //set active program
            renderContext.setProgram(program);
            renderContext.enableErrorChecking = true;
            addEventListener(Event.ENTER_FRAME, render);
            
        }
        
        private function render( event:Event ):void
        {
            renderContext.clear(0.3, 0.2, 1, 1); // Clear the backbuffer by filling it with the given color
            //Draw three instances of the same geometry but with varying instance data specified using <code>vertexBufferForInstances</code>.
            renderContext.drawTrianglesInstanced(indexBuffer,4);
            renderContext.present(); // render the backbuffer on screen.
        }    
    }
}

De volgende klasse tekent drie driehoeken met de instantietekenfunctie. Hierbij wordt één tekenaanroep gebruikt in plaats van meerdere tekenaanroepen.
package
{
    import com.adobe.utils.v3.AGALMiniAssembler;
    
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DTriangleFace;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.Event;
    import flash.geom.Matrix3D;
    import flash.utils.ByteArray;
    
    public class Context3D_HelloInstanceIdRegister extends Sprite
    {
        private var W:int;
        private var H:int;
        
        private var renderContext:Context3D;
        private var program:Program3D;
        private var vertexBuffer:VertexBuffer3D;
        private var instanceBufferColor:VertexBuffer3D;
        private var instanceBufferTranslation:VertexBuffer3D;
        private var indexBuffer:IndexBuffer3D;
        private var m:Matrix3D;
        private var vertexShader:ByteArray;
        private var fragmentShader:ByteArray;
        
        public function Context3D_HelloInstanceIdRegister()
        {
            if (hasEventListener(Event.ADDED_TO_STAGE))
                removeEventListener(Event.ADDED_TO_STAGE, init);
            W = stage.stageWidth;
            H = stage.stageHeight;
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            stage.stage3Ds[0].addEventListener(Event.CONTEXT3D_CREATE, contextCreated);
            //We need to request context3D in standard extended profile as instanced drawing requires standard extended profile.
            stage.stage3Ds[0].requestContext3D("auto","standardExtended");            
            
        }
        
        //Note: <code>context3DCreate</code> event can happen at any time. For example, when the hardware resources are taken up by another process.
        private function contextCreated( event:Event ):void
        {
            var t:Stage3D = event.target as Stage3D;
            renderContext = t.context3D;
            trace( "3D driver: " + renderContext.driverInfo );
            setupScene();
        }
        
        
        private function setupScene():void
        {
            renderContext.enableErrorChecking = true;
            renderContext.configureBackBuffer( W, H, 2, false );
            renderContext.setCulling( Context3DTriangleFace.BACK );
            
            //create vertex buffer for geometry information of the instances (same geometry of the instances)
            vertexBuffer = renderContext.createVertexBuffer(3, 3);
            
            //The color and translation information varies across the instances. Use <code>createVertexBufferForInstances</code> for color and translation information.
            //the intancesPerElement parameter used is 1 which means that each instance will use unique element of the instances buffer
            //if the intancesPerElement is 3 then sets of 3 instances will use the same element of the instances buffer
            instanceBufferColor = renderContext.createVertexBufferForInstances(4,3,1);
            instanceBufferTranslation = renderContext.createVertexBufferForInstances(4,3,1);
            //create index buffer for the triangle
            indexBuffer = renderContext.createIndexBuffer(3);
            
            //create and compile program
            program = renderContext.createProgram();
            //Note : for instance id support , use the latest AgalMiniAssembler from github - https://github.com/adobe-flash/graphicscorelib/blob/master/src/com/adobe/utils/v3/AGALMiniAssembler.as
            var assembler:AGALMiniAssembler = new AGALMiniAssembler();
            
            // VERTEX SHADER
            var code:String = "";
            //the vertex shader code will run for every vertex of every instance , 
            //the vertex buffers uploaded for instance data (va1,va2) will be used when vertex shader for that particular instance is being executed 
            //the vertex shader code below indexes the program constants matrix using iid.x. iid is a new register introduced in vertex shader for instanced drawing
            //it is a read only register , iid.x gives the current instance id whose shader is being executed
            code += "add vt0, va0, va2\n";
            code += "mul vt1, vt0, vc[iid.x]\n"
            code += "mov op, vt1\n";
            code += "mov v0, va1\n";
            
            vertexShader = assembler.assemble(Context3DProgramType.VERTEX, code, 3);
            
            //FRAGMENT SHADER
            code = "mov oc, v0\n"; 
            
            // Compile the agal code into bytecode using agalminiassembler
            fragmentShader = assembler.assemble(Context3DProgramType.FRAGMENT, code, 3);
            
            //upload program to gpu
            program.upload(vertexShader, fragmentShader);
            
            //geometry data for the instances
            var vertexData:Vector.<Number>=Vector.<Number>([
                -0.3, -0.3, 0,     // - 1st vertex x,y,z
                0, 0.3, 1,         // - 2nd vertex x,y,z 
                0.3, -0.3, 0    // - 3rd vertex x,y,z
            ]);
            
            //per instance color data
            var instanceColorData:Vector.<Number>=Vector.<Number>([
                1.0, 0.0, 0.0,     // - 1st instance r,g,b
                0.0, 1.0, 0.0,  // - 2nd instance r,g,b
                1.0, 1.0, 1.0,    // - 3rd instance r,g,b
                0.7, 0.0, 1.0   // - 4th instance r,g,b
            ]);
            //per instance translation data
            var instanceTranslationData:Vector.<Number>=Vector.<Number>([
                -0.3, -0.3, 0.0,     // - 1st instance x,y,z
                0.3, 0.3, 0.0,         // - 2nd instance x,y,z
                -0.3, 0.3, 0.0,        // - 3rd instance x,y,z
                0.3, -0.3, 0.0      // - 4th instance x,y,z
            ]);
            
            vertexBuffer.uploadFromVector(vertexData, 0, 3);
            instanceBufferColor.uploadFromVector(instanceColorData, 0, 4);
            indexBuffer.uploadFromVector(Vector.<uint>([0, 1, 2]), 0, 3);
            instanceBufferTranslation.uploadFromVector(instanceTranslationData, 0, 4);
            
            //pass data to program
            renderContext.setVertexBufferAt(0, vertexBuffer, 0, Context3DVertexBufferFormat.FLOAT_3);
            renderContext.setVertexBufferAt(1, instanceBufferColor, 0, Context3DVertexBufferFormat.FLOAT_3);
            renderContext.setVertexBufferAt(2, instanceBufferTranslation, 0, Context3DVertexBufferFormat.FLOAT_3);
            
            //set active program
            renderContext.setProgram(program);
            renderContext.enableErrorChecking = true;
            addEventListener(Event.ENTER_FRAME, render);
            
        }
        
        private function render( event:Event ):void
        {
            renderContext.clear(0.3, 0.2, 1, 1); // Clear the backbuffer by filling it with the given color
            var instanceScalingData:Vector.<Number>=Vector.<Number>([
                1.0, 1.0, 1.0, 1.0,     // - 1st instance x,y,z,w
                1.4, 1.4, 1.4, 1.0,        // - 2nd instance x,y,z,w
                0.6, 0.6, 0.6, 1.0,        // - 3rd instance x,y,z,w
                0.6, 0.6, 0.6, 1.0
            ]);
            var m:Matrix3D = new Matrix3D();
            m.copyRawDataFrom(instanceScalingData);
            renderContext.setProgramConstantsFromMatrix("vertex",0,m,false);
            
            //Draw three instances of the same geometry but with varying instance data specified using <code>vertexBufferForInstances</code>.
            renderContext.drawTrianglesInstanced(indexBuffer,4);
            renderContext.present(); // render the backbuffer on screen.
        }    
    }
}

present

()methode 
public function present():void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Geeft de backbuffer voor rendering weer.

Als u de methode present() aanroept, worden alle renderingbewerking sinds de laatste keer dat present() is aangeroepen zichtbaar en wordt een nieuwe renderingcyclus gestart. Nadat u present hebt aangeroepen, dient u clear() aan te roepen voordat u drawTriangles() weer aanroept. Anders wist deze functie de renderbuffer om en om naar geel en groen of wordt een uitzondering gegenereerd als enableErrorChecking is ingesteld op true.

Door present() aan te roepen, wordt het renderdoel bovendien opnieuw ingesteld, net als wanneer u setRenderToBackBuffer() aanroept.


Gegenereerde uitzondering
Error — Eerst wissen voor tekenen: als clear() niet is aangeroepen sinds de laatste aanroep van present(). (Twee opeenvolgende present()-aanroepen zijn niet toegestaan, u dient clear() aan te roepen tussen twee van deze oproepen.)
 
Error — 3768: De Stage3D-API kan niet worden gebruikt tijdens uitvoering op de achtergrond.

setBlendFactors

()methode 
public function setBlendFactors(sourceFactor:String, destinationFactor:String):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Geeft de factoren op die worden gebruikt om overvloeiing uit te voeren op de uitvoerkleur van een tekenhandeling met de bestaande kleur.

De uitvoer(bron)kleur van het pixelshaderprogramma wordt gecombineerd met de bestaande (doel)kleur op de pixel volgens de volgende formule:

resultaatkleur = (bronkleur * sourceFactor) + (doelkleur * destinationFactor)

De doelkleur is de huidige kleur in de renderingbuffer voor die pixel. Het is dus het resultaat van de meest recente clear()-aanroep en eventuele tussenliggende drawTriangles()-aanroepen.

Gebruik setBlendFactors()om de factoren in te stellen die zijn gebruikt om de bron- en doelkleuren te vermenigvuldigen voordat deze werden samengevoegd. De standaardovervloeifactoren zijn sourceFactor = Context3DBlendFactor.ONE en destinationFactor = Context3DBlendFactor.ZERO. Dit zorgt ervoor dat de bronkleur de doelkleur overschrijft (met andere woorden er ontstaat geen overvloeiing van de twee kleuren). Voor normale alfaovervloeiing gebruikt u sourceFactor = Context3DBlendFactor.SOURCE_ALPHA en destinationFactor = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA.

Gebruik de constanten die zijn gedefinieerd in de klasse Context3DBlendFactor om de parameters van deze functie in te stellen.

Parameters

sourceFactor:String — De factor waarmee de bronkleur moet worden vermenigvuldigd. Wordt standaard ingesteld op Context3DBlendFactor.ONE.
 
destinationFactor:String — De factor waarmee de doelkleur moet worden vermenigvuldigd. Wordt standaard ingesteld op Context3DBlendFactor.ZERO.


Gegenereerde uitzondering
Error — Ongeldige opsomming: als sourceFactor of destinationFactor niet een van de herkende waarden zijn die in de klasse Context3DBlendFactor zijn gedefinieerd.

Verwante API-elementen


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

De volgende klasse illustreert de verschillende overvloeifactoren. In het voorbeeld worden vier rechthoeken met verschillende kleuren naar de renderbuffer getekend. Deze set met rechthoeken is de ''bestemming'' van het overvloeien. Vervolgens worden de overvloeimodi voor de bron en de bestemming ingesteld en wordt een grotere driehoek getekend, de ''overvloeibron''. Met de toetsen "1" en "2" doorloopt u de bronovervloeimodi. Met de toetsen "3" en "4" doorloopt u de bestemmingsovervloeimodi.
package
{
    import com.adobe.utils.AGALMiniAssembler;
    
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DBlendFactor;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DRenderMode;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.ErrorEvent;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    
    public class Context3D_setBlendMode extends Sprite
    {
        public const viewWidth:Number = 320;
        public const viewHeight:Number = 200;
        
        private var stage3D:Stage3D;
        private var renderContext:Context3D;
        private var indexList:IndexBuffer3D;
        private var vertexes:VertexBuffer3D;
        
        private const VERTEX_SHADER:String =
            "mov op, va0    \n" +    //copy position to output 
            "mov v0, va1"; //copy color to varying variable v0
        
        private const FRAGMENT_SHADER:String = 
            "mov oc, v0"; //Set the output color to the value interpolated from the three triangle vertices 

        private var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var programPair:Program3D;
        
        private var sourceFactor:int = 6;
        private var destinationFactor:int = 4;
        private var blendFactors:Array = [Context3DBlendFactor.DESTINATION_ALPHA,
                                          Context3DBlendFactor.DESTINATION_COLOR,
                                          Context3DBlendFactor.ONE,
                                          Context3DBlendFactor.ONE_MINUS_DESTINATION_ALPHA,
                                          Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA,
                                          Context3DBlendFactor.ONE_MINUS_SOURCE_COLOR,
                                          Context3DBlendFactor.SOURCE_ALPHA,
                                          Context3DBlendFactor.SOURCE_COLOR,
                                          Context3DBlendFactor.ZERO];
            
        public function Context3D_setBlendMode()
        {
            this.stage.addEventListener( KeyboardEvent.KEY_DOWN, keyHandler );
            
            stage3D = this.stage.stage3Ds[0];
            stage3D.x = 10;
            stage3D.y = 10;

            //Add event listener before requesting the context
            stage3D.addEventListener( Event.CONTEXT3D_CREATE, contextCreated );
            stage3D.addEventListener( ErrorEvent.ERROR, contextError );
            stage3D.requestContext3D( Context3DRenderMode.AUTO );
            
            //Compile shaders
            vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
            fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );            
        }
        
        //Note, context3DCreate event can happen at any time, such as when the hardware resources are taken by another process
        private function contextCreated( event:Event ):void
        {
            renderContext = Stage3D( event.target ).context3D;
            trace( "3D driver: " + renderContext.driverInfo );

            renderContext.enableErrorChecking = true; //Can slow rendering - only turn on when developing/testing
            renderContext.configureBackBuffer( viewWidth, viewHeight, 2, false );
            
            //Create vertex index list for the triangles
            var triangles:Vector.<uint> = Vector.<uint>( [  0, 3 , 2, 
                                                            0, 1, 3,
                                                            6, 4, 5,
                                                            5, 7, 6,
                                                            10, 8, 9,
                                                            9, 11, 10,
                                                            12, 15, 14,
                                                            12, 13, 15,
                                                            16, 17, 19,
                                                            16, 19, 18
                                                         ] );
            indexList = renderContext.createIndexBuffer( triangles.length );
            indexList.uploadFromVector( triangles, 0, triangles.length );
            
            //Create vertexes
            const dataPerVertex:int = 7;
            var vertexData:Vector.<Number> = Vector.<Number>(
                [
                  // x, y, z    r, g, b, a format
                    -1, 1, 0,   1, 1, 1, .5,
                     0, 1, 0,   1, 1, 1, .5,
                    -1, 0, 0,   1, 1, 1, .5,
                     0, 0, 0,   1, 1, 1, .5,
                     
                     0, 1, 0,  .8,.8,.8, .6,
                     1, 1, 0,  .8,.8,.8, .6,
                     0, 0, 0,  .8,.8,.8, .6,
                     1, 0, 0,  .8,.8,.8, .6,
                     
                    -1, 0, 0,   1, 0, 0, .5,
                     0, 0, 0,   0, 1, 0, .5,
                    -1,-1, 0,   0, 0, 1, .5,
                     0,-1, 0,   1, 0, 1, .5,
                     
                     0, 0, 0,   0, 0, 0, .5,
                     1, 0, 0,   0, 0, 0, .5,
                     0,-1, 0,   0, 0, 0, .5,
                     1,-1, 0,   0, 0, 0, .5,
                     
                   -.8,.8, 0,  .6,.4,.2,.4,
                    .8,.8, 0,  .6,.4,.2,.4,
                  -.8,-.8, 0,  .6,.4,.2,.4,
                   .8,-.8, 0,  .6,.4,.2,.4
                ]
            );
            vertexes = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
            vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
            //Identify vertex data inputs for vertex program
            renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //va0 is position
            renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_4 ); //va1 is color
            
            //Upload programs to render context
            programPair = renderContext.createProgram();
            programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
            renderContext.setProgram( programPair );
            
            render();
        }
        
        private function render():void
        {
            //Clear required before first drawTriangles() call
            renderContext.clear( 1, 1, 1, 1 );
            //Draw the back triangles
            renderContext.setBlendFactors( Context3DBlendFactor.ONE, Context3DBlendFactor.ZERO ); //No blending
            renderContext.drawTriangles( indexList, 0, 8 );

            //Set blend
            renderContext.setBlendFactors( blendFactors[sourceFactor], blendFactors[destinationFactor] );
            
            //Draw the front triangles
            renderContext.drawTriangles( indexList, 24, 2 );
            
            //Show the frame
            renderContext.present();
        }
        
        private function contextError( error:ErrorEvent ):void
        {
            trace( error.errorID + ": " + error.text );
        }
        
        private function keyHandler( event:KeyboardEvent ):void
        {
            switch ( event.keyCode )
            {
                case Keyboard.NUMBER_1:
                    if( --sourceFactor < 0 ) sourceFactor = blendFactors.length - 1; 
                    break;
                case Keyboard.NUMBER_2:
                    if( ++sourceFactor > blendFactors.length - 1) sourceFactor = 0;
                    break;
                case Keyboard.NUMBER_3:
                    if( --destinationFactor < 0 ) destinationFactor = blendFactors.length - 1; 
                    break;
                case Keyboard.NUMBER_4:
                    if( ++destinationFactor > blendFactors.length - 1) destinationFactor = 0;
                    break;
            }
            trace( "Source blend factor: " + blendFactors[sourceFactor] + ", destination blend factor: " + blendFactors[destinationFactor] );
            render();
        }
    }
}

setColorMask

()methode 
public function setColorMask(red:Boolean, green:Boolean, blue:Boolean, alpha:Boolean):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt het masker in dat wordt gebruikt bij het schrijven van kleuren naar de renderingbuffer.

Alleen kleurcomponenten waarvoor de overeenkomstige kleurmaskerparameter true is, worden bijgewerkt wanneer een kleur naar de renderingbuffer wordt geschreven. Als u bijvoorbeeld setColorMask( true, false, false, false ) aanroept, wordt alleen de rode component van een kleur naar de buffer geschreven tot u het kleurmasker opnieuw wijzigt. Het kleurmasker heeft geen invloed op het gedrag van de clear()-methode.

Parameters

red:Boolean — stel false in om wijzigingen in het rode kanaal te blokkeren.
 
green:Boolean — stel false in om wijzigingen in het groene kanaal te blokkeren.
 
blue:Boolean — stel false in om wijzigingen in het blauwe kanaal te blokkeren.
 
alpha:Boolean — stel false in om wijzigingen in het alfakanaal te blokkeren.


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

Het volgende voorbeeld illustreert het effect van het instellen van het kleurmasker. In het voorbeeld worden twee driehoeken van dezelfde kleur getekend. De bovenste driehoek wordt getekend voordat het masker wordt ingesteld en wordt dus wit weergegeven. De onderste driehoek wordt getekend als alle kanalen, met uitzondering van het rode kanaal, zijn gemaskeerd. Aangezien alleen het rode kanaal kan worden bijgewerkt, wordt de witte driehoek rood weergegeven.
package
{
    import com.adobe.utils.AGALMiniAssembler;
    
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DRenderMode;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.Event;
    
    public class Context3D_setColorMask extends Sprite
    {
        public const viewWidth:Number = 320;
        public const viewHeight:Number = 200;
        
        private var stage3D:Stage3D;
        private var renderContext:Context3D;
        private var indexList:IndexBuffer3D;
        private var vertexes:VertexBuffer3D;
        
        private const VERTEX_SHADER:String =
            "mov op, va0    \n" +    //copy position to output 
            "mov v0, va1"; //copy color to varying variable v0
        
        private const FRAGMENT_SHADER:String = 
            "mov oc, v0"; //Set the output color to the value interpolated from the three triangle vertices 

        private var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var programPair:Program3D;
        
        public function Context3D_setColorMask()
        {
            stage3D = this.stage.stage3Ds[0];
            stage3D.x = 10;
            stage3D.y = 10;

            //Add event listener before requesting the context
            stage3D.addEventListener( Event.CONTEXT3D_CREATE, contextCreated );            
            stage3D.requestContext3D( Context3DRenderMode.AUTO );
            
            //Compile shaders
            vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
            fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );            
        }
        
        //Note, context3DCreate event can happen at any time, such as when the hardware resources are taken by another process
        private function contextCreated( event:Event ):void
        {
            renderContext = Stage3D( event.target ).context3D;
            trace( "3D driver: " + renderContext.driverInfo );

            renderContext.enableErrorChecking = true; //Can slow rendering - only turn on when developing/testing
            renderContext.configureBackBuffer( viewWidth, viewHeight, 2, false );
            
            //Create vertex index list for the triangles
            var triangles:Vector.<uint> = Vector.<uint>( [ 0, 1, 2, 0, 3, 4 ] );
            indexList = renderContext.createIndexBuffer( triangles.length );
            indexList.uploadFromVector( triangles, 0, triangles.length );
            
            //Create vertexes
            const dataPerVertex:int = 6;
            var vertexData:Vector.<Number> = Vector.<Number>(
                [
                  // x, y, z    r, g, b format
                     0, 0, 0,   1, 1, 1,
                    -1, 1, 0,   1, 1, 1,
                     1, 1, 0,   1, 1, 1,
                     1,-1, 0,   1, 1, 1,
                    -1,-1, 0,   1, 1, 1
                ]
            );
            vertexes = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
            vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
            //Identify vertex data inputs for vertex program
            renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //va0 is position
            renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //va1 is color
            
            //Upload programs to render context
            programPair = renderContext.createProgram();
            programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
            renderContext.setProgram( programPair );
            
            renderContext.clear( .3,.3,.3,1 );
            renderContext.drawTriangles( indexList, 0, 1 ); //Top triangle draws all colors, so is white
            renderContext.setColorMask( true, false, false, false ); //Mask all but red channel            
            renderContext.drawTriangles( indexList, 3, 1 ); //Bottom triangle only updates red
            
            //Show the frame
            renderContext.present();
        }
    }
}

setCulling

()methode 
public function setCulling(triangleFaceToCull:String):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Hiermee stelt u de schiftingmodus voor driehoeken in.

Driehoeken kunnen vroeg in de renderingpijplijn uit de scène worden verwijderd op basis van hun oriëntatie ten opzichte van het weergavevlak. Geef de hoekpuntenvolgorde op een consistente manier (rechtsom of linksom) op zoals deze wordt gezien vanaf de buitenkant van het model om de culling correct uit te voeren.

Parameters

triangleFaceToCull:String — De schiftingmodus. Gebruik een van de constanten die zijn gedefinieerd in de Context3DTriangleFace-klasse.


Gegenereerde uitzondering
Error — Ongeldige opsommingsfout: wanneertriangleFaceToCull niet een van de waarden is die zijn gedefinieerd in de Context3DTriangleFace-klasse.

Verwante API-elementen

setDepthTest

()methode 
public function setDepthTest(depthMask:Boolean, passCompareMode:String):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt het vergelijkingstype in dat wordt gebruikt voor dieptetests.

De diepte van de bronpixeluitvoer van het pixelshaderprogramma wordt vergeleken met de huidige waarde in de dieptebuffer. Als de vergelijking wordt geëvalueerd als false, wordt de bronpixel genegeerd. Als deze true is, wordt de bronpixel verwerkt door de volgende stap in de renderingpijplijn, de stenciltest. Bovendien wordt de dieptebuffer bijgewerkt met de diepte van de bronpixel, zolang de depthMask-parameter is ingesteld op true.

Stelt de test in die gebruikt werd om dieptewaarden voor bron- en doelpixels te vergelijken. De bronpixel wordt samengesteld met de doelpixel wanneer de vergelijking true is. De vergelijkingsoperator wordt toegepast als een infixoperator tussen de bron- en doelpixelwaarden, in die volgorde.

Parameters

depthMask:Boolean — De doeldieptewaarde zal worden bijgewerkt vanaf de bronpixel indien true.
 
passCompareMode:String — De bewerking voor de dieptevergelijkingstest. Een van de waarden van Context3DCompareMode.

Verwante API-elementen

    setFillMode

()methode 
public function setFillMode(fillMode:String):void

Taalversie: ActionScript 3.0
Runtimeversies: AIR 16

De standaardvulmodus wordt gebruikt voor de weergave. De interface is alleen beschikbaar in de desktopversie van AIR.

Parameters

fillMode:String — Als de waarde WIREFRAME is, wordt het object in een net van lijnen weergegeven. Als de waarde SOLID is, wordt het object als effen gearceerde veelhoeken weergegeven.

Verwante API-elementen

setProgram

()methode 
public function setProgram(program:Program3D):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt hoekpunt- en fragmentshaderprogramma's in die vervolgens kunnen worden gebruikt voor rendering.

Parameters

program:Program3D — Het Program3D-object dat de te gebruiken hoekpunt- en fragmentprogramma's vertegenwoordigt.

Verwante API-elementen


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

In dit voorbeeld wordt geïllustreerd hoe u paren hoekpunt- en pixelprogramma's kunt maken, uploaden en activeren voor een renderingcontext. Het object renderContext is een instantie van de Context3D-klasse. De programma's in dit voorbeeld zijn geschreven in AGAL (Adobe Graphics Assembly Language).
//A simple vertex program in AGAL
const VERTEX_SHADER:String =
    "m44 op, va0, vc0 \n" +    
    "mov v0, va1"; 

//A simple fragment (or pixel) program in AGAL        
const FRAGMENT_SHADER:String = "mov oc, v0";  

var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
var programPair:Program3D;

//Compile shaders
vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );            

//Upload programs to render context
programPair = renderContext.createProgram();
programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
renderContext.setProgram( programPair );
            

setProgramConstantsFromByteArray

()methode 
public function setProgramConstantsFromByteArray(programType:String, firstRegister:int, numRegisters:int, data:ByteArray, byteArrayOffset:uint):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11.1, AIR 3.1

Stel constanten in voor gebruik door shaderprogramma's met behulp van waarden die in een ByteArray zijn opgeslagen.

Stelt constanten in die toegankelijk zijn via het hoekpunt- of fragmentprogramma.

Parameters

programType:String — Een van Context3DProgramType.
 
firstRegister:int — De index van de eerste constante van het shaderprogramma die moet worden ingesteld.
 
numRegisters:int — Het aantal registers dat moet worden ingesteld. Elk register wordt gelezen als vier zwevende waarden.
 
data:ByteArray — Het ByteArray-bronobject
 
byteArrayOffset:uint — Een verschuiving in de ByteArray voor lezen


Gegenereerde uitzondering
TypeError — kNullPointerError waarbij data is null.
 
RangeError — kConstantRegisterOutOfBounds wanneer wordt geprobeerd om meer dan het maximumaantal shaderconstanten in te stellen.
 
RangeError — kBadInputSize als byteArrayOffset groter is dan of gelijk is aan de lengte van data of als het aantal elementen in data - byteArrayOffset lager is dan numRegisters*16

Verwante API-elementen

setProgramConstantsFromMatrix

()methode 
public function setProgramConstantsFromMatrix(programType:String, firstRegister:int, matrix:Matrix3D, transposedMatrix:Boolean = false):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt constanten in voor gebruik door shaderprogramma's met behulp van waarden die in een Matrix3D zijn opgeslagen.

Gebruik deze functie om een matrix door te geven aan een shaderprogramma. De functie stelt vier constante-registers in die door het hoekpunt- of fragmentprogramma worden gebruikt. De matrix wordt rij voor rij aan registers toegewezen. Het eerste constante-register wordt toegewezen aan de bovenste rij van de matrix. U kunt 128 registers instellen voor een hoekpuntprogramma en 28 voor een fragmentprogramma.

Parameters

programType:String — Het type shaderprogramma, Context3DProgramType.VERTEX of Context3DProgramType.FRAGMENT.
 
firstRegister:int — De index van het eerste constante-register dat moet worden ingesteld. Aangezien een Matrix3D zestien waarden heeft, worden er vier registers ingesteld.
 
matrix:Matrix3D — De matrix die de constante waarden bevat.
 
transposedMatrix:Boolean (default = false) — Indien true, worden de matrixinvoerwaarden in omgekeerde volgorde naar registers gekopieerd. De standaardwaarde is false.


Gegenereerde uitzondering
TypeError — Null-aanwijzerfout: wanneer matrix de waarde null heeft.
 
RangeError — Constante-register buiten de grenzen: bij pogingen meer dan het maximaal toegestane aantal shaderconstante-registers in te stellen.

Meer informatie

Verwante API-elementen

setProgramConstantsFromVector

()methode 
public function setProgramConstantsFromVector(programType:String, firstRegister:int, data:Vector.<Number>, numRegisters:int = -1):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt de constante-invoer in voor de shaderprogramma's.

Stelt een array van constanten in die kunnen worden geopend door een hoekpunt- of fragmentshaderprogramma. Constanten die worden ingesteld in Program3D kunnen in de shaderprogramma's worden geopend als constantenregisters. Elk constantenregister bestaat uit 4 drijvende-kommawaarden (x, y, z, w). Daarom moet elk register vier invoerwaarden in de data-vector bevatten. Het aantal registers dat u voor het hoekpuntprogramma en het fragmentprogramma kunt instellen, is afhankelijk van Context3DProfile.

Parameters

programType:String — Het type shaderprogramma, Context3DProgramType.VERTEX of Context3DProgramType.FRAGMENT.
 
firstRegister:int — De index van het eerste constante-register dat moet worden ingesteld.
 
data:Vector.<Number> — De constante waarden van de drijvende komma. Er moeten minstens vier numRegisters-elementen in data zijn.
 
numRegisters:int (default = -1) — Het aantal constanten dat moet worden ingesteld. Geef de standaardwaarde -1 op om voldoende registers in te stellen om alle beschikbare gegevens te kunnen gebruiken.


Gegenereerde uitzondering
TypeError — Null-aanwijzerfout: wanneer data de waarde null heeft.
 
RangeError — Constante-register buiten de grenzen: bij pogingen meer dan het maximaal toegestane aantal shaderconstante-registers in te stellen.
 
RangeError — Onjuiste invoergrootte: Wanneer het aantal elementen in data minder is dan numRegisters*4

Meer informatie

Verwante API-elementen

setRenderToBackBuffer

()methode 
public function setRenderToBackBuffer():void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt de backbuffer voor rendering in als het renderdoel. Opeenvolgende aanroepen van de methoden drawTriangles() en clear() zullen leiden tot updates van de backbuffer. Gebruik deze methode om normale rendering te hervatten na gebruik van de methode setRenderToTexture().

setRenderToTexture

()methode 
public function setRenderToTexture(texture:flash.display3D.textures:TextureBase, enableDepthAndStencil:Boolean = false, antiAlias:int = 0, surfaceSelector:int = 0, colorOutputIndex:int = 0):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt de opgegeven structuur in als het renderdoel.

Volgende aanroepen van de methoden drawTriangles() en clear() werken de opgegeven structuur bij in plaats van de backbuffer. Mipmaps worden automatisch gemaakt. Gebruik setRenderToBackBuffer() om normale rendering naar de backbuffer te hervatten.

Wissen is niet nodig vóór het tekenen. Als er niet wordt gewist, blijft de inhoud van het renderen behouden. de dieptebuffer en de stencilbuffer worden ook niet gewist. Maar het wissen wordt afgedwongen bij de eerste tekening. Door present() aan te roepen, wordt het doel opnieuw ingesteld naar de backbuffer.

Parameters

texture:flash.display3D.textures:TextureBase — De doelstructuur waarnaar moet worden gerenderd. Stel in op null om rendering naar de backbuffer te hervatten (met setRenderToBackBuffer() en present wordt het doel ook opnieuw ingesteld in de backbuffer).
 
enableDepthAndStencil:Boolean (default = false) — In geval van true zijn diepte- en stenciltests beschikbaar. In geval van false worden alle diepte- en stencilstatussen genegeerd voor alle volgende tekenbewerkingen.
 
antiAlias:int (default = 0) — De antialiasing-kwaliteit. Gebruik 0 om antialiasing uit te schakelen. Hogere waarden verbeteren de kwaliteit van antialiasing, maar vergen ook meer berekeningen. De waarde wordt momenteel genegeerd door het mobiele platform en door de context voor softwarerendering.
 
surfaceSelector:int (default = 0) — Geeft aan welk element van de structuur bijgewerkt moet worden. Structuurobjecten hebben één oppervlak, dus u dient de standaardwaarde 0 op te geven. CubeTexture-objecten hebben zes oppervlakken en dus kunt u een geheel getal tussen 0 en 5 opgeven.
 
colorOutputIndex:int (default = 0) — Het uitvoerkleurregister. Moet 0 zijn voor beperkte of basislijnmodus. Anders geeft dit het uitvoerkleurregister op.


Gegenereerde uitzondering
ArgumentError — Voor een surfaceSelector-parameter zonder overeenkomst. De waarde moet 0 zijn voor 2D-structuren en tussen 0 en 5 liggen voor kubustoewijzingen.
 
ArgumentError texture is niet afgeleid van de klasse TextureBase (de klasse Texture of CubeTexture).
 
ArgumentError colorOutputIndex moet een geheel getal tussen 0 en 3 zijn.
 
ArgumentError — deze aanroep vereist een Context3D die wordt gemaakt met het standaardprofiel of hoger.

Verwante API-elementen

setSamplerStateAt

()methode 
public function setSamplerStateAt(sampler:int, wrap:String, filter:String, mipfilter:String):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11.6, AIR 3.6

Overschrijf handmatig de structuursamplerstatus.

De structuursamplerstatus wordt doorgaans ingesteld op het moment dat setProgram wordt aangeroepen. U kunt echter de status van de structuursampler met deze functie opheffen. Als u niet wilt dat het programma de samplerstatus wijzigt, stelt u het gedeelte ignoresamnpler in AGAL in en gebruikt u deze functie.

Parameters

sampler:int — sampler Het samplerregister dat moet worden gebruikt. Wordt toegewezen aan het samplerregister in AGAL.
 
wrap:String — Wrappingmodus. Gedefinieerd in Context3DWrapMode. De standaardwaarde is herhalen.
 
filter:String — Modus voor filteren van structuur. Gedefinieerd in Context3DTextureFilter. De standaardwaarde is dichtstbijzijnd.
 
mipfilter:String — Mipmapfilter. Gedefinieerd in Context3DMipFilter. De standaardwaarde is geen.


Gegenereerde uitzondering
Error — sampler buiten bereik
 
Error — wrap, filter, mipfilter slechte enum
 
Error — Object verwijderd: als dit Context3D-object is verwijderd door het aanroepen van dispose() of omdat de onderliggende renderinghardware verloren is gegaan.

Verwante API-elementen

setScissorRectangle

()methode 
public function setScissorRectangle(rectangle:Rectangle):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt een sscissor-rechthoek in, dit is een type tekenmasker. De renderer tekent alleen naar het gebied binnen de scissor-rechthoek. Scissoring heeft geen invloed op wisbewerkingen.

Geef null door om scissoring uit te schakelen.

Parameters

rectangle:Rectangle — De rechthoek waarin moet worden getekend. Geef de positie en de afmetingen van de rechthoek op in pixels. Het nulpunt van het coördinatensysteem is de linkerbovenhoek van de viewport, waarbij positieve waarden omlaag en naar rechts toenemen (net als in het gebruikelijke Flash-coördinatensysteem voor weergave).


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

De volgende klasse tekent twee driehoeken naar een weergavepoort van 640 x 480 pixels op de stage. De driehoeken hebben één hoekpunt gemeen, dat zich bevindt op de oorsprong (0,0,0).

De driehoeken worden gedefinieerd met de hoekpuntenbuffer en de indexbuffer. De hoekpuntenbuffer bevat de positie- en kleurgegevens voor elk hoekpunt van de driehoek. De indexbuffer bevat indexen op de hoekpuntenbuffer. Een driehoek wordt door drie indexen gedefinieerd. Een driehoek die uit de eerste drie punten in de hoekpuntenbuffer bestaat, wordt in de indexbuffer bijvoorbeeld als 0,1,2 vermeld.

In dit eenvoudige voorbeeld wordt geen 3D-transformatie uitgevoerd. Alleen objecten in het canonieke weergavegebied (een kubus van 2x2x2 met de inhoud gecentreerd op de oorsprong) worden weergegeven. Bij het renderen van een standaard-3D-scène projecteert u de te renderen objecten echter in dit weergavegebied met een orthogonale of perspectiefprojectie.

package
{
    import com.adobe.utils.AGALMiniAssembler;
    
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DBlendFactor;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DRenderMode;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.events.TimerEvent;
    import flash.geom.Rectangle;
    import flash.ui.Keyboard;
    import flash.utils.Timer;
    
    public class Context3D_ScissorRectangle extends Sprite
    {
        public const viewWidth:Number = 640;
        public const viewHeight:Number = 480;
        
        private var stage3D:Stage3D;
        private var renderContext:Context3D;
        private var indexList:IndexBuffer3D;
        private var vertexes:VertexBuffer3D;
        
        private const VERTEX_SHADER:String =
            "mov op, va0    \n" +    //copy position to output 
            "mov v0, va1"; //copy color to varying variable v0
        
        private const FRAGMENT_SHADER:String = 
            "mov oc, v0"; //Set the output color to the value interpolated from the three triangle vertices 

        private var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var programPair:Program3D;
        
        private var scissorOn:Boolean = false;
        private var toggler:Timer = new Timer( 750 );
        
        public function Context3D_ScissorRectangle()
        {            
            stage3D = this.stage.stage3Ds[0];
            stage3D.x = 10;
            stage3D.y = 10;

            //Add event listener before requesting the context
            stage3D.addEventListener( Event.CONTEXT3D_CREATE, contextCreated );            
            stage3D.requestContext3D( Context3DRenderMode.AUTO );
            
            //Compile shaders
            vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
            fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );
            
            //Set up timer to turn scissoring on and off
            toggler.addEventListener( TimerEvent.TIMER, toggleScissor );
        }
        
        //Note, context3DCreate event can happen at any time, such as when the hardware resources are taken by another process
        private function contextCreated( event:Event ):void
        {
            renderContext = Stage3D( event.target ).context3D;
            trace( "3D driver: " + renderContext.driverInfo );

            renderContext.enableErrorChecking = true; //Can slow rendering - only turn on when developing/testing
            renderContext.configureBackBuffer( viewWidth, viewHeight, 2, false );
            
            //Create vertex index list for the triangles
            var triangles:Vector.<uint> = Vector.<uint>( [  0, 3 , 2, 
                                                            0, 1, 3
                                                         ] );
            indexList = renderContext.createIndexBuffer( triangles.length );
            indexList.uploadFromVector( triangles, 0, triangles.length );
            
            //Create vertexes
            const dataPerVertex:int = 6;
            var vertexData:Vector.<Number> = Vector.<Number>(
                [
                  // x, y, z    r, g, b, a format 
                   -1, 1, 0,  1,0,0,
                    1, 1, 0,  0,0,1,
                   -1,-1, 0,  0,1,0,
                    1,-1, 0,  1,0,1
                ]
            );
            vertexes = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
            vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
            //Identify vertex data inputs for vertex program
            renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //va0 is position
            renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //va1 is color
            
            //Upload programs to render context
            programPair = renderContext.createProgram();
            programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
            renderContext.setProgram( programPair );
            
            render();
            toggler.start();
        }
        
        private function render():void
        {
            //Clear required before first drawTriangles() call
            renderContext.clear();

            //Sciss a region excluding the outer 100 pixels of the viewport
            var scissor:Rectangle = new Rectangle( 100, 100, viewWidth - 200, viewHeight - 200 );
            if( scissorOn )    renderContext.setScissorRectangle( scissor ); //on
            else renderContext.setScissorRectangle( null ); //off

            //Draw the triangles
            renderContext.drawTriangles( indexList, 0, 2 );
            
            //Show the frame
            renderContext.present();
        }
        
        private function toggleScissor( event:Event ):void
        {
            scissorOn = !scissorOn;
            render();
        }
        
    }
}

setStencilActions

()methode 
public function setStencilActions(triangleFace:String = "frontAndBack", compareMode:String = "always", actionOnBothPass:String = "keep", actionOnDepthFail:String = "keep", actionOnDepthPassStencilFail:String = "keep"):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt de stencilmodus- en bewerking in.

Een 8 bits-stencilreferentiewaarde kan met elke tekenaanroep worden gekoppeld. Tijdens rendering kan de referentiewaarde worden getest tegen de waarden die eerder in de framebuffer zijn opgeslagen. Het resultaat van de test kan de tekenactie controleren en bepalen of en hoe de opgeslagen stencilwaarde wordt bijgewerkt. Bovendien controleren de dieptetests of stenciltests worden uitgevoerd. Een mislukte dieptetest kan ook worden gebruikt om de actie te controleren die op de stencilbuffer wordt ondernomen.

In de pixelverwerkingspijplijn worden de dieptetests eerst uitgevoerd. Als de dieptetest mislukt, kan de stencilbuffer worden bijgewerkt, maar er kan geen verdere evaluatie van de stencilbufferwaarde worden uitgevoerd. Als de dieptetest slaagt, wordt de stenciltest uitgevoerd. Er kunnen andere acties worden ondernomen afhankelijk van het resultaat van de stenciltest.

De stencilreferentiewaarde wordt ingesteld met behulp van setStencilReferenceValue().

Parameters

triangleFace:String (default = "frontAndBack") — De driehoekoriëntaties die zijn toegestaan om bij te dragen tot de stencilbewerking. Een van Context3DTriangleFace.
 
compareMode:String (default = "always") — De testoperator die wordt gebruikt om de huidige stencilreferentiewaarde te vergelijken met de doelpixelstencilwaarde. De update van de kleur en diepte van de doelpixel wordt uitgevoerd wanneer de vergelijking true is. De stencilacties worden uitgevoerd zoals aangevraagd in de volgende actieparameters. De vergelijkingsoperator wordt toegepast als een infixoperator tussen de huidige en de doelreferentiewaarden, in die volgorde (in pseudocode: als stencilReference OPERATOR stencilbuffer dan doorgifte). Gebruik een van de constanten die zijn gedefinieerd in de Context3DCompareMode-klasse.
 
actionOnBothPass:String (default = "keep") — Actie die moet worden ondernomen wanneer beide diepte- en stencilvergelijkingen worden goedgekeurd. Gebruik een van de constanten die zijn gedefinieerd in de Context3DStencilAction-klasse.
 
actionOnDepthFail:String (default = "keep") — Actie die moet worden ondernomen wanneer dieptevergelijking mislukt. Gebruik een van de constanten die zijn gedefinieerd in de Context3DStencilAction-klasse.
 
actionOnDepthPassStencilFail:String (default = "keep") — Actie die moet worden ondernomen wanneer dieptevergelijking slaagt en stencilvergelijking mislukt. Gebruik een van de constanten die zijn gedefinieerd in de Context3DStencilAction-klasse.


Gegenereerde uitzondering
Error — Ongeldige opsommingsfout: wanneertriangleFace niet een van de waarden is die zijn gedefinieerd in de Context3DTriangleFace-klasse.
 
Error — Ongeldige opsommingsfout: wanneercompareMode niet een van de waarden is die zijn gedefinieerd in de Context3DCompareMode-klasse.
 
Error — Ongeldige opsommingsfout: wanneer actionOnBothPass, actionOnDepthFail of actionOnDepthPassStencilFail niet een van de waarden is die is gedefinieerd in de Context3DStencilAction-klasse.

Verwante API-elementen


Voorbeeld  ( Hoe dit voorbeeld te gebruiken )

De volgende klasse illustreert hoe u een stencil tekent en dit gebruikt als een masker voor daaropvolgende tekenbewerkingen. In het voorbeeld worden de volgende stappen uitgevoerd:
  • Wis de stencilbuffer naar 0.
  • Stel de stencilhandeling in op toenemen wanneer de stenciltest slaagt.
  • Stel de stencilreferentiewaarde in op 0.
  • Teken het driehoekige masker. Wanneer de driehoek wordt getekend, slaagt de stenciltest omdat de buffer is gewist naar 0 en de referentiewaarde 0 is. Het resultaat is dat de stencilbuffer wordt verhoogd naar 1 in het gebied waar het driehoekmasker wordt getekend.
  • Wijzig de stencilhandeling definitief, zodat volgende tekenbewerkingen de stencilbuffer niet wijzigen.
  • Teken een driehoek van volledige schermgrootte (met verschillende kleuren). Aangezien de stencilreferentiewaarde nog steeds 0 is, mislukt de stenciltest in het gemaskeerde gebied. De rechthoek wordt dus overal getekend, maar niet in het gemaskeerde gebied.
  • Wijzig de stencilreferentiewaarde in 1.
  • Teken nog een rechthoek van volledige schermgrootte (rood). De stenciltest mislukt nu overal, behalve in het gemaskeerde gebied dat immers is verhoogd tot 1. De rechthoek wordt dus alleen in het gemaskeerde gebied getekend.

Plaats de muis boven het voorbeeld om de belangrijkste stappen in de juiste volgorde weer te geven.

package
{
    import com.adobe.utils.AGALMiniAssembler;
    
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DBlendFactor;
    import flash.display3D.Context3DCompareMode;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DRenderMode;
    import flash.display3D.Context3DStencilAction;
    import flash.display3D.Context3DTriangleFace;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.geom.Rectangle;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.ui.Keyboard;
    import flash.utils.Timer;
    
    public class Context3D_Stencil extends Sprite
    {
        public const viewWidth:Number = 350;
        public const viewHeight:Number = 240;
        
        private var stage3D:Stage3D;
        private var renderContext:Context3D;
        private var indexList:IndexBuffer3D;
        private var vertexes:VertexBuffer3D;
        
        private const VERTEX_SHADER:String =
            "mov op, va0    \n" +    //copy position to output 
            "mov v0, va1"; //copy color to varying variable v0
        
        private const FRAGMENT_SHADER:String = 
            "mov oc, v0"; //Set the output color to the value interpolated from the three triangle vertices 

        private var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var programPair:Program3D;
                
        public function Context3D_Stencil()
        {            
            stage3D = this.stage.stage3Ds[0];
            stage3D.x = 10;
            stage3D.y = 10;

            //Add event listener before requesting the context
            stage3D.addEventListener( Event.CONTEXT3D_CREATE, contextCreated );            
            stage3D.requestContext3D( Context3DRenderMode.AUTO );
            
            //Compile shaders
            vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
            fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );
        
            non3DSetup();
        }
        
        //Note, context3DCreate event can happen at any time, such as when the hardware resources are taken by another process
        private function contextCreated( event:Event ):void
        {
            renderContext = Stage3D( event.target ).context3D;
            trace( "3D driver: " + renderContext.driverInfo );

            renderContext.enableErrorChecking = true; //Can slow rendering - only turn on when developing/testing
            renderContext.configureBackBuffer( viewWidth, viewHeight, 2, true );
            
            //Create vertex index list for the triangles
            var triangles:Vector.<uint> = Vector.<uint>( [  0, 3, 2, 
                                                            0, 1, 3,
                                                            4, 7, 6,
                                                            4, 5, 7,
                                                            8, 9, 10
                                                         ] );
            indexList = renderContext.createIndexBuffer( triangles.length );
            indexList.uploadFromVector( triangles, 0, triangles.length );
            
            //Create vertexes
            const dataPerVertex:int = 6;
            var vertexData:Vector.<Number> = Vector.<Number>(
                [
                  //x, y, z  r,g,b format 
                   -1, 1, 0,  1,0,0,
                    1, 1, 0,  0,0,1,
                   -1,-1, 0,  0,1,0,
                    1,-1, 0,  1,0,1,

                   -1, 1, 0,  .5,0,0,
                    1, 1, 0,  .5,0,0,
                   -1,-1, 0,  .5,0,0,
                    1,-1, 0,  .5,0,0,
                    
                    0, .7,.1, 0,0,0,
                  -.7,-.7,.1, 0,0,0,
                   .7,-.7,.1, 0,0,0
                ]);
            vertexes = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
            vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
            //Identify vertex data inputs for vertex program
            renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //va0 is position
            renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //va1 is color
            
            //Upload programs to render context
            programPair = renderContext.createProgram();
            programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
            renderContext.setProgram( programPair );
            render();
        }
        private function render():void
        {
            //Clear, setting stencil to 0
            renderContext.clear( .3, .3, .3, 1, 1, 0 );
            
            //Draw stencil, incrementing the stencil buffer value
            renderContext.setStencilReferenceValue( 0 );
            renderContext.setStencilActions( Context3DTriangleFace.FRONT_AND_BACK, 
                Context3DCompareMode.EQUAL, Context3DStencilAction.INCREMENT_SATURATE );            
            if( state > 0 ) renderContext.drawTriangles( indexList, 12, 1 );

            //Change stencil action when stencil passes so stencil buffer is not changed
            renderContext.setStencilActions( Context3DTriangleFace.FRONT_AND_BACK, 
                Context3DCompareMode.EQUAL, Context3DStencilAction.KEEP );
            
            //Draw quad -- doesn't draw where stencil has already drawn
            if( state > 1 ) renderContext.drawTriangles( indexList, 0, 2 );
            
            //Change the reference to 1 so this quad only draws into stenciled area
            renderContext.setStencilReferenceValue( 1 );
            if( state > 2 ) renderContext.drawTriangles( indexList, 6, 2 );
            
            //Show the frame
            renderContext.present();
        }
        
        //The rest of the code is for the example UI and timer 
        private function doState( event:TimerEvent ):void
        {
            switch (state)
            {
                case 0:
                    description.text = "Draw triangle with stencil action == increment";
                    state = 1;
                    break;
                case 1:
                    description.text = "Draw the first plane where stencil == 0";
                    state = 2;
                    break;
                case 2:
                    description.text = "Draw second plane where stencil == 1";
                    state = 3;
                    break;
                case 3:
                    description.text = "Clear, setting stencil to 0";
                    state = 0;
                    break;

                default:
                    description.text = "";
                    state = 0;        
            }
            render();
        }

        private var state:int = 3;
        private var stateTimer:Timer = new Timer( 1250 );
        private var description:TextField = new TextField();
        
        private function non3DSetup():void
        {
            //Setup timer to animate the stages of drawing the scene
            stateTimer.addEventListener( TimerEvent.TIMER, doState );
            this.stage.addEventListener( MouseEvent.MOUSE_OVER, function(event:Event):void{stateTimer.start()} );
            this.stage.addEventListener( MouseEvent.MOUSE_OUT, function(event:Event):void{stateTimer.stop()} );
            
            description.height = 30;
            description.width = viewWidth;
            this.addChild( description );
            description.y = viewHeight + 15;
            description.defaultTextFormat = new TextFormat( null, 18, 0xffffff );
            description.text = "Mouse over to view.";
            
            //Allows mouse-over events
            var coverSprite:Sprite = new Sprite();
            coverSprite.graphics.beginFill( 0, .01 )
            coverSprite.graphics.lineTo( stage.stageWidth, 0 );
            coverSprite.graphics.lineTo( stage.stageWidth, stage.stageHeight );
            coverSprite.graphics.lineTo( 0, stage.stageHeight );
            coverSprite.graphics.lineTo( 0, 0 );
            this.addChild( coverSprite );            
        }
    }
}

setStencilReferenceValue

()methode 
public function setStencilReferenceValue(referenceValue:uint, readMask:uint = 255, writeMask:uint = 255):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Stelt de stencilvergelijkingswaarde in die wordt gebruikt voor stenciltests.

Alleen de laagste 8 bits van de referentiewaarde worden gebruikt. De stencilbufferwaarde is ook 8 bits lang. Gebruik het readMask en writeMask om de stencilbuffer te gebruiken als een bitveld.

Parameters

referenceValue:uint — Een 8 bits-referentiewaarde die wordt gebruikt in vergelijkingstests voor referentiewaarden.
 
readMask:uint (default = 255) — een 8-bits masker die wordt toegepast zowel op de huidige stencilbufferwaarde als op de referentiewaarde vóór de vergelijking.
 
writeMask:uint (default = 255) — een 8-bits masker die wordt toegepast op de referentiewaarde voordat de stencilbuffer wordt bijgewerkt.

Verwante API-elementen

setTextureAt

()methode 
public function setTextureAt(sampler:int, texture:flash.display3D.textures:TextureBase):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Geeft de structuur aan die moet worden gebruikt voor een structuurinvoerregister van een fragmentprogramma.

Een fragmentprogramma kan de informatie in maximaal acht structuurobjecten lezen. Gebruik deze functie om een Texture- of CubeTexture-object toe te wijzen aan een van de samplerregisters die worden gebruikt door het fragmentprogramma.

Opmerking: als u het actieve fragmentprogramma wijzigt (met setProgram) in een shader die minder structuren gebruikt, stelt u de niet-gebruikte registers in op null:

         setTextureAt( 7, null );
         

Parameters

sampler:int — De samplerregisterindex, een waarde tussen 0 en 7.
 
texture:flash.display3D.textures:TextureBase — Het structuurobject dat u beschikbaar wilt maken, hetzij een Texture- of een CubeTexture-instantie.

Meer informatie

Verwante API-elementen

Structuur
CubeTexture

setVertexBufferAt

()methode 
public function setVertexBufferAt(index:int, buffer:VertexBuffer3D, bufferOffset:int = 0, format:String = "float4"):void

Taalversie: ActionScript 3.0
Runtimeversies: Flash Player 11, AIR 3

Geeft op welke hoekpuntgegevenscomponenten overeenkomen met één invoerwaarde voor hoekpuntshaderprogramma's.

Gebruik de setVertexBufferAt-methode om vast te stellen welke componenten van de gegevens die zijn gedefinieerd voor elk hoekpunt in een VertexBuffer3D-buffer tot welke invoerwaarden van het hoekpuntprogramma behoren. De ontwikkelaar van het hoekpuntprogramma bepaalt hoeveel gegevens nodig zijn per hoekpunt. Deze gegevens worden toegewezen van 1 of meer VertexBuffer3D-stream(s) naar de kenmerkenregisters van de hoekpuntshader.

De kleinste eenheid gegevens die door de hoekpuntshader worden gebruikt zijn 32 bits-gegevens. Offsets in de hoekpuntenstream worden opgegeven in meervouden van 32 bits.

Zo kan een programmeur elk hoekpunt bijvoorbeeld definiëren met de volgende gegevens:
position:  x    float32
           y    float32
           z    float32
color:     r    unsigned byte
           g    unsigned byte
           b    unsigned byte
           a    unsigned byte
In de veronderstelling dat het hoekpunt is gedefinieerd in het VertexBuffer3D-object buffer, kan dit met de volgende code worden toegewezen aan een hoekpuntshader:
setVertexBufferAt( 0, buffer, 0, Context3DVertexBufferFormat.FLOAT_3 );   // attribute #0 will contain the position information
setVertexBufferAt( 1, buffer, 3, Context3DVertexBufferFormat.BYTES_4 );    // attribute #1 will contain the color information

Parameters

index:int — De index van het kenmerkenregister in de hoekpuntshader (0 tot en met 7).
 
buffer:VertexBuffer3D — De buffer die de bronhoekpuntgegevens bevat die in de hoekpuntshader moeten worden ingevoerd.
 
bufferOffset:int (default = 0) — Een offset van het begin van de gegevens voor één hoekpunt waarbij moet worden begonnen met lezen van dit kenmerk. In het bovenstaande voorbeeld hebben de positiegegevens een offset van 0 omdat dit het eerste kenmerk is. De kleur heeft een offset van 3, omdat het kleurkenmerk volgt op de drie 32-bits waarden voor positie. De offset wordt opgegeven in eenheden van 32 bits.
 
format:String (default = "float4") — Een waarde van de Context3DVertexBufferFormat-klasse die het gegevenstype van dit kenmerk opgeeft.


Gegenereerde uitzondering
Error — Ongeldige opsomming: wanneer de indeling niet een van de waarden is die zijn gedefinieerd in de Context3DVertexBufferFormat-klasse.
 
RangeError — Kenmerkenregister buiten bereik: wanneer de parameter index buiten het bereik van 0 tot en met 7 valt. (Een shader kan maximaal acht registers voor hoekpuntkenmerken gebruiken.)

Meer informatie

Verwante API-elementen

Context3DExample.as

De volgende klasse tekent een draaiende kubus met gebruik van een perspectiefprojectie.
package
{
    import com.adobe.utils.AGALMiniAssembler;
    import com.adobe.utils.PerspectiveMatrix3D;
    
    import flash.display.Sprite;
    import flash.display.Stage3D;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display3D.Context3D;
    import flash.display3D.Context3DProgramType;
    import flash.display3D.Context3DRenderMode;
    import flash.display3D.Context3DTriangleFace;
    import flash.display3D.Context3DVertexBufferFormat;
    import flash.display3D.IndexBuffer3D;
    import flash.display3D.Program3D;
    import flash.display3D.VertexBuffer3D;
    import flash.events.ErrorEvent;
    import flash.events.Event;
    import flash.geom.Matrix3D;
    import flash.geom.Vector3D;
    
    public class Context3DExample extends Sprite
    {
        public const viewWidth:Number = 320;
        public const viewHeight:Number = 200;
        public const zNear:Number = 1;
        public const zFar:Number = 500;
        
        public const fov:Number = 45;
        
        private var stage3D:Stage3D;
        private var renderContext:Context3D;
        private var indexList:IndexBuffer3D;
        private var vertexes:VertexBuffer3D;
        
        private var projection:PerspectiveMatrix3D = new PerspectiveMatrix3D();
        private var model:Matrix3D = new Matrix3D();
        private var view:Matrix3D = new Matrix3D();
        private var finalTransform:Matrix3D = new Matrix3D();
        
        //For rotating the cube
        private const pivot:Vector3D = new Vector3D();
        
        private const VERTEX_SHADER:String =
            "m44 op, va0, vc0    \n" +    // 4x4 matrix transform 
            "mov v0, va1"; //copy color to varying variable v0
        
        private const FRAGMENT_SHADER:String = 
            "mov oc, v0"; //Set the output color to the value interpolated from the three triangle vertices 

        private var vertexAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var fragmentAssembly:AGALMiniAssembler = new AGALMiniAssembler();
        private var programPair:Program3D;
        
        public function Context3DExample()
        {
            this.stage.scaleMode = StageScaleMode.NO_SCALE;
            this.stage.align = StageAlign.TOP_LEFT;
            this.stage.nativeWindow.activate(); //AIR only
                         
            stage3D = this.stage.stage3Ds[0];
            stage3D.x = 10;
            stage3D.y = 10;

            //Add event listener before requesting the context
            stage3D.addEventListener( Event.CONTEXT3D_CREATE, contextCreated );
            stage3D.addEventListener( ErrorEvent.ERROR, contextCreationError );
            stage3D.requestContext3D( Context3DRenderMode.AUTO );
            
            //Compile shaders
            vertexAssembly.assemble( Context3DProgramType.VERTEX, VERTEX_SHADER, false );
            fragmentAssembly.assemble( Context3DProgramType.FRAGMENT, FRAGMENT_SHADER, false );            
        }
        
        //Note, context3DCreate event can happen at any time, such as when the hardware resources are taken by another process
        private function contextCreated( event:Event ):void
        {
                renderContext = Stage3D( event.target ).context3D;
                trace( "3D driver: " + renderContext.driverInfo );
                setupScene();
        }
        
        private function setupScene():void
        {
            renderContext.enableErrorChecking = true; //Can slow rendering - only turn on when developing/testing
            renderContext.configureBackBuffer( viewWidth, viewHeight, 2, false );
            renderContext.setCulling( Context3DTriangleFace.BACK );
            
            //Create vertex index list for the triangles forming a cube
            var triangles:Vector.<uint> = Vector.<uint>( [ 
                2,1,0, //front face
                3,2,0,
                4,7,5, //bottom face
                7,6,5,
                8,11,9, //back face
                9,11,10,
                12,15,13, //top face
                13,15,14,
                16,19,17, //left face
                17,19,18,
                20,23,21, //right face
                21,23,22
            ] );
            indexList = renderContext.createIndexBuffer( triangles.length );
            indexList.uploadFromVector( triangles, 0, triangles.length );
            
            //Create vertexes - cube faces do not share vertexes
            const dataPerVertex:int = 6;
            var vertexData:Vector.<Number> = Vector.<Number>(
                [
                    // x,y,z r,g,b format
                    0,0,0, 1,0,0, //front face
                    0,1,0, 1,0,0,
                    1,1,0, 1,0,0,
                    1,0,0, 1,0,0,
                    
                    0,0,0, 0,1,0, //bottom face
                    1,0,0, 0,1,0,
                    1,0,1, 0,1,0,
                    0,0,1, 0,1,0,
                    
                    0,0,1, 1,0,0, //back face
                    1,0,1, 1,0,0,
                    1,1,1, 1,0,0,
                    0,1,1, 1,0,0,
                    
                    0,1,1, 0,1,0, //top face
                    1,1,1, 0,1,0,
                    1,1,0, 0,1,0,
                    0,1,0, 0,1,0,
                    
                    0,1,1, 0,0,1, //left face
                    0,1,0, 0,0,1,
                    0,0,0, 0,0,1,
                    0,0,1, 0,0,1,
                    
                    1,1,0, 0,0,1, //right face
                    1,1,1, 0,0,1,
                    1,0,1, 0,0,1,
                    1,0,0, 0,0,1
                ]
            );
            vertexes = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex );
            vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex );
            
            //Identify vertex data inputs for vertex program
            renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //va0 is position
            renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //va1 is color
            
            //Upload programs to render context
            programPair = renderContext.createProgram();
            programPair.upload( vertexAssembly.agalcode, fragmentAssembly.agalcode );
            renderContext.setProgram( programPair );
            
            //Set up 3D transforms
            projection.perspectiveFieldOfViewRH( fov, viewWidth/viewHeight, zNear, zFar );            
            view.appendTranslation( 0, 0, -2 );    //Move view back
            model.appendTranslation( -.5, -.5, -.5 ); //center cube on origin
            this.stage.addEventListener( Event.ENTER_FRAME, render );
        }
        
        private function render( event:Event ):void
        {
            //Rotate model on each frame
            model.appendRotation( .5, Vector3D.Z_AXIS, pivot );
            model.appendRotation( .5, Vector3D.Y_AXIS, pivot );
            model.appendRotation( .5, Vector3D.X_AXIS, pivot );
            
            //Combine transforms
            finalTransform.identity();
            finalTransform.append( model );
            finalTransform.append( view );
            finalTransform.append( projection );
            
            //Pass the final transform to the vertex shader as program constant, vc0
            renderContext.setProgramConstantsFromMatrix( Context3DProgramType.VERTEX, 0, finalTransform, true );
            
            //Clear is required before drawTriangles on each frame
            renderContext.clear( .3,.3,.3 );
            
            //Draw the 12 triangles that make up the cube
            renderContext.drawTriangles( indexList, 0, 12 );
            
            //Show the frame
            renderContext.present();
        }
        
        private function contextCreationError( error:ErrorEvent ):void
        {
            trace( error.errorID + ": " + error.text );
        }
    }
}




[ X ]Waarom in het Engels?
Sommige inhoud van de Naslaggids voor ActionScript 3.0 staat in het Engels

Niet alle onderdelen van de Naslaggids voor ActionScript 3.0 zijn in alle talen vertaald. Wanneer een taalelement niet is vertaald, wordt het in het Engels weergegeven. Zo is de klasse ga.controls.HelpBox niet in elke taal vertaald. In de Nederlandse versie van de naslaggids wordt de klasse ga.controls.HelpBox bijvoorbeeld in het Engels weergegeven.