Adobe® Flash® Platform için ActionScript® 3.0 Başvurusu
Ana Sayfa  |  Paket ve Sınıf Listesini Gizle |  Paketler  |  Sınıflar  |  Yenilikler  |  Dizin  |  Ekler  |  Niçin İngilizce?
Filtreler: AIR 30.0 ve öncesi, Flash Player 30.0 ve öncesi, Flash Lite 4
Flex 4.6 ve öncesi, Flash Pro CS6 ve öncesi
Filtreleri Gizle
flash.display3D 

Context3D  - AS3

Paketlerx

Üst Düzey
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

Dil Öğeleri

Global Sabitler
Global İşlevler
Operatörler
İfadeler, Anahtar Kelimeler ve Direktifler
Özel Türler

Ekler

Yenilikler
Derleyici Hataları
Derleyici Uyarıları
Çalışma Zamanı Hataları
ActionScript 3'e Geçiş Yapma
Desteklenen Karakter Kümeleri
Yalnızca MXML Etiketleri
Motion XML Öğeleri
Timed Text Etiketleri
Onaylanmamış öğelerin listesi
Erişilebilirlik Uygulaması Sabitleri
ActionScript Örnekleri Nasıl Kullanılır?
Yasal uyarılar
Paketflash.display3D
Sınıfpublic final class Context3D
Miras AlmaContext3D Inheritance EventDispatcher Inheritance Object

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Context3D sınıfı, geometrik olarak tanımlanan grafikler oluşturmak için bir bağlam sağlar.

Oluşturma bağlamı, bir çizim yüzeyi ve bunun ilişkili kaynakları ile durumunu içerir. Mümkün olduğunda oluşturma bağlamı, donanım grafik işleme birimini (GPU) kullanır. Aksi halde, oluşturma bağlamı yazılımı kullanır. (Context3D üzerinden oluşturma bir platformda desteklenmiyorsa, Stage nesnesinin stage3Ds özelliği boş bir liste içerir.)

(Context3D oluşturma bağlamı, OpenGL ES 2'ye son derece benzeyen programlanabilir bir hattır, ancak bir dizi donanım ve GPU arabirimiyle uyumlu olması için soyutlanmıştır. 3B grafikler için tasarlanmasına karşın, oluşturma hattı, oluşturmanın üç boyutlu olmasını zorunlu kılmaz. Bu nedenle, uygun köşe ve piksel parça programlarını sağlayarak bir 2B oluşturucu yaratabilirsiniz. Hem 3B hem de 2B vakalarında, desteklenen tek geometrik temel üçgendir.

Bir Stage3D nesnesinin requestContext3D() yöntemini çağırarak, Context3D sınıfının bir örneğini alın. Stage.stage3Ds listesindeki her Stage3D öğesi için bir adet olacak şekilde, sahne alanı başına sınırlı sayıda Context3D nesnesi bulunabilir. Bağlam oluşturulduğunda, Stage3D nesnesi bir context3DCreate olayı gönderir. Oluşturma bağlamı, GPU'yu kullanan başka bir uygulamanın odağı elde etmesi durumu gibi herhangi bir zamanda yok edilebilir ve yeniden oluşturulabilir. Kodunuz çoklu context3DCreate olayı alınmasını beklemelidir. İlişkili Stage3D örneğinin x ve y özelliklerini kullanarak oluşturma alanını sahne alanına yerleştirin.

Bir sahneyi oluşturmak ve görüntülemek için (bir Context3D nesnesi aldıktan sonra), aşağıdaki adımlar tipik niteliktedir:

  1. configureBackBuffer() öğesini çağırarak ana ekran önbellek niteliklerini yapılandırın.
  2. Aşağıdakileri de içeren oluşturma kaynaklarınızı oluşturun ve başlatın:
    • Sahne geometrisini tanımlayan köşe ve dizin arabellekleri
    • Sahneyi oluşturmak için köşe ve piksel programları (gölgelendiriciler)
    • Dokular
  3. Bir kare oluşturun:
    • Oluşturma durumunu, sahnedeki bir nesne veya nesne koleksiyonu için uygun şekilde ayarlayın.
    • Bir üçgen kümesi oluşturmak için drawTriangles() yöntemini çağırın.
    • Sonraki nesne grubu için oluşturma durumunu değiştirin.
    • Nesneleri tanımlayan üçgenleri çizmek için drawTriangles() öğesini çağırın.
    • Sahne tamamen oluşturulana kadar tekrarlayın.
    • Sahne alanında oluşturulan sahneyi görüntülemek için present() yöntemini çağırın.

Oluşturma üzerinde aşağıdaki sınırlar geçerlidir:

Kaynak sınırları:

Kaynakİzin verilen sayıToplam bellek
Vertex buffers 4096256 MB
Index buffers 4096128 MB
Programs 409616 MB
Textures 4096128 MB
Cube textures 4096256 MB

AGAL sınırları: Program başına 200 işlem kodu.

Çağrı sınırlarını çizin: Her present() çağrısı için 32.768 drawTriangles() çağrısı.

Dokular için aşağıdaki sınırlar geçerlidir:

AIR 32 bit için doku limitleri:

DokuMaksimum boyutToplam GPU belleği
Normal Doku (genişletilmiş Satır Taban Çizgisinin altında) 2048 x 2048512 MB
Normal Doku (genişletilmiş Satır Taban Çizgisi ve üzeri) 4096 x 4096512 MB
Dikdörtgen Doku (genişletilmiş Satır Taban Çizgisinin altında) 2048 x 2048512 MB
Dikdörtgen Doku (genişletilmiş Satır Taban Çizgisi ve üzeri) 4096 x 4096512 MB
Küp Doku 1024 x 1024256 MB

AIR 64 bit için doku limitleri (masaüstü):

DokuMaksimum boyutToplam GPU belleği
Normal Doku (genişletilmiş Satır Taban Çizgisinin altında) 2048 x 2048512 MB
Normal Doku (Genişletilmiş Satır Taban Çizgisi ile Standart arası) 4096 x 4096512 MB
Normal Doku (genişletilmiş Standart ve üzeri) 4096 x 40962048 MB
Dikdörtgen Doku (genişletilmiş Satır Taban Çizgisinin altında) 2048 x 2048512 MB
Dikdörtgen Doku (Genişletilmiş Satır Taban Çizgisi ile Standart arası) 4096 x 4096512 MB
Dikdörtgen Doku (Genişletilmiş Standart ve üzeri) 4096 x 40962048 MB
Küp Doku 1024 x 1024256 MB

512 MB dokular için mutlak sınırdır. Bu sınır, mipmap'ler için gereken doku belleklerini de kapsar. Ancak, Küp Dokular için bellek sınırı 256 MB'dir.

Context3D yapıcısı ile Context3D nesnesi oluşturamazsınız. Stage3D örneğinin bir özelliği olarak oluşturulur ve kullanılabilir. Context3D sınıfı hem Flash Player hem de AIR'de çalıştırılırken masaüstü ve mobil platformlarda kullanılabilir.

Örnekleri görüntüle

İlgili API Öğeleri



Genel Özellikler
 ÖzellikTanımlayan:
  backBufferHeight : int
[salt okunur] configureBackBuffer() yöntemine yönelik başarılı bir çağrıyla değiştirilebilecek geri arabelleğin yüksekliğini belirtir.
Context3D
  backBufferWidth : int
[salt okunur] configureBackBuffer() yöntemine yönelik başarılı bir çağrıyla değiştirilebilecek geri arabelleğin genişliğini belirtir.
Context3D
 Inheritedconstructor : Object
Belirli bir nesne örneği için sınıf nesnesine veya yapıcı işlevine bir başvuru.
Object
  driverInfo : String
[salt okunur] Söz konusu oluşturma bağlamı tarafından kullanılan grafik kitaplığı sürücüsünün türü.
Context3D
  enableErrorChecking : Boolean
Oluşturucu tarafından karşılaşılan hataların uygulamaya bildirilip bildirilmeyeceğini belirtir.
Context3D
  maxBackBufferHeight : int
Geri arabelleğin en büyük yüksekliğini belirtir.
Context3D
  maxBackBufferWidth : int
Geri arabelleğin en büyük genişliğini belirtir.
Context3D
  profile : String
[salt okunur] Bu Context3D nesnesi tarafından kullanılan özellik desteği profili.
Context3D
  supportsVideoTexture : Boolean
[statik] [salt okunur] Context3D'nin video dokusunu destekleyip desteklemediğini belirtir.
Context3D
  totalGPUMemory : Number
[salt okunur] Bir uygulamanın Stage 3D veri yapıları tarafından ayrılan toplam GPU belleğini döndürür. Her GPU kaynak nesnesi oluşturulduğunda, kullanılan bellek Context3D'de depolanır.
Context3D
Genel Yöntemler
 YöntemTanımlayan:
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
EventDispatcher nesnesi olan bir olay dinleyici nesnesini, dinleyicinin bir olayın bildirimini alması için kaydeder.
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
Bu Context3D nesnesiyle ilişkili renk, derinlik ve şablon arabelleklerini temizler ve bunları belirtilen değerlerle doldurur.
Context3D
  
configureBackBuffer(width:int, height:int, antiAlias:int, enableDepthAndStencil:Boolean = true, wantsBestResolution:Boolean = false, wantsBestResolutionOnBrowserZoom:Boolean = false):void
Görünüm penceresi boyutunu ve oluşturma arabelleğinin diğer niteliklerini ayarlar.
Context3D
  
createCubeTexture(size:int, format:String, optimizeForRenderToTexture:Boolean, streamingLevels:int = 0):flash.display3D.textures:CubeTexture
CubeTexture nesnesi oluşturur.
Context3D
  
createIndexBuffer(numIndices:int, bufferUsage:String = "staticDraw"):IndexBuffer3D
Bir IndexBuffer3D nesnesi oluşturur.
Context3D
  
Bir Program3D nesnesi oluşturur.
Context3D
  
createRectangleTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean):flash.display3D.textures:RectangleTexture
Rectangle Texture nesnesi oluşturur.
Context3D
  
createTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean, streamingLevels:int = 0):flash.display3D.textures:Texture
Texture nesnesi oluşturur.
Context3D
  
createVertexBuffer(numVertices:int, data32PerVertex:int, bufferUsage:String = "staticDraw"):VertexBuffer3D
VertexBuffer3D nesnesi oluşturur.
Context3D
  
    createVertexBufferForInstances(numVertices:int, data32PerVertex:int, instancesPerElement:int, bufferUsage:String = "staticDraw"):VertexBuffer3D
Örnek verileri için bir VertexBuffer3D nesnesi oluşturur.
Context3D
  
Bir VideoTexture nesnesi oluşturur.
Context3D
 Inherited
Olay akışına bir olay gönderir.
EventDispatcher
  
dispose(recreate:Boolean = true):void
Bu Context3D ile ilişkili tüm kaynakları ve dahili depolama alanını boşaltır.
Context3D
  
    drawToBitmapData(destination:BitmapData, srcRect:Rectangle = null, destPoint:Point = null):void
Geçerli oluşturma arabelleğini bir bitmap'e çizer.
Context3D
  
drawTriangles(indexBuffer:IndexBuffer3D, firstIndex:int = 0, numTriangles:int = -1):void
Belirtilen üçgenleri, geçerli arabellekleri ve bu Context3D nesnesinin durumunu kullanarak oluşturun.
Context3D
  
    drawTrianglesInstanced(indexBuffer:IndexBuffer3D, numInstances:int, firstIndex:int = 0, numTriangles:int = -1):void
Belirtilen örnek üçgenleri, geçerli arabellekleri ve bu Context3D nesnesinin durumunu kullanarak oluşturun.
Context3D
 Inherited
EventDispatcher nesnesinin belirli bir olay türü için kayıtlı dinleyicisi olup olmadığını kontrol eder.
EventDispatcher
 Inherited
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir.
Object
 Inherited
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir.
Object
  
Geri oluşturma arabelleğini görüntüler.
Context3D
 Inherited
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher nesnesinden bir dinleyiciyi kaldırır.
EventDispatcher
  
setBlendFactors(sourceFactor:String, destinationFactor:String):void
Mevcut renkle yapılan bir çizim işleminin çıktı rengini karıştırmada kullanılan faktörleri belirler.
Context3D
  
setColorMask(red:Boolean, green:Boolean, blue:Boolean, alpha:Boolean):void
Oluşturma arabelleğine renk yazarken kullanılan maskeyi ayarlar.
Context3D
  
setCulling(triangleFaceToCull:String):void
Üçgen ayırma modunu ayarlar.
Context3D
  
setDepthTest(depthMask:Boolean, passCompareMode:String):void
Derinlik testi için kullanılan karşılaştırma türünü ayarlar.
Context3D
  
    setFillMode(fillMode:String):void
Oluşturma için kullanılan dolgu modunu ayarlayın.
Context3D
  
Sonraki oluşturmada kullanmak üzere köşe ve parça programlarını ayarlar.
Context3D
  
setProgramConstantsFromByteArray(programType:String, firstRegister:int, numRegisters:int, data:ByteArray, byteArrayOffset:uint):void
Gölgelendirici programlar tarafından kullanılması için ByteArray öğesinde saklanan değerleri kullanarak sabitler ayarlar.
Context3D
  
setProgramConstantsFromMatrix(programType:String, firstRegister:int, matrix:Matrix3D, transposedMatrix:Boolean = false):void
Bir Matrix3D öğesinde saklanan değerleri kullanarak sabitleri gölgelendirici programları tarafından kullanılmak üzere ayarlayın.
Context3D
  
setProgramConstantsFromVector(programType:String, firstRegister:int, data:Vector.<Number>, numRegisters:int = -1):void
Gölgelendirici programları için sabit girdilerini ayarlar.
Context3D
 Inherited
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar.
Object
  
Geri oluşturma arabelleğini, oluşturma hedefi olarak ayarlar.
Context3D
  
setRenderToTexture(texture:flash.display3D.textures:TextureBase, enableDepthAndStencil:Boolean = false, antiAlias:int = 0, surfaceSelector:int = 0, colorOutputIndex:int = 0):void
Belirtilen dokuyu oluşturma hedefi olarak ayarlar.
Context3D
  
setSamplerStateAt(sampler:int, wrap:String, filter:String, mipfilter:String):void
Doku örnekleyici durumunu manuel olarak geçersiz kılın.
Context3D
  
Çizim maskesinin türü olan bir makas dikdörtgeni ayarlar.
Context3D
  
setStencilActions(triangleFace:String = "frontAndBack", compareMode:String = "always", actionOnBothPass:String = "keep", actionOnDepthFail:String = "keep", actionOnDepthPassStencilFail:String = "keep"):void
Şablon modunu ve işlemi ayarlar.
Context3D
  
setStencilReferenceValue(referenceValue:uint, readMask:uint = 255, writeMask:uint = 255):void
Şablon testleri için kullanılan şablon karşılaştırma değerini ayarlar.
Context3D
  
Parça programının doku girdisi kaydı olarak kullanılacak dokuyu belirtir.
Context3D
  
setVertexBufferAt(index:int, buffer:VertexBuffer3D, bufferOffset:int = 0, format:String = "float4"):void
Tek bir köşe gölgelendirici programına ait bir girdiye hangi veri bileşenlerinin karşılık geldiğini belirtir.
Context3D
 Inherited
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür.
Object
 Inherited
Belirtilen nesnenin dize olarak temsil edilen halini döndürür.
Object
 Inherited
Belirtilen nesnenin temel değerini döndürür.
Object
 Inherited
Bir olay dinleyicisinin bu EventDispatcher nesnesiyle mi, yoksa onun belirtilen olay türüne yönelik üst öğelerinden biriyle mi kayıtlı olduğunu kontrol eder.
EventDispatcher
Olaylar
 Olay Özet Tanımlayan:
 Inherited[broadcast olayı] Flash Player veya AIR uygulaması işletim sistemi odağına gelip etkin olduğunda gönderilir.EventDispatcher
 Inherited[broadcast olayı] Çalışan Flash Player veya AIR uygulaması sistem odağını kaybettiğinde ve etkin olmayan duruma geldiğinde gönderilir.EventDispatcher
Özellik Ayrıntısı

backBufferHeight

özellik
backBufferHeight:int  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 15, AIR 15

configureBackBuffer() yöntemine yönelik başarılı bir çağrıyla değiştirilebilecek geri arabelleğin yüksekliğini belirtir. wantsBestResolutionOnBrowserZoom ayarı son configureBackBuffer() yöntemi çağrısında true olarak belirlenirse tarayıcı yakınlaştırma faktörü değiştiğinde yükseklik değiştirilebilir. Yükseklik değişikliği, tarayıcı yakınlaştırma değişikliği olayı için bir olay dinleyicisi kaydedilerek algılanabilir.



Uygulama
    public function get backBufferHeight():int

İlgili API Öğeleri

backBufferWidth

özellik 
backBufferWidth:int  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 15, AIR 15

configureBackBuffer() yöntemine yönelik başarılı bir çağrıyla değiştirilebilecek geri arabelleğin genişliğini belirtir. wantsBestResolutionOnBrowserZoom ayarı son configureBackBuffer() yöntemi çağrısında true olarak belirlenirse tarayıcı yakınlaştırma faktörü değiştiğinde genişlik değiştirilebilir. Genişlik değişikliği, tarayıcı yakınlaştırma değişikliği olayı için bir olay dinleyicisi kaydedilerek algılanabilir.



Uygulama
    public function get backBufferWidth():int

İlgili API Öğeleri

driverInfo

özellik 
driverInfo:String  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Söz konusu oluşturma bağlamı tarafından kullanılan grafik kitaplığı sürücüsünün türü. Oluşturmanın yazılım, DirectX sürücüsü veya OpenGL sürücüsü kullanıp kullanmadığını gösterir. Ayrıca donanım oluşturmanın başarısız olup olmadığını gösterir. Donanım oluşturma başarısız olursa, Flash Player Stage3D için yazılımla oluşturmayı kullanır ve driverInfo aşağıdaki değerlerden birini içerir:

  • "Software Hw_disabled=userDisabled" - Adobe Flash Player Ayarları Kullanıcı Arabirimindeki Donanım hızlandırmayı etkinleştir onay kutusu seçili değildir.
  • "Software Hw_disabled=oldDriver" - Donanım grafik sürücüsüyle ilgili bilinen sorunlar vardır. Grafik sürücüsünü güncellemek bu sorunu çözebilir.
  • "Software Hw_disabled=unavailable" - Donanım grafik sürücüsüyle ilgili bilinen sorunlar veya donanım grafikleri başlatma hatası.
  • "Software Hw_disabled=explicit" - İçerik requestContext3D aracılığıyla açıkça yazılımla oluşturmayı talep etti.
  • "Software Hw_disabled=domainMemory" - İçerik, Stage3D donanım oluşturması ile kullanıldığında lisans gerektiren domainMemory öğesini kullanır. adobe.com/go/fpl_tr adresini ziyaret edin.



Uygulama
    public function get driverInfo():String

enableErrorChecking

özellik 
enableErrorChecking:Boolean

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Oluşturucu tarafından karşılaşılan hataların uygulamaya bildirilip bildirilmeyeceğini belirtir.

enableErrorChecking öğesi true olduğunda, clear() ve drawTriangles() yöntemleri eşzamanlıdır ve hata gönderebilir. enableErrorChecking öğesi false olduğunda, varsayılan, clear() ve drawTriangles() yöntemleri eşzamansızdır ve hatalar bildirilmez. Hata denetimini etkinleştirmek, oluşturma performansını düşürür. Hata denetimini yalnızca hata ayıklama sırasında etkinleştirmelisiniz.



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

İlgili API Öğeleri

maxBackBufferHeight

özellik 
maxBackBufferHeight:int

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 15, AIR 15

Geri arabelleğin en büyük yüksekliğini belirtir. Başlangıç değeri platformdaki sistem sınırıdır. Özellik sistem sınırına eşit veya daha küçük olan, ancak daha büyük olmayan bir değere ayarlanabilir. Özellik en düşük sınıra eşit veya daha büyük olan, ancak daha küçük olmayan bir değere ayarlanabilir. Geri arabellek yapılandırılmadığında en düşük sınır 32 sabit değeridir. En düşük sınır, geri arabellek yapılandırıldıktan sonra son başarılı configureBackBuffer() yöntemi çağrısındaki yükseklik parametresinin değeridir.



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

maxBackBufferWidth

özellik 
maxBackBufferWidth:int

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 15, AIR 15

Geri arabelleğin en büyük genişliğini belirtir. Başlangıç değeri platformdaki sistem sınırıdır. Özellik sistem sınırına eşit veya daha küçük olan, ancak daha büyük olmayan bir değere ayarlanabilir. Özellik en düşük sınıra eşit veya daha büyük olan, ancak daha küçük olmayan bir değere ayarlanabilir. Geri arabellek yapılandırılmadığında en düşük sınır 32 sabit değeridir. En düşük sınır, geri arabellek yapılandırıldıktan sonra son başarılı configureBackBuffer() yöntemi çağrısındaki genişlik parametresinin değeridir.



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

profile

özellik 
profile:String  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 12, AIR 4

Bu Context3D nesnesi tarafından kullanılan özellik desteği profili.



Uygulama
    public function get profile():String

İlgili API Öğeleri

supportsVideoTexture

özellik 
supportsVideoTexture:Boolean  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: AIR 17.0, Flash Player 18.0

Context3D'nin video dokusunu destekleyip desteklemediğini belirtir.



Uygulama
    public static function get supportsVideoTexture():Boolean

totalGPUMemory

özellik 
totalGPUMemory:Number  [salt okunur]

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 21, AIR 21

Bir uygulamanın Stage3D veri yapıları tarafından ayrılan toplam GPU belleğini döndürür.

Her GPU kaynak nesnesi oluşturulduğunda, kullanılan bellek Context3D'de depolanır. Bu bellek dizin arabelleklerini, köşe arabelleklerini, dokuları (video dokusu hariç) ve bu Context3D ile oluşturulan programları içerir.

API totalGPUMemory, yukarıdaki kaynaklar tarafından kullanılan toplam belleği kullanıcıya döndürür. Döndürülen varsayılan değer 0'dır. Toplam GPU belleği bayt olarak döndürülür. Bilgiler mobil üzerinde yalnızca Doğrudan modda, masaüstünde ise Doğrudan ve GPU modlarında sağlanır. (Masaüstünde, <renderMode>gpu</renderMode> kullanma <renderMode>direct</renderMode> olarak döner.)

Bu API, SWF sürümü 32 veya üzeri olduğunda kullanılabilir.



Uygulama
    public function get totalGPUMemory():Number
Yöntem Ayrıntısı

clear

()yöntem
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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Bu Context3D nesnesiyle ilişkili renk, derinlik ve şablon arabelleklerini temizler ve bunları belirtilen değerlerle doldurur.

Temizlenecek arabellekleri belirtmek için mask parametresini ayarlayın. mask parametresini ayarlamak için Context3DClearMask sınıfında tanımlanan sabitleri kullanın. Maskeye çoklu arabellek eklemek için "|" bitsel OR operatörünü kullanın (veya Context3DClearMask.ALL öğesini kullanın). Geri arabellekte oluştururken herhangi bir clear() çağrısından önce configureBackBuffer() yöntemi çağrılmalıdır.

Not: İzin verilen aralığın dışında bir parametre değeri belirtirseniz, Sayısal parametre değerleri sessizce sıfır ila bir aralığına kelepçelenir. Aynı şekilde stencil, 0xff değerinden büyükse, 0xff değerine ayarlanır.

Parametreler

red:Number (default = 0.0) — Renk arabelleğini temizlemek için kullanılacak rengin kırmızı bileşeni, sıfır ila bir aralığında.
 
green:Number (default = 0.0) — Renk arabelleğini temizlemek için kullanılacak rengin yeşil bileşeni, sıfır ila bir aralığında.
 
blue:Number (default = 0.0) — Renk arabelleğini temizlemek için kullanılacak rengin mavi bileşeni, sıfır ila bir aralığında.
 
alpha:Number (default = 1.0) — Renk arabelleğini temizlemek için kullanılacak rengin alfa bileşeni, sıfır ila bir aralığında. Alfa bileşen karıştırma için kullanılmaz. Arabellek alfasına doğrudan yazılır.
 
depth:Number (default = 1.0) — Derinlik arabelleğini temizlemek için kullanılacak değer, sıfır ile bir aralığında.
 
stencil:uint (default = 0) — Şablon arabelleğini temizlemek için kullanılacak 8-bit değer, 0x00 ila 0xff aralığında.
 
mask:uint (default = 0xffffffff) — temizlenecek arabellekleri belirtir.


Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — 3768: Stage3D API, arka planda çalışma sırasında kullanılmayabilir.

İlgili API Öğeleri

configureBackBuffer

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Görünüm penceresi boyutunu ve oluşturma arabelleğinin diğer niteliklerini ayarlar.

Oluşturma işlemi çift arabelleklidir. present() yöntemi çağrıldığında geri arabellek, görünür ön arabellekle değiştirilir. Arabelleğin en küçük boyutu 32x32 pikseldir. Geri ara belleğin en büyük boyutu cihaz özellikleriyle sınırlıdır ve ayrıca kullanıcı tarafından maxBackBufferWidth ve maxBackBufferHeight özellikleriyle ayarlanabilir. Arabelleği yapılandırma yavaş bir işlemdir. Normal oluşturma işlemleri sırasında arabellek boyutunu veya niteliklerini değiştirmemeye çalışın.

Parametreler

width:int — piksel cinsinden arabelleğin genişliği.
 
height:int — piksel cinsinden arabelleğin yüksekliği.
 
antiAlias:int — istenen kenar yumuşatma özelliğini belirten bir tam sayı değeri. Değer, kenar yumuşatma sırasında kullanılan alt örneklerin sayısıyla ilişkilidir. Göreli performans etkisi özel oluşturma donanımına bağlı olsa da daha fazla alt örneğin kullanılması, daha fazla hesaplama gerçekleştirilmesini gerektirir. Kenar yumuşatma türü ve kenar yumuşatma özelliğinin uygulanıp uygulanmayacağı aygıta ve oluşturma moduna bağlıdır. Kenar yumuşatma özelliği yazılım oluşturma bağlamı tarafından hiçbir şekilde desteklenmez.
0Kenar yumuşatma yok
2Düşük düzeyde kenar yumuşatma.
4Yüksek kalitede kenar yumuşatma.
16Çok yüksek kalitede kenar yumuşatma.
 
enableDepthAndStencil:Boolean (default = true)false değeri derinlik veya şablon arabelleği oluşturulmadığını belirtir; true değeri derinlik ve şablon arabelleği oluşturur. SWF sürümü 15 veya üstü ile derlenen bir AIR 3.2 ya da daha yeni uygulama için, uygulama tanımlayıcısı dosyasındaki renderMode öğesi direct ise, uygulama tanımlayıcısı dosyasındaki depthAndStencil öğesi de bu argüman ile aynı değere sahip olmalıdır. Varsayılan olarak, depthAndStencil öğesinin değeri false şeklindedir.
 
wantsBestResolution:Boolean (default = false)true, aygıt HiDPI ekranlarını destekliyorsa onun, genişlik ve yükseklik parametreleriyle belirtilen daha geniş bir geri arabelleği ayırmaya çalışacağını belirtir. Bu, daha fazla piksel eklediğinden ve gölgelendirici işlemlerinin sonucunu potansiyel olarak değiştirdiğinden varsayılan olarak kapalıdır. Yerel geri arabelleğin ne kadar ölçeklendiği belirlemek için Stage.contentsScaleFactor öğesini kullanın.
 
wantsBestResolutionOnBrowserZoom:Boolean (default = false)true geri arabellek boyutunun tarayıcı yakınlaştırma faktöründeki artış oranında artması gerektiğini belirtir. Bu değerin ayarı birden çok tarayıcı yakınlaştırmasında aynıdır. Parametrenin varsayılan değeri false şeklindedir. Geri arabellek boyutu artışını sınırlandırmak için maxBackBufferWidth ve maxBackBufferHeight özelliklerini ayarlayın. Geri arabelleğin geçerli boyutunu belirlemek için backBufferWidth ve backBufferHeight özelliklerini kullanın.


Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Hatalı Giriş Boyutu: Genişlik veya yükseklik parametresi izin verilen en küçük geri ara bellek boyutundan küçüktür veya izin verilen en büyük geri ara bellek boyutundan büyüktür.
 
Error — 3709: Uygulama tanımlayıcısındaki depthAndStencil bayrağı, Context3D nesnesinde configureBackBuffer() öğesine iletilen enableDepthAndStencil Boolean değeri ile eşleşmelidir.

createCubeTexture

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

CubeTexture nesnesi oluşturur.

Oluşturma bağlamına küp dokusu bitmap'leri yüklemek ve oluşturma sırasında bir küp dokusuna başvurmak için bir CubeTexture nesnesi kullanın. Bir küp dokusu, kübik bir topolojide düzenlenmiş altı eşit boyutlu kare dokusundan oluşur ve ortam eşlemlerini açıklamak için kullanışlıdır.

CubeTexture yapıcısı ile CubeTexture nesnesi oluşturamazsınız. Bunun yerine bu yöntemi kullanın. Bir CubeTexture nesnesi oluşturduktan sonra CubeTexture uploadFromBitmapData(), uploadFromByteArray() veya uploadCompressedTextureFromByteArray() yöntemlerini kullanarak doku bitmap verilerini yükleyin.

Parametreler

size:int — Texel cinsinden doku kenarı uzunluğu.
 
format:String — Context3DTextureFormat numaralandırılmış listesinin texel biçimi.

Doku sıkıştırma, doku görüntülerini doğrudan GPU üzerinde sıkıştırılmış biçimde saklamanıza izin verir. Bu, GPU belleğinden ve bellek bant genişliğinden tasarruf edilmesini sağlar. Normalde, sıkıştırılan dokular çevrimdışı olarak sıkıştırılır ve Texture.uploadCompressedTextureFromByteArray yönteminin kullanımıyla GPU'ya sıkıştırılmış formda yüklenir. Masaüstü platformlardaki Flash Player 11.4 ve AIR 3.4 çalışma zamanı doku sıkıştırması için destek eklemiştir. Bu, vektör resminden dinamik dokular oluşturma durumları gibi belirli durumlarda faydalı olabilir. Bu özelliğin henüz mobil platformlarda kullanılabilir olmadığını ve bunun yerine ArgumentError (Doku Formatı Uyuşmazlığı) gönderileceğini unutmayın. Çalışma zamanı doku sıkıştırmasını kullanmak için aşağıdaki adımları uygulayın: 1. Context3D.createCubeTexture() yöntemini çağırıp format parametresi olarak flash.display3D.Context3DTextureFormat.COMPRESSED veya flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA öğesini ileterek doku nesnesini oluşturun. 2. createCubeTexture() tarafından döndürülen flash.display3D.textures.Texture örneğini kullanarak, dokuyu tek bir adımda yüklemek ve sıkıştırmak üzere flash.display3D.textures.CubeTexture.uploadFromBitmapData() veya flash.display3D.textures.CubeTexture.uploadFromByteArray() öğesini çağırın.

 
optimizeForRenderToTexture:Boolean — Dokunun bir oluşturma hedefi olarak kullanılma ihtimali varsa true olarak ayarlanır.
 
streamingLevels:int (default = 0) — Görüntü oluşturulmadan önce yüklenmesi gereken MIP map düzeyi. Doku akışı önce en küçük mip düzeylerini yükleme ve görüntüleme, dokular yüklendikçe ise aşamalı bir şekilde daha yüksek kaliteli görüntüleri gösterme özelliğini sunar. Son kullanıcılar daha yüksek kaliteli görüntüler yüklenirken düşük kaliteli görüntüleri uygulamada görüntüleyebilir.

Varsayılan olarak streamingLevels 0'dır. Bu, MIP eşlemindeki en yüksek kaliteli görüntünün, görüntü oluşturmadan önce yüklenmiş olması gerektiği anlamına gelir. Bu parametre Flash Player 11.3 ve AIR 3.3'te eklenmiştir. Varsayılan değeri kullanmak Flash Player ve AIR'nin önceki sürümlerinin davranışını korur.

Doku akışını etkinleştirmek için streamingLevels değerini, 1 ve MIP eşlemedeki görüntü sayısı arasında bir değere ayarlayın. Örneğin, 64x64 pikselde en yüksek kalitedeki bir ana görüntüyü içeren bir MIP map bulunsun. Toplam 7 görüntü veya 7 düzey için MIP map'deki düşük kaliteli görüntüler 32x32, 16x16, 8x8, 4x4, 2x2 ve 1x1 pikseldir. Düzey 0, en yüksek kaliteli görüntüdür. log2(min(width,height)), bu özelliğin en yüksek değeridir. Bu nedenle 64x64 piksel olan ana bir görüntü için streamingLevels öğesinin maksimum değeri 7'dir. 8x8 piksel görüntü yüklendikten sonra görüntüyü oluşturmak için bu özelliği 3 olarak ayarlayın.

Not: Bu özelliği > 0 olan bir değere ayarlamanız bellek kullanımını ve performansı etkileyebilir.

Döndürür
flash.display3D.textures:CubeTexture

Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Kaynak Sınırı Aşıldı: çok fazla Texture nesnesi oluşturulduysa veya dokulara ayrılan bellek miktarı aşıldıysa.
 
ArgumentError — Derinlik Dokusu Başlatılamadı: derinlik dokusu oluşturma girişiminde bulunursanız.
 
ArgumentError — Doku Boyutu Sıfır: size parametresi sıfırdan daha büyük değilse.
 
ArgumentError — Doku İkinin Kuvveti Değil: size parametresi ikinin kuvveti değilse.
 
ArgumentError — Doku Çok Büyük: size parametresi 1024'den daha büyükse.
 
Error — Doku Oluşturulamadı: CubeTexture nesnesi, oluşturma bağlamı tarafından oluşturulamadıysa (ancak nedenle ilgili ek bilgi mevcut değildir).
 
ArgumentError — Geçersiz akış düzeyi: streamingLevels log2(size) değerinden yüksekse veya bu değerdeyse.

İlgili API Öğeleri

createIndexBuffer

()yöntem 
public function createIndexBuffer(numIndices:int, bufferUsage:String = "staticDraw"):IndexBuffer3D

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Bir IndexBuffer3D nesnesi oluşturur.

Oluşturma bağlamına bir dizi üçgen dizini yüklemek ve oluşturma için bu dizin dizisine başvurmak üzere bir IndexBuffer3D nesnesi kullanın. Dizin arabelleğindeki her dizin, bir köşe arabelleğinde karşılık gelen bir köşeye başvurur. Üç dizinin her bir dizisi bir üçgeni tanımlar. Dizin arabelleğinde tanımlanan bir veya daha fazla üçgeni oluşturmak için IndexBuffer3D nesnesini drawTriangles() yöntemine geçirin.

IndexBuffer3D sınıfı yapıcısı kullanarak IndexBuffer3D nesnesi oluşturamazsınız. Bunun yerine bu yöntemi kullanın. Bir IndexBuffer3D nesnesi oluşturduktan sonra, IndexBuffer3D uploadFromVector() veya uploadFromByteArray() yöntemlerini kullanarak dizinleri indirin.

Parametreler

numIndices:int — arabelleğe kaydedilecek köşe noktası sayısı.
 
bufferUsage:String (default = "staticDraw") — Beklenen arabellek kullanımı. Context3DBufferUsage içinde tanımlanan sabitlerden birini kullanın. Donanım sürücüsü, düzgün ayarladığınızda uygun optimizasyonu gerçekleştirebilir. Bu parametre yalnızca Flash 12/AIR 4'ten sonra kullanılabilir.

Döndürür
IndexBuffer3D

Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Kaynak Sınırı Aşıldı: çok fazla dizin arabelleği oluşturulduysa veya dizin arabelleklerine ayrılan bellek miktarı aşıldıysa.
 
Error — 3768: Stage3D API, arka planda çalışma sırasında kullanılmayabilir.
 
ArgumentError — Ara Bellek Çok Büyük: numIndices 0xf0000 değerine eşit veya daha büyük olduğunda.

İlgili API Öğeleri

createProgram

()yöntem 
public function createProgram():Program3D

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Bir Program3D nesnesi oluşturur.

Oluşturma bağlamına gölgelendirici programları yüklemek ve oluşturma sırasında yüklenen programlara başvurmak üzere Program3D nesnesini kullanın. Bir Program3D nesnesi, bir köşe programı ve bir parça programı (piksel programı olarak da bilinir) olmak üzere iki programı saklar. Programlar ikili gölgelendirici grubu dilinde yazılmıştır.

Program3D yapıcısı kullanarak Program3D nesnesi oluşturamazsınız. Bunun yerine bu yöntemi kullanın. Program3D nesnesi oluşturduktan sonra programları Program3D upload() yöntemini kullanarak yükleyin.

Döndürür
Program3D

Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Program sayısı 4096'yı aşarsa veya toplam bellek boyutu 16 MB'ı aşarsa (Program3D kaynaklarını boşaltmak için dispose öğesini kullanın).

İlgili API Öğeleri


Örnek  ( Bu örnek nasıl kullanılır? )

Bu örnek, oluşturma bağlamına bir köşe çiftinin ve piksel programlarının nasıl oluşturulacağını, yükleneceğini ve etkinleştirileceğini gösterir. renderContext nesnesinin, bir Context3D sınıfı örneği olduğunu unutmayın. Örnekteki programlar Adobe Grafikleri Çevirici Dili'nde (AGAL) yazılmıştır.
//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

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.8, AIR 3.8

Rectangle Texture nesnesi oluşturur.

Oluşturma bağlamına doku bitmap'leri yüklemek ve oluşturma sırasında bir dokuya başvurmak üzere bir RectangleTexture nesnesi kullanın.

RectangleTexture yapıcı ile RectangleTexture nesneleri oluşturamayacağınızdan, bu yöntemi kullanın. Bir RectangleTexture nesnesi oluşturduktan sonra uploadFromBitmapData() veya uploadFromByteArray() yöntemlerini kullanarak doku bitmap'lerini yükleyin.

32 bit tam sayı dokularının Flash BitmapData biçimiyle eşleşmesi için paketlenmiş BGRA biçiminde saklandığını unutmayın. Kayan nokta dokuları geleneksel bir RGBA biçimini kullanır.

Rectangle dokularının normal 2B dokulardan farkı, genişliklerinin ve yüksekliklerinin ikinin kuvveti olmak zorunda olmamasıdır. Ayrıca mip map de içermezler. Bunlar en çok doku oluşturma durumlarında kullanışlıdır. Rectangle texture, mip eşleme filtreleme veya tekrar sarma kullanan bir örnekleyici ile birlikte kullanılıyorsa, drawTriangles çağrısı başarısız olur. Rectangle dokusu aynı zamanda akışa da izin vermez. Yalnızca şu doku biçimleri Rectangle dokular tarafından desteklenir: BGRA, BGR_PACKED, BGRA_PACKED. Sıkıştırılmış doku biçimleri Rectangle Dokuları tarafından desteklenmez.

Parametreler

width:int — Texel cinsinden doku genişliği.
 
height:int — Texel cinsinden doku yüksekliği.
 
format:String — Context3DTextureFormat numaralandırılmış listesinin texel biçimi.
 
optimizeForRenderToTexture:Boolean — Dokunun bir oluşturma hedefi olarak kullanılma ihtimali varsa true olarak ayarlanır.

Döndürür
flash.display3D.textures:RectangleTexture

Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Kaynak Sınırı Aşıldı: çok fazla Texture nesnesi oluşturulduysa veya dokulara ayrılan bellek miktarı aşıldıysa.
 
ArgumentError — Doku Boyutu Sıfır: hem width hem de height parametresi sıfırdan daha büyük değilse.
 
ArgumentError — Doku Çok Büyük: width veya height parametresi 2048'den daha büyükse.
 
Error — Doku Oluşturulamadı: Texture nesnesi oluşturma bağlamı tarafından oluşturulamadıysa (ancak nedenle ilgili ek bilgi mevcut değildir).
 
Error — Taban Çizgisi veya Üzeri Profil Gerektirir: dikdörtgen doku taban çizgisiyle sınırlandırılmış profille oluşturulursa.

İlgili API Öğeleri

createTexture

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Texture nesnesi oluşturur.

Oluşturma bağlamına doku bitmap'leri yüklemek ve oluşturma sırasında bir dokuya başvurmak üzere bir Texture nesnesi kullanın.

Texture yapıcısı ile Texture nesnesi oluşturamazsınız. Bunun yerine bu yöntemi kullanın. Bir Texture nesnesi oluşturduktan sonra Texture uploadFromBitmapData(), uploadFromByteArray() veya uploadCompressedTextureFromByteArray() yöntemlerini kullanarak doku bitmap'lerini yükleyin.

32 bit tam sayı dokularının Flash BitmapData biçimiyle eşleşmesi için paketlenmiş BGRA biçiminde saklandığını unutmayın. Kayan nokta dokuları geleneksel bir RGBA biçimini kullanır.

Parametreler

width:int — Texel cinsinden doku genişliği.
 
height:int — Texel cinsinden doku yüksekliği.
 
format:String — Context3DTextureFormat numaralandırılmış listesinin texel biçimi.

Doku sıkıştırma, doku görüntülerini doğrudan GPU üzerinde sıkıştırılmış biçimde saklamanıza izin verir. Bu, GPU belleğinden ve bellek bant genişliğinden tasarruf edilmesini sağlar. Normalde, sıkıştırılan dokular çevrimdışı olarak sıkıştırılır ve Texture.uploadCompressedTextureFromByteArray yönteminin kullanımıyla GPU'ya sıkıştırılmış formda yüklenir. Masaüstü platformlardaki Flash Player 11.4 ve AIR 3.4 çalışma zamanı doku sıkıştırması için destek eklemiştir. Bu, vektör resminden dinamik dokular oluşturma durumları gibi belirli durumlarda faydalı olabilir. Bu özelliğin henüz mobil platformlarda kullanılabilir olmadığını ve bunun yerine ArgumentError (Doku Formatı Uyuşmazlığı) gönderileceğini unutmayın. Çalışma zamanı doku sıkıştırmasını kullanmak için aşağıdaki adımları uygulayın: 1. Context3D.createTexture() yöntemini çağırıp format parametresi olarak flash.display3D.Context3DTextureFormat.COMPRESSED veya flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA öğesini ileterek doku nesnesini oluşturun. 2. createTexture() tarafından döndürülen flash.display3D.textures.Texture örneğini kullanarak, dokuyu tek bir adımda yüklemek ve sıkıştırmak üzere flash.display3D.textures.Texture.uploadFromBitmapData() veya flash.display3D.textures.Texture.uploadFromByteArray() öğesini çağırın.

 
optimizeForRenderToTexture:Boolean — Dokunun bir oluşturma hedefi olarak kullanılma ihtimali varsa true olarak ayarlanır.
 
streamingLevels:int (default = 0) — Görüntü oluşturulmadan önce yüklenmesi gereken MIP map düzeyi. Doku akışı önce en küçük mip düzeylerini yükleme ve görüntüleme, dokular yüklendikçe ise aşamalı bir şekilde daha yüksek kaliteli görüntüleri gösterme özelliğini sunar. Son kullanıcılar daha yüksek kaliteli görüntüler yüklenirken düşük kaliteli görüntüleri uygulamada görüntüleyebilir.

Varsayılan olarak streamingLevels 0'dır. Bu, MIP eşlemindeki en yüksek kaliteli görüntünün, görüntü oluşturmadan önce yüklenmiş olması gerektiği anlamına gelir. Bu parametre Flash Player 11.3 ve AIR 3.3'te eklenmiştir. Varsayılan değeri kullanmak Flash Player ve AIR'nin önceki sürümlerinin davranışını korur.

Doku akışını etkinleştirmek için streamingLevels değerini, 1 ve MIP eşlemedeki görüntü sayısı arasında bir değere ayarlayın. Örneğin, 64x64 pikselde en yüksek kalitedeki bir ana görüntüyü içeren bir MIP map bulunsun. Toplam 7 görüntü veya 7 düzey için MIP map'deki düşük kaliteli görüntüler 32x32, 16x16, 8x8, 4x4, 2x2 ve 1x1 pikseldir. Düzey 0, en yüksek kaliteli görüntüdür. log2(min(width,height)), bu özelliğin en yüksek değeridir. Bu nedenle 64x64 piksel olan ana bir görüntü için streamingLevels öğesinin maksimum değeri 7'dir. 8x8 piksel görüntü yüklendikten sonra görüntüyü oluşturmak için bu özelliği 3 olarak ayarlayın.

Not: Bu özelliği > 0 olan bir değere ayarlamanız bellek kullanımını ve performansı etkileyebilir.

Döndürür
flash.display3D.textures:Texture

Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Kaynak Sınırı Aşıldı: çok fazla Texture nesnesi oluşturulduysa veya dokulara ayrılan bellek miktarı aşıldıysa.
 
ArgumentError — Derinlik Dokusu Başlatılamadı: derinlik dokusu oluşturma girişiminde bulunursanız.
 
ArgumentError — Doku Boyutu Sıfır: hem width hem de height parametresi sıfırdan daha büyük değilse.
 
ArgumentError — Doku İkinin Kuvveti Değil: hem width hem de height parametresi ikinin kuvveti değilse.
 
ArgumentError — Doku Çok Büyük: width veya height parametresi taban çizgisi ve taban çizgisiyle sınırlı profil için 2048'den daha büyükse ya da width veya height parametresi genişletilmiş profil taban çizgisi ve üzeri için 4096'dan büyükse.
 
Error — Doku Oluşturulamadı: Texture nesnesi oluşturma bağlamı tarafından oluşturulamadıysa (ancak nedenle ilgili ek bilgi mevcut değildir).
 
ArgumentError — Geçersiz akış düzeyi: streamingLevels, log2(min(width,height)) değerinden yüksekse veya bu değere sahipse.

İlgili API Öğeleri

createVertexBuffer

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

VertexBuffer3D nesnesi oluşturur.

Oluşturma bağlamına bir dizi köşe verisi yüklemek için bir VertexBuffer3D nesnesi kullanın. Köşe arabelleği, sahne alanı geometrisindeki her noktayı oluşturmak için gereken verileri içerir. Her köşeyle ilişkili veri nitelikleri genel olarak; konum, renk ve doku koordinatlarını içerir ve köşe gölgelendiricisi programına ait bir girdi işlevi görür. setVertexBufferAt() yöntemini kullanarak, köşe programının girdilerinden birine karşılık gelen veri değerlerini tanımlayın. Her köşe için en fazla altmış dört tane 32 bitlik değer belirtebilirsiniz.

VertexBuffer3D yapıcısı kullanarak VertexBuffer3D nesnesi oluşturamazsınız. Bunun yerine bu yöntemi kullanın. Bir VertexBuffer3D nesnesi oluşturduktan sonra, VertexBuffer3D uploadFromVector() veya uploadFromByteArray() yöntemlerini kullanarak dizinleri indirin.

Parametreler

numVertices:int — arabelleğe kaydedilecek köşe noktası sayısı. Tek bir arabellekteki maksimum köşe noktası sayısı 65535'tir.
 
data32PerVertex:int — Her köşe ile ilişkili 32 bitlik (4 bayt) veri değerlerinin sayısı. Köşe başına maksimum 32 bit veri sayısı 64'tür (veya 256 bayttır). Belirli bir zamanda bir köşe gölgelendirici programı tarafından yalnızca 8 nitelik kaydına erişilebileceğini unutmayın. Bir köşe arabelleği içinden nitelik seçmek için SetVertextBufferAt() öğesini kullanın.
 
bufferUsage:String (default = "staticDraw") — Beklenen arabellek kullanımı. Context3DBufferUsage içinde tanımlanan sabitlerden birini kullanın. Donanım sürücüsü, düzgün ayarladığınızda uygun optimizasyonu gerçekleştirebilir. Bu parametre yalnızca Flash 12/AIR 4'ten sonra kullanılabilir

Döndürür
VertexBuffer3D

Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Kaynak Sınırı Aşıldı: çok fazla köşe arabelleği nesnesi oluşturulduysa veya köşe arabelleklerine ayrılan bellek miktarı aşıldıysa.
 
ArgumentError — Arabellek Çok Büyük: numVertices öğesi 0x10000 değerinden daha büyük olduğunda veya data32PerVertex öğesi 64'ten büyük olduğunda.
 
ArgumentError — Arabellek Boyutu Sıfır: numVertices öğesi veya data32PerVertex öğesi sıfır olduğunda.
 
ArgumentError — Doku Oluşturulamadı: VertexBuffer3D nesnesi oluşturma bağlamı tarafından oluşturulamadıysa (ancak nedenle ilgili ek bilgi mevcut değildir).
 
Error — 3768: Stage3D API, arka planda çalışma sırasında kullanılmayabilir.

İlgili API Öğeleri


Örnek  ( Bu örnek nasıl kullanılır? )

Aşağıdaki örnek, köşe verileri arabelleği oluşturma ve yükleme işlemlerini gösterir. Örnekteki arabellek, her bir köşe için iki veri türü içerir: x, y, z koordinatları olarak konum ve rgb bileşenleri olarak renk. Köşe arabelleği oluşturulduktan sonra örnek, ilk üç veri noktasının köşe programına va0 değerinde 3 Kayan nokta olarak ve ikinci üç veri noktasının va1 olarak geçirildiğini belirtmek için setVertexBufferAt() yöntemini çağırır. Köşe programı, bu şekilde tanımlanan ve köşe nitelik kayıtları olarak da bilinen en fazla 8 girdi içerebilir.
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

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: AIR 20.0

Örnek verileri için bir VertexBuffer3D nesnesi oluşturur.

Oluşturma bağlamına bir dizi örnek verisi yüklemek için bir VertexBuffer3D nesnesi kullanın. Köşe arabelleği, sahne alanı geometrisindeki her örneği oluşturmak için gereken verileri içerir. Örnek verileri içeren Köşe Arabellekleri bir örneğin tüm köşeleri için ortak olan nitelikler sağlar. ve köşe gölgelendiricisi programına ait girdi işlevini görür. setVertexBufferAt() yöntemini kullanarak, köşe programının girdilerinden birine karşılık gelen veri değerlerini tanımlayın. Köşe arabelleğinin her öğesi için en fazla altmış dört tane 32 bitlik değer belirtebilirsiniz.

VertexBuffer3D yapıcısı kullanarak VertexBuffer3D nesnesi oluşturamazsınız. Bunun yerine bu yöntemi kullanın. Bir VertexBuffer3D nesnesi oluşturduktan sonra, VertexBuffer3D uploadFromVector() veya uploadFromByteArray() yöntemlerini kullanarak dizinleri indirin.

Parametreler

numVertices:int — arabelleğe kaydedilecek öğe sayısı. Tek bir arabellekteki maksimum öğe sayısı 65535'tir.
 
data32PerVertex:int — her öğe ile ilişkili 32 bitlik (4 bayt) veri değerlerinin sayısı. Köşe başına maksimum 32 bit veri sayısı 64'tür (veya 256 bayttır).
 
instancesPerElement:int — köşe arabelleğin bir öğesini kullanacak örnek sayısı.
 
bufferUsage:String (default = "staticDraw") — Beklenen arabellek kullanımı. Context3DBufferUsage içinde tanımlanan sabitlerden birini kullanın. Donanım sürücüsü, düzgün ayarladığınızda uygun optimizasyonu gerçekleştirebilir. Bu parametre yalnızca Flash 12/AIR 4'ten sonra kullanılabilir

Döndürür
VertexBuffer3D

Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Kaynak Sınırı Aşıldı: çok fazla köşe arabelleği nesnesi oluşturulduysa veya köşe arabelleklerine ayrılan bellek miktarı aşıldıysa.
 
ArgumentError — Arabellek Çok Büyük: numVertices öğesi 0x10000 değerinden daha büyük olduğunda veya data32PerVertex öğesi 64'ten büyük olduğunda.
 
ArgumentError — Arabellek Boyutu Sıfır: numVertices öğesi veya data32PerVertex öğesi sıfır olduğunda.
 
ArgumentError — Doku Oluşturulamadı: VertexBuffer3D nesnesi oluşturma bağlamı tarafından oluşturulamadıysa (ancak nedenle ilgili ek bilgi mevcut değildir).
 
Error — 3768: Stage3D API, arka planda çalışma sırasında kullanılmayabilir.
 
Error — Standart Genişletilmiş Profil veya Üzerini gerektirir: istenen profil standart genişletilmiş profilden az olduğunda bu yöntem çağrılırsa.
 
Error — Öğe Başına Geçersiz Örnek: instancesPerElement sıfırdan büyük değilse.

İlgili API Öğeleri

createVideoTexture

()yöntem 
public function createVideoTexture():flash.display3D.textures:VideoTexture

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: AIR 17.0, Flash Player 18.0

Bir VideoTexture nesnesi oluşturur.

NetStream nesnesinden veya Camera nesnesinden doku olarak video kareleri almak ve video karelerini oluşturma bağlamına yüklemek için bir VideoTexture nesnesi kullanın.

VideoTexture nesnesi VideoTexture oluşturucu ile oluşturulamaz; bu yöntemi kullanın. Bir VideoTexture nesnesi oluşturmadan önce NetStream nesnesini veya Camera Nesnesini ekleyerek video karelerini VideoTexture attachNetStream() veya attachCamera() yöntemleriyle alın.

Sistem bu özelliği desteklemiyorsa bu yöntem null değerini döndürür.

VideoTexture mipmap içermez. VideoTexture mip eşleme filtreleme veya tekrar sarma kullanan bir örnekleyici ile birlikte kullanılıyorsa, drawTriangles çağrısı başarısız olur. VideoTexture, gölgelendiriciler tarafından BGRA dokusu olarak kabul edilebilir. Context3D yazılım oluşturma moduyla istenirse VideoTexture Nesnesinin örneğini oluşturma denemesi başarısız olur.

Bir Context3D örneği için en fazla 4 VideoTexture nesnesi kullanılabilir. Mobilde desteklenen VideoTexture nesnelerinin gerçek sayısı platform sınırlamaları nedeniyle 4'ten az olabilir.

Döndürür
flash.display3D.textures:VideoTexture

Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Kaynak Sınırı Aşıldı: çok fazla Texture nesnesi oluşturulduysa veya dokulara ayrılan bellek miktarı aşıldıysa.
 
Error — Doku Oluşturulamadı: Texture nesnesi oluşturma bağlamı tarafından oluşturulamadıysa (ancak nedenle ilgili ek bilgi mevcut değildir).

dispose

()yöntem 
public function dispose(recreate:Boolean = true):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Bu Context3D ile ilişkili tüm kaynakları ve dahili depolama alanını boşaltır.

Tüm dizin arabellekleri, köşe arabellekleri, dokular ve Context3D aracılığıyla oluşturulan programlar, tıpkı her biri için tek tek dispose() çağrısı yapmış gibi atılır. Ek olarak, Context3D öğesinin kendisi de tüm geçici arabellekleri ve geri arabelleği serbest bırakarak atılır. dispose() öğesini çağırdıktan sonra configureBackBuffer(), clear(), drawTriangles(), createCubeTexture(), createTexture(), createProgram(), createIndexBuffer(), createVertexBuffer() veya drawToBitmapData() öğesini çağırırsanız çalışma zamanı bir istisna atar.

Uyarı: İlişkili Stage3D nesnesi üzerinde Events.CONTEXT3D_CREATE kümesi için bir olay dinleyicisi varlığını sürdürürken Bir Context3D üzerinde dispose() öğesinin çağrılması, dispose() çağrısının aygıt kaybının benzetimini yapmasına neden olacaktır. Bu, Stage3D üzerinde yeni bir Context3D oluşturur ve Events.CONTEXT3D_CREATE olayını tekrar gönderir. Bunu istemiyorsanız, dispose() öğesini çağırmadan veya recreate parametresini false olarak ayarlamadan önce olay dinleyicisini Stage3D nesnesinden kaldırın.

Parametreler

recreate:Boolean (default = true)

İlgili API Öğeleri

    drawToBitmapData

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: AIR 3

Geçerli oluşturma arabelleğini bir bitmap'e çizer.

Geri oluşturma arabelleğinin o andaki içerikleri BitmapData nesnesine kopyalanır. Bu potansiyel olarak bir dakika kadar sürebilecek çok yavaş bir işlemdir. Dikkatli bir şekilde kullanın. Bu işlevin ön oluşturma arabelleğini (sahne alanında gösterilen) değil çizim yapılan arabelleği kopyaladığını unutmayın. Oluşturulan görüntüyü sahne alanında göründüğü anda yakalamak için present() öğesini çağırmadan önce hemen drawToBitmapData() öğesini çağırın.

AIR 25'ten itibaren drawToBitmapData() API'sine iki yeni parametre getirilmiştir. Bu API artık üç parametre almaktadır. Birincisi var olan destination:BitmapData parametresidir. İkinci parametre ise stage3D üzerindeki hedef dikdörtgen olan srcRect:Rectangle parametresidir. Üçüncü parametre, hedef bitmap üzerindeki koordinat olan destPoint:Point parametresidir. SrcRect ve destPoint parametreleri isteğe bağlıdır ve varsayılan değerleri sırasıyla (0,0,bitmapWidth,bitmapHeight) ve (0,0) şeklindedir.

Görüntü çizildiğinde, bitmap'e uyacak şekilde ölçeklenmez. Bunun yerine içerik hedef bitmap'in boyutlarına kırpılır.

Flash BitmapData nesneleri, alfa bileşeninin önceden çoğalttığı renkleri saklar. Örneğin, bir pikselin "saf" rgb renk bileşenleri (0x0A, 0x12, 0xBB) ve alfa bileşeni 0x7F (.5) şeklindeyse, piksel (0x05, 0x09, 0x5D, 0x7F) şeklindeki rgba değerleri ile BitmapData nesnesinde saklanır. Arabellekte oluşturulan renklerin alfa tarafından çoğaltılması veya parça gölgelendiricisindeki işlemi uygulamaları için karışım faktörlerini ayarlayabilirsiniz. Oluşturma bağlamı renklerin önceden çoğaltılan biçimde saklandığını doğrulamaz.

Parametreler

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


Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — 3768: Stage3D API, arka planda çalışma sırasında kullanılmayabilir.
 
Error — 3802: destPoint:Point veya srcRect:Rectangle parametrelerinden biri bitmap/stage3D koordinat sınırının dışındaysa veya Sayısal olmayan (NaN) değerler girdi olarak geçirilirse.

Örnek  ( Bu örnek nasıl kullanılır? )

Aşağıdaki örnek, hem normal oluşturucu arabelleğine hem de BitmapData nesnesine iki üçgen oluşturur. BitmapData nesnesi, normal görüntüleme listesine eklenen bir Bitmap nesnesi kullanılarak görüntülenir. Alt gölge filtresi bitmap oluşturmasına uygulanır.
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

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Belirtilen üçgenleri, geçerli arabellekleri ve bu Context3D nesnesinin durumunu kullanarak oluşturun.

Her üçgen için, üçgen köşeleri köşe gölgelendirici programıyla işlenir ve üçgen yüzeyi piksel gölgelendirici programıyla işlenir. Her piksel için piksel programının çıktı rengi, şablon işlemlerine, derinlik testine, kaynak ve hedef alfa değerine ve geçerli karışım moduna bağlı olarak oluşturma hedefine çekilir. Oluşturma hedefi ana oluşturma arabelleği veya bir doku olabilir.

Ayırma etkinse (setCulling() yöntemiyle) piksel programı çalıştırılmadan önce üçgenler sahneden atılabilir. Şablon ve derinlik testi etkinse, oluşturma hedefini güncellemeden piksel programının çıktı pikselleri atılabilir. Buna ek olarak, piksel programı, bir piksel için bir rengin çıktısını vermemeye karar verebilir.

Oluşturulan üçgenler, siz present() yöntemini çağırmadan görünüm penceresinde görüntülenmez. Her present() çağrısından sonra ve ilk drawTriangles() çağrısından önce clear() yönteminin çağırılması gerekir. Aksi takdirde oluşturma başarısız olur.

enableErrorChecking öğesi false olduğunda bu işlev anında döndürülür, sonuçları beklemez ve yalnızca bu Context3D örneği atılmışsa veya çok fazla çizim çağrısı varsa istisnalar atar. Oluşturma bağlamı durumu geçersizse, oluşturma sessizce başarısız olur. enableErrorChecking özelliği true değerine sahip olduğunda, bu işlev üçgenler çizildikten sonra döndürülür ve tüm çizim hataları ve geçersiz bağlam durumları için istisnalar atar.

Parametreler

indexBuffer:IndexBuffer3D — oluşturulacak köşe noktalarına başvuruda bulunan bir köşe dizini kümesi.
 
firstIndex:int (default = 0) — oluşturulmak üzere seçilmiş ilk köşe dizininin dizini. Varsayılan 0.
 
numTriangles:int (default = -1) — oluşturulacak üçgen sayısı. Her üçgen üç dizin kullanır. Dizin arabelleğindeki tüm üçgenleri çizmek için -1 değerini iletir. Varsayılan -1.


Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Bu yöntemin present() öğesine yönelik çağrılar arasında çok fazla çağrılması durumunda. En fazla çağrı sayısı 32.768'dir.

Aşağıdaki hatalar yalnızca enableErrorChecking özelliği true olduğunda atılır.

 
Error — Çizimden Önce Temizlemek Gerekir: Arabellek son present() çağrısından beri temizlenmediyse.
 
Error — Geçerli bir Program3D nesnesi ayarlanmadıysa.
 
Error — Geçerli Dizin Arabelleği Ayarı Yok: Bir IndexBuffer3D nesnesi ayarlanmadıysa.
 
Error — Parametrelerdeki Sağlamlık Denetimi Başarısız Oldu: Çizilecek üçgen sayısı veya firstIndex izin verilen değerleri aşarsa.
 
RangeError — Bu Arabellekte Yeteri Kadar Dizin Yok: Dizinde çizilecek üçgenlerin sayısını tanımlayacak yeteri kadar dizin olmadığında.
 
Error — Oluşturmaya Bağlı Örnek Bağlar Dokusu: Oluşturma hedefi bir doku olduğunda ve bu doku geçerli parça programının doku girdisine atandığında.
 
Error — Örnek Bağlar Geçersiz Dokusu: Geçersiz bir doku, geçerli parça programının girdisi olarak belirtilir.
 
Error — Örnekleyici Biçimi, Doku Biçimiyle Eşleşmiyor: Doku, geçerli parça programına girdi olarak atandığında ve örnekleyici kaydı için belirtilen biçimden farklı bir biçime sahip olduğunda. Örneğin, bir 2B dokusu küp dokusu örnekleyicisine atanır.
 
Error — Örnek Bağlar Tanımlanmayan Dokusu: Geçerli parça programı ayarlanmayan (setTextureAt() kullanarak) bir doku kaydına erişiyor.
 
Error — Aynı Doku İçin Aynı Parametreler Gereklidir: Bir doku birden fazla örnekleyici kaydı için kullanılıyorsa örnekleyicilerin tamamının ayarlarının aynı olması gerekir. Örneğin, bir örnekleyiciyi kelepçelemek bir diğerini de sarmak üzere ayarlayamazsınız.
 
Error — Doku Bağlı Ancak Kullanılmıyor: Bir doku gölgelendirici bir girdi olarak belirlenmiş ancak kullanılmıyor.
 
Error — Akış Kullanılmıyor: Bir köşe arabelleği, köşe niteliği girdisine atanır ancak köşe programı, karşılık gelen kayda başvurmaz.
 
Error — Akış Geçersiz: Bir köşe programı girdisine atanan VertexBuffer3D nesnesi geçerli bir nesne değildir.
 
RangeError — Akışta Yeteri Kadar Köşe Noktası Yok: Belirtilen üçgenleri çizmek için veri sağlayan bir köşe arabelleğinde yeterli miktarda veri yoktur.
 
RangeError — Akış Köşesi Kenar Uzaklığı Sınırı Aştı: setVertexBufferAt() çağrısında belirtilen kenar uzaklığı negatiftir veya arabellek sınırını aşmıştır.
 
Error — Akış Okunuyor Ancak Ayarlı Değil: Geçerli köşe programı tarafından kullanılan bir köşe niteliği ayarlanmamıştır (setVertexBufferAt() kullanarak).

İlgili API Öğeleri


Örnek  ( Bu örnek nasıl kullanılır? )

Aşağıdaki sınıf, bir Stage3D görünüm penceresine sahne alanında iki üçgen çizer. Üçgenler, başlangıç noktasında (0,0,0) bulunan bir köşeyi paylaşır.

Üçgenler, köşe arabelleğini ve dizin arabelleğini kullanarak tanımlanır. Köşe arabelleği, her bir üçgen köşesi için konum ve renk bilgilerini içerir. Dizin arabelleği, köşe arabelleğine yönelik dizinler içerir. Üç dizin bir üçgeni tanımlar. Örneğin, köşe arabelleğindeki ilk üç noktadan oluşan bir üçgen, dizin arabelleğinde 0,1,2 olarak listelenir.

Bu basit örnekte, herhangi bir 3B dönüştürme işlemi gerçekleştirilmez. Yalnızca kurallı görüntüleme alanındaki (2x2x1 birim hacim) nesneler görüntülenebilir ve üçgenlerin koordinatlarının bu alan içinde olduğu tanımlanır. Ancak tipik bir 3B sahnesini oluştururken, oluşturulacak nesneleri "world" koordinat sisteminden bu görüntüleme alanına bir perspektif veya ortografik izdüşüm kullanarak yansıtırsınız.

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

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: AIR 20.0

Belirtilen örnek üçgenleri, geçerli arabellekleri ve bu Context3D nesnesinin durumunu kullanarak oluşturun.

Her bir örneğin her üçgeni için, üçgen köşeleri köşe gölgelendirici programıyla işlenir ve üçgen yüzeyi piksel gölgelendirici programıyla işlenir. Her piksel için piksel programının çıktı rengi, şablon işlemlerine, derinlik testine, kaynak ve hedef alfa değerine ve geçerli karışım moduna bağlı olarak oluşturma hedefine çekilir. Oluşturma hedefi ana oluşturma arabelleği veya bir doku olabilir.

Ayırma etkinse (setCulling() yöntemiyle) piksel programı çalıştırılmadan önce üçgenler sahneden atılabilir. Şablon ve derinlik testi etkinse, oluşturma hedefini güncellemeden piksel programının çıktı pikselleri atılabilir. Buna ek olarak, piksel programı, bir piksel için bir rengin çıktısını vermemeye karar verebilir.

Oluşturulan örnek üçgenler, siz present() yöntemini çağırmadan görünüm penceresinde görüntülenmez. Her present() çağrısından sonra ve ilk drawTrianglesInstanced() çağrısından önce clear() yönteminin çağrılması gerekir, aksi takdirde oluşturma başarısız olur.

enableErrorChecking öğesi false olduğunda bu işlev anında döndürülür, sonuçları beklemez ve yalnızca bu Context3D örneği atılmışsa veya çok fazla çizim çağrısı varsa istisnalar atar. Oluşturma bağlamı durumu geçersizse, oluşturma sessizce başarısız olur. enableErrorChecking özelliği true değerine sahip olduğunda, bu işlev üçgenler çizildikten sonra döndürülür ve tüm çizim hataları ve geçersiz bağlam durumları için istisnalar atar.

Örneği oluşturulan ara bellek SetVertexAt() ile yanlış bir şekilde sıralanırsa bu yöntem bir özel durum oluşturabilir. Örneğin, Direct 3D 9 ile, dizini oluşturulan geometri verileri ve çizilecek örnek sayısı her zaman SetStreamSourceFreq() API'si ile akışta sıfır olarak ayarlanmalıdır.

Bu durum, CreateVertexBufferForInstance() kullanılarak oluşturulan köşe ara belleğinin, köşe gölge programına girdi olarak SetVertexBufferAt() ile düzenlenirken en küçük dizin numarasını almaması gerektiği anlamına gelir. CreateVertexBuffer() kullanılarak oluşturulan köşe ara belleğine, CreateVertexBufferForInstance() öğesinden daha küçük bir dizin numarası verilmelidir. Genel olarak, geometri verileri, SetVertexBufferAt() ile örnek başına verilerin önüne yerleştirilmelidir.

Parametreler

indexBuffer:IndexBuffer3D — oluşturulacak köşe noktalarına başvuruda bulunan bir köşe dizini kümesi.
 
numInstances:int — oluşturulacak örnek sayısı.
 
firstIndex:int (default = 0) — oluşturulmak üzere seçilmiş ilk köşe dizininin dizini. Varsayılan 0.
 
numTriangles:int (default = -1) — oluşturulacak üçgen sayısı. Her üçgen üç dizin kullanır. Dizin arabelleğindeki tüm üçgenleri çizmek için -1 değerini iletir. Varsayılan -1.


Atar
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?
 
Error — Bu yöntemin present() öğesine yönelik çağrılar arasında çok fazla çağrılması durumunda. En fazla çağrı sayısı 32.768'dir.
 
Error — Standart Genişletilmiş Profil veya Üzerini gerektirir: istenen profil standart genişletilmiş profilden az olduğunda bu yöntem çağrılırsa.
 
Error — Bu yöntem negatif numInstances ile çağrılırsa.

Aşağıdaki hatalar yalnızca enableErrorChecking özelliği true olduğunda atılır.

 
Error — Çizimden Önce Temizlemek Gerekir: Arabellek son present() çağrısından beri temizlenmediyse.
 
Error — Geçerli bir Program3D nesnesi ayarlanmadıysa.
 
Error — Geçerli Dizin Arabelleği Ayarı Yok: Bir IndexBuffer3D nesnesi ayarlanmadıysa.
 
Error — Parametrelerdeki Sağlamlık Denetimi Başarısız Oldu: Çizilecek üçgen sayısı veya firstIndex izin verilen değerleri aşarsa.
 
RangeError — Bu Arabellekte Yeteri Kadar Dizin Yok: Dizinde çizilecek üçgenlerin sayısını tanımlayacak yeteri kadar dizin olmadığında.
 
Error — Oluşturmaya Bağlı Örnek Bağlar Dokusu: Oluşturma hedefi bir doku olduğunda ve bu doku geçerli parça programının doku girdisine atandığında.
 
Error — Örnek Bağlar Geçersiz Dokusu: Geçersiz bir doku, geçerli parça programının girdisi olarak belirtilir.
 
Error — Örnekleyici Biçimi, Doku Biçimiyle Eşleşmiyor: Doku, geçerli parça programına girdi olarak atandığında ve örnekleyici kaydı için belirtilen biçimden farklı bir biçime sahip olduğunda. Örneğin, bir 2B dokusu küp dokusu örnekleyicisine atanır.
 
Error — Örnek Bağlar Tanımlanmayan Dokusu: Geçerli parça programı ayarlanmayan (setTextureAt() kullanarak) bir doku kaydına erişiyor.
 
Error — Aynı Doku İçin Aynı Parametreler Gereklidir: Bir doku birden fazla örnekleyici kaydı için kullanılıyorsa örnekleyicilerin tamamının ayarlarının aynı olması gerekir. Örneğin, bir örnekleyiciyi kelepçelemek bir diğerini de sarmak üzere ayarlayamazsınız.
 
Error — Doku Bağlı Ancak Kullanılmıyor: Bir doku gölgelendirici bir girdi olarak belirlenmiş ancak kullanılmıyor.
 
Error — Akış Kullanılmıyor: Bir köşe arabelleği, köşe niteliği girdisine atanır ancak köşe programı, karşılık gelen kayda başvurmaz.
 
Error — Akış Geçersiz: Bir köşe programı girdisine atanan VertexBuffer3D nesnesi geçerli bir nesne değildir.
 
RangeError — Akışta Yeteri Kadar Köşe Noktası Yok: Belirtilen üçgenleri çizmek için veri sağlayan bir köşe arabelleğinde yeterli miktarda veri yoktur.
 
RangeError — Akış Köşesi Kenar Uzaklığı Sınırı Aştı: setVertexBufferAt() çağrısında belirtilen kenar uzaklığı negatiftir veya arabellek sınırını aşmıştır.
 
Error — Akış Okunuyor Ancak Ayarlı Değil: Geçerli köşe programı tarafından kullanılan bir köşe niteliği ayarlanmamıştır (setVertexBufferAt() kullanarak).
 
Error — Köşe Arabellek Akışı Örnekler İçin Yeterli Öğe İçermiyor: Bir köşe arabellek akışı örnek sayısı için yeterli öğe içermiyorsa.
 
Error — Örnekler için Köşe Ara Bellek Akışı En Küçük Dizin Özniteliği Kaydı ile Yanlış Ayarlanmış: CreateVertexBuffer() kullanılarak oluşturulan köşe ara belleğine, CreateVertexBufferForInstance() ile oluşturulan köşe ara belleğinden daha büyük bir dizin numarası verilmişse.

İlgili API Öğeleri


Örnek  ( Bu örnek nasıl kullanılır? )

Aşağıdaki sınıf birden çok çizim çağrısı yerine tek bir çizim çağrısı kullanarak özellik örnekli çizim ile üç üçgen çizmektedir.
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.
        }    
    }
}

Aşağıdaki sınıf birden çok çizim çağrısı yerine tek bir çizim çağrısı kullanarak özellik örnekli çizim ile üç üçgen çizmektedir.
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

()yöntem 
public function present():void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Geri oluşturma arabelleğini görüntüler.

present() yöntemini çağırmak son present() çağrısından itibaren gerçekleştirilen tüm oluşturma işlemlerinin sonuçlarını görünür kılar ve yeni bir oluşturma döngüsü başlatır. present öğesini çağırdıktan sonra başka bir drawTriangles() çağrısı yapmadan önce clear() öğesini çağırmanız gerekir. Aksi takdirde bu işlev oluşturma arabelleğini alternatif olarak sarı ve yeşille temizler veya enableErrorChecking, true olarak ayarlandıysa bir istisna atılır.

Ayrıca, present() çağrısı tıpkı setRenderToBackBuffer() öğesini çağırmak gibi oluşturma hedefini sıfırlar.


Atar
Error — Çizimden Önce Temizlenmesi Gerekir: Bir önceki present() çağrısından beri clear() çağırılmadıysa. (Art arda iki kere present() öğesini çağırmaya, aralarında clear() çağrısı yapmadan izin verilmez.)
 
Error — 3768: Stage3D API, arka planda çalışma sırasında kullanılmayabilir.

setBlendFactors

()yöntem 
public function setBlendFactors(sourceFactor:String, destinationFactor:String):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Mevcut renkle yapılan bir çizim işleminin çıktı rengini karıştırmada kullanılan faktörleri belirler.

Piksel gölgelendirici programının çıktı (kaynak) rengi, o pikseldeki mevcut (hedef) renkle aşağıdaki formüle göre birleştirilir:

result color = (source color * sourceFactor) + (destination color * destinationFactor)

Hedef renk, o piksel için oluşturma arabelleğindeki geçerli renktir. Bu, en son yapılan clear() çağrısı ve araya giren drawTriangles() çağrılarının sonucudur.

Kaynak ve hedef renkler birbirine eklenmeden bunları çarpmak için kullanılan faktörleri ayarlamak için setBlendFactors() yöntemini kullanın. Varsayılan karışım faktörleri sourceFactor = Context3DBlendFactor.ONE ile destinationFactor = Context3DBlendFactor.ZERO şeklindedir ve kaynak rengin hedef rengi geçersiz kılmasıyla sonuçlanır (bir başka deyişle, iki rengin karışması gerçekleşmez). Normal alfa karıştırması için sourceFactor = Context3DBlendFactor.SOURCE_ALPHA ve destinationFactor = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA öğelerini kullanın.

Bu işlevin parametrelerini ayarlamak için Context3DBlendFactor sınıfında tanımlanan sabitleri kullanın.

Parametreler

sourceFactor:String — Kaynak rengin çarpılacağı faktör. Varsayılan olarak Context3DBlendFactor.ONE değerini alır.
 
destinationFactor:String — Hedef rengin çarpılacağı faktör. Varsayılan olarak Context3DBlendFactor.ZERO değerini alır.


Atar
Error — Geçersiz Numaralandırma: sourceFactor veya destinationFactor Context3DBlendFactor sınıfında tanımlanan değerlerden birisi olmadığında.

İlgili API Öğeleri


Örnek  ( Bu örnek nasıl kullanılır? )

Aşağıdaki sınıf çeşitli karışım faktörleri gösterir. Örnek, oluşturucu arabelleğine dört farklı renkte dikdörtgen çizer. Bu dikdörtgen kümesi, karışım "hedefidir". Sonrasında, kaynak ve hedef karışım modları ayarlanır ve daha büyük bir dikdörtgen, karışım "kaynağı" çizilir. Kaynak karışım modları içinde dolaşmak için "1" ve "2" tuşlarını kullanın. Hedef karışım modları içinde dolaşmak için "3" ve "4" tuşlarını kullanın.
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

()yöntem 
public function setColorMask(red:Boolean, green:Boolean, blue:Boolean, alpha:Boolean):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Oluşturma arabelleğine renk yazarken kullanılan maskeyi ayarlar.

Oluşturma arabelleğine bir renk yazıldığında, yalnızca karşılık gelen renk maske parametresi true olan renk bileşenleri güncellenir. Örneğin setColorMask( true, false, false, false ) ayarını çağırırsanız, siz renk maskesini tekrar değiştirene kadar yalnızca bir rengin kırmızı bileşeni arabelleğe yazılır. Renk maskesi clear() yönteminin davranışını etkilemez.

Parametreler

red:Boolean — kırmızı kanalında yapılacak değişiklikleri engellemek için false olarak ayarlayın.
 
green:Boolean — yeşil kanalında yapılacak değişiklikleri engellemek için false olarak ayarlayın.
 
blue:Boolean — mavi kanalında yapılacak değişiklikleri engellemek için false olarak ayarlayın.
 
alpha:Boolean — alfa kanalında yapılacak değişiklikleri engellemek için false olarak ayarlayın.


Örnek  ( Bu örnek nasıl kullanılır? )

Aşağıdaki örnek, renk maskesi ayarlama efektini gösterir. Örnek, aynı renkte iki üçgen çizer. Üst üçgen maske ayarlanmadan önce çizilir ve böylece beyaz olarak oluşturulur. Alt üçgen, kırmızı kanal hariç tüm kanallar çizildikten sonra maskelenir. Yalnızca kırmızı kanal güncellenebildiğinden beyaz üçgen kırmızı olarak oluşturulur.
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

()yöntem 
public function setCulling(triangleFaceToCull:String):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Üçgen ayırma modunu ayarlar.

Üçgenler, görüntüleme düzlemine göre olan yönlendirmelerine dayanarak görüntü oluşturma ardışık düzeninden önceden çıkarılabilir. Doğru bir şekilde seçmek için köşe sayısını modelin dış kısmından göründüğü şekilde tutarlı bir şekilde (saat yönünde veya saat yönünün tersine) belirtin.

Parametreler

triangleFaceToCull:String — ayırma modu. Context3DTriangleFace sınıfında tanımlanan sabitlerden birini kullanın.


Atar
Error — Geçersiz Numaralandırma Hatası: triangleFaceToCull değeri, Context3DTriangleFace sınıfında tanımlanan değerlerden biri olmadığında.

İlgili API Öğeleri

setDepthTest

()yöntem 
public function setDepthTest(depthMask:Boolean, passCompareMode:String):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Derinlik testi için kullanılan karşılaştırma türünü ayarlar.

Piksel gölgelendirici programından çıkan kaynak piksel çıktısının derinliği, derinlik arabelleğindeki geçerli değerle karşılaştırılır. Karşılaştırma false olarak değerlendirme yaparsa kaynak piksel atılır. true olarak değerlendirme yaparsa kaynak piksel, oluşturma hattının bir sonraki adımı olan şablon testi tarafından işlenir. Ayrıca, depthMask parametresi true olarak ayarlandığı sürece derinlik arabelleği, kaynak pikselin derinliğiyle güncellenir.

Kaynak ve hedef pikseller için derinlik değerlerini karşılaştırmak üzere kullanılan testi ayarlar. Karşılaştırma true değerine sahip olduğunda kaynak piksel hedef pikselle birleştirilir. Karşılaştırma işleci, kaynak ve hedef piksel değerlerinin arasına bir içek işleci olarak bu şekilde uygulanır.

Parametreler

depthMask:Boolean — hedef derinlik değeri, değer true olduğunda kaynak pikselden güncellenir.
 
passCompareMode:String — derinlik karşılaştırma testi işlemi. Context3DCompareMode öğesinin değerlerinden biri.

İlgili API Öğeleri

    setFillMode

()yöntem 
public function setFillMode(fillMode:String):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: AIR 16

Oluşturma için kullanılan dolgu modunu ayarlayın. Arabirim yalnızca AIR masaüstünde kullanılabilir.

Parametreler

fillMode:String — değer WIREFRAME ise nesne bir çizgi ızgarası halinde gösterilir. değer SOLID ise nesne tek parçalı gölgeli poligonlar halinde gösterilir.

İlgili API Öğeleri

setProgram

()yöntem 
public function setProgram(program:Program3D):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Sonraki oluşturmada kullanmak üzere köşe ve parça programlarını ayarlar.

Parametreler

program:Program3D — Kullanılacak köşe ve parça programlarını temsil eden Program3D nesnesi

İlgili API Öğeleri


Örnek  ( Bu örnek nasıl kullanılır? )

Bu örnek, oluşturma bağlamına bir köşe çiftinin ve piksel programlarının nasıl oluşturulacağını, yükleneceğini ve etkinleştirileceğini gösterir. renderContext nesnesinin, bir Context3D sınıfı örneği olduğunu unutmayın. Örnekteki programlar Adobe Grafikleri Çevirici Dili'nde (AGAL) yazılmıştır.
//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

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.1, AIR 3.1

Gölgelendirici programlar tarafından kullanılması için ByteArray öğesinde saklanan değerleri kullanarak sabitler ayarlar.

Köşe veya parça programından erişilebilecek sabitleri ayarlar.

Parametreler

programType:String — Context3DProgramType öğelerinden biri.
 
firstRegister:int — ayarlanacak ilk gölgelendirici programı sabitinin dizini.
 
numRegisters:int — ayarlanacak kayıt sayısı. Her kayıt, dört kayan değer olarak okunur.
 
data:ByteArray — kaynak ByteArray nesnesi
 
byteArrayOffset:uint — okuma için ByteArray'e olan uzaklık


Atar
TypeError data öğesi boş olduğunda kNullPointerError.
 
RangeError — Gölgelendirici sabitlerinin maksimum sayısından daha fazlası ayarlanmaya çalışıldığında kConstantRegisterOutOfBounds.
 
RangeError byteArrayOffset değeri data uzunluğu ile eşit veya daha büyükse veya data - byteArrayOffset içindeki öğeler numRegisters*16 değerinden küçükse kBadInputSize

İlgili API Öğeleri

setProgramConstantsFromMatrix

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Bir Matrix3D öğesinde saklanan değerleri kullanarak sabitleri gölgelendirici programları tarafından kullanılmak üzere ayarlayın.

Bir gölgelendirici programına matris iletmek üzere bu işlevi kullanın. İşlev, köşe veya parça programının kullandığı 4 sabit kayıt ayarlar. Matris, kayıtlara satırlar halinde atanır. İlk sabit kaydı, matrisin üst satırına atanır. Köşe programı için 128, parça programı için de 28 kayıt ayarlayabilirsiniz.

Parametreler

programType:StringContext3DProgramType.VERTEX veya Context3DProgramType.FRAGMENT olmak üzere gölgelendirici programının türü.
 
firstRegister:int — ayarlanacak ilk sabit kaydının dizini Bir Matrix3D öğesinin 16 değeri olduğundan dört kayıt ayarlanır.
 
matrix:Matrix3D — sabit değerleri içeren matris.
 
transposedMatrix:Boolean (default = false) — değer true ise matris girişleri kayıtlara sıraları değiştirilmiş şekilde kopyalanır. Varsayılan değer false şeklindedir.


Atar
TypeError — Boş İşaretçi Hatası: matrix null olduğunda.
 
RangeError — Sabit Kaydı Sınırı Aştı: Gölgelendirici sabit kayıtlarının maksimum sayısından daha fazla ayarlamaya çalışıldığında.

Daha fazla bilgi

İlgili API Öğeleri

setProgramConstantsFromVector

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Gölgelendirici programları için sabit girdilerini ayarlar.

Bir köşe veya parça gölgelendirici programı tarafından erişilecek sabit dizisi ayarlar. Program3D içinde ayarlanan sabitlere gölgelendirici programlarından sabit kayıtları olarak erişilir. Her sabit kaydı 4 kayan nokta değerinden (x, y, z, w) oluşur. Bu nedenle her kayıt, verinin Vector öğesinde 4 giriş gerektirir. Köşe programı ve parça programı için ayarlayabileceğiniz kayıt sayısı Context3DProfile değerine bağlıdır.

Parametreler

programType:StringContext3DProgramType.VERTEX veya Context3DProgramType.FRAGMENT olmak üzere gölgelendirici programının türü.
 
firstRegister:int — ayarlanacak ilk sabit kaydının dizini
 
data:Vector.<Number> — kayan nokta sabit değerleri. data içinde en az numRegisters 4 öğe olmalıdır.
 
numRegisters:int (default = -1) — ayarlanacak sabit sayısı. Mevcut verilerin tamamını kullanacak şekilde yeterli sayıda kayıt ayarlamak üzere varsayılan değer olarak -1 belirtin.


Atar
TypeError — Boş İşaretçi Hatası: datanull olduğunda.
 
RangeError — Sabit Kaydı Sınırı Aştı: Gölgelendirici sabit kayıtlarının maksimum sayısından daha fazla ayarlamaya çalışıldığında.
 
RangeError — Hatalı Giriş Boyutu: data içindeki öğe sayısı numRegisters*4 değerinden küçük olduğunda

Daha fazla bilgi

İlgili API Öğeleri

setRenderToBackBuffer

()yöntem 
public function setRenderToBackBuffer():void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Geri oluşturma arabelleğini, oluşturma hedefi olarak ayarlar. drawTriangles() ve clear() yöntemlerinden sonraki çağrılar, geri arabellekte güncellemelere neden olur. setRenderToTexture() yöntemini kullandıktan sonra normal oluşturmaya devam etmek için bu yöntemi kullanın.

setRenderToTexture

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Belirtilen dokuyu oluşturma hedefi olarak ayarlar.

drawTriangles() ve clear() yöntemlerinden sonra yapılan çağrılar geri arabellek yerine belirtilen dokuyu günceller. Mipmap'ler otomatik olarak oluşturulur. Geri arabellekte normal oluşturmaya devam etmek için setRenderToBackBuffer() öğesini kullanın.

Çizim öncesinde temizleme gerekli değil. Temizleme işlemi yoksa oluşturma içeriği saklanır. Derinlik arabelleği ve kalıp arabelleği de temizlenmez. Ancak birinci çizim sırasında temizlenmeye zorlanır. present() öğesini çağırmak hedefi geri arabelleğe sıfırlar.

Parametreler

texture:flash.display3D.textures:TextureBase — oluşturulacak hedef doku. Geri arabelleğe oluşturmaya devam etmek için null değerine ayarlayın (ayrıca setRenderToBackBuffer() ve present öğeleri de hedefi geri arabelleğe sıfırlar).
 
enableDepthAndStencil:Boolean (default = false)true ise, derinlik ve şablon testi kullanılabilir durumdadır. false ise, tüm derinlik ve şablon durumu sonraki çizim işlemleri için yok sayılır.
 
antiAlias:int (default = 0) — kenar yumuşatma özelliği. Kenar yumuşatma özelliğini devre dışı bırakmak için 0'ı kullanın; daha yüksek değerler kenar yumuşatma özelliğini iyileştirir ancak daha fazla hesaplama gerektirir. Değer şu anda mobil platformu ve yazılım oluşturma bağlamı tarafından yok sayılıyor.
 
surfaceSelector:int (default = 0) — dokunun hangi öğesinin güncelleneceğini belirtir. Doku nesnelerinde bir yüzey olduğundan varsayılan değer olarak 0 belirtmelisiniz. CubeTexture nesnelerinde altı yüzey olduğundan 0 ile 5 arasında bir tam sayı belirtebilirsiniz.
 
colorOutputIndex:int (default = 0) — Çıktı rengi kaydı. Sınırlanmış veya taban çizgisi modu için 0 olmalıdır. Aksi takdirde, çıktı rengi kaydını belirtir.


Atar
ArgumentError — uyumsuz bir surfaceSelector parametresi için. Değer 2B dokuları için 0, küp eşlemeleri içinse 0-5 olmalıdır.
 
ArgumentError texture, TextureBase sınıfından (Texture veya CubeTexture sınıfları) türemez.
 
ArgumentError colorOutputIndex değeri 0 ile 3 arasındaki bir tamsayı olmalıdır.
 
ArgumentError — bu çağrı, standart profil veya üzeri ile oluşturulmuş bir Context3D gerektirir.

İlgili API Öğeleri

setSamplerStateAt

()yöntem 
public function setSamplerStateAt(sampler:int, wrap:String, filter:String, mipfilter:String):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11.6, AIR 3.6

Usually doku örnekleyici durumunu manuel olarak.

Doku örnekleme durumu genellikle setProgram çağrıldığında ayarlanır. Ancak, bu işlev ile doku örnekleyici durumunu geçersiz kılabilirsiniz. Programın örnekleyici durumunu değiştirmesini istemiyorsanız AGAL'da ignoresamnpler bit'ini ayarlayın ve bu işlevi kullanın.

Parametreler

sampler:int — örnekleyici Kullanılacak örnekleyici kaydı. AGAL içindeki örnekleyici kaydına eşlenir.
 
wrap:String — Sarma modu. Context3DWrapMode içinde tanımlanır. Varsayılan değer "tekrarla" şeklindedir.
 
filter:String — Doku filtreleme modu. Context3DTextureFilter içinde tanımlanır. Varsayılan değer "en yakın" şeklindedir.
 
mipfilter:String — Mip eşlemi filtresi. Context3DMipFilter içinde tanımlanır. Varsayılan değer "yok" şeklindedir.


Atar
Error — örnekleyici aralık dışında
 
Error — sarma, filtre, mipfilter yanlış numaralandırması
 
Error — Nesne Atıldı: Bu Context3D nesnesi dispose() çağrısıyla mı yoksa temel oluşturma donanımı kaybolduğu için mi atıldı?

İlgili API Öğeleri

setScissorRectangle

()yöntem 
public function setScissorRectangle(rectangle:Rectangle):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Çizim maskesinin türü olan bir makas dikdörtgeni ayarlar. Oluşturucu yalnızca makas dikdörtgeninin içindeki alana çizer. Makaslama, temizleme işlemlerini etkilemez.

Makaslamayı kapatmak için null iletin.

Parametreler

rectangle:Rectangle — İçinde çizim yapılacak dikdörtgen. Dikdörtgen konumu ve boyutlarını piksel olarak belirtin. Koordinat sistemi orijini, aşağıya ve sağa doğru artan pozitif değerlerle birlikte görünüm penceresinin sol üst köşesindedir (normal Flash görüntüleme koordinat sistemi ile aynı).


Örnek  ( Bu örnek nasıl kullanılır? )

Aşağıdaki sınıf, sahne alanı üzerinde 640x480 piksel görünümü bağlantı noktasına iki üçgen çizer. Üçgenler, başlangıç noktasında (0,0,0) bulunan bir köşeyi paylaşır.

Üçgenler, köşe arabelleğini ve dizin arabelleğini kullanarak tanımlanır. Köşe arabelleği, her bir üçgen köşesi için konum ve renk bilgilerini içerir. Dizin arabelleği, köşe arabelleğine yönelik dizinler içerir. Üç dizin bir üçgeni tanımlar. Örneğin, köşe arabelleğindeki ilk üç noktadan oluşan bir üçgen, dizin arabelleğinde 0,1,2 olarak listelenir.

Bu basit örnekte, herhangi bir 3B dönüştürme işlemi gerçekleştirilmez. Yalnızca kanonik görüntüleme alanındaki (başlangıç noktası merkezli 2x2x2 küp hacmi) nesneler görüntülenir. Ancak tipik bir 3B sahnesini oluşturulurken, oluşturulacak nesneleri bu görüntüleme alanına bir perspektif veya ortografik izdüşüm kullanarak yansıtırsınız.

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

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Şablon modunu ve işlemi ayarlar.

8 bit şablon başvurusu değeri her çizim çağrısıyla ilişkilendirilebilir. Görüntü oluşturma sırasında, başvuru değeri çerçeve arabelleğinde önceden saklanmış değerlere göre test edilebilir. Testin sonucu çizim eylemini ve saklı şablon değerinin güncellenip güncellenmediğini veya nasıl güncellendiğini kontrol edebilir. Ayrıca, derinlik testi şablon testinin gerçekleştirilip gerçekleştirilmediğini de kontrol eder. Başarısız olan bir derinlik testi ayrıca şablon arabelleğinde gerçekleştirilen eylemi denetlemek için de kullanılabilir.

Piksel işleme komut zincirinde önce derinlik testi gerçekleştirilir. Derinlik desti başarısız olursa, şablon arabelleğini güncelleme eylemi gerçekleştirilebilir. Ancak, şablon arabelleği değeriyle ilgili daha fazla değerlendirme yapılamaz. Derinlik testi başarılı olursa, ardından şablon testi gerçekleştirilir. Şablon testinin sonucuna göre alternatif işlemler uygulanabilir.

Şablon başvurusu değeri setStencilReferenceValue() öğesi kullanılarak ayarlanır.

Parametreler

triangleFace:String (default = "frontAndBack") — şablon işlemine katkıda bulunmasına izin verilen üçgen yönlendirmeleri. Context3DTriangleFace öğelerinden biri.
 
compareMode:String (default = "always") — geçerli şablon başvuru değerini ve hedef piksel şablonu değerini karşılaştırmak için kullanılan test işleci. Karşılaştırma true ise, hedef piksel rengi ve derinlik güncellemesi gerçekleştirilir. Şablon eylemleri aşağıdaki eylem parametrelerinde istenildiği şekilde gerçekleştirilir. Karşılaştırma işleci, kaynak ve hedef başvuru değerlerinin arasına bir içek işleci olarak bu şekilde uygulanır (sahte kod şeklinde: stencilReference OPERATOR, stencilbuffer ise geçer). Context3DCompareMode sınıfında tanımlanan sabitlerden birini kullanın.
 
actionOnBothPass:String (default = "keep") — hem derinlik hem de şablon karşılaştırmaları başarılı olduğunda gerçekleştirilecek eylem. Context3DStencilAction sınıfında tanımlanan sabitlerden birini kullanın.
 
actionOnDepthFail:String (default = "keep") — derinlik karşılaştırması başarısız olduğunda gerçekleştirilecek eylem. Context3DStencilAction sınıfında tanımlanan sabitlerden birini kullanın.
 
actionOnDepthPassStencilFail:String (default = "keep") — derinlik karşılaştırması başarılı olduğunda ve şablon karşılaştırması başarısız olduğunda gerçekleştirilecek eylem. Context3DStencilAction sınıfında tanımlanan sabitlerden birini kullanın.


Atar
Error — Geçersiz Numaralandırma Hatası: triangleFace değeri, Context3DTriangleFace sınıfında tanımlanan değerlerden biri olmadığında.
 
Error — Geçersiz Numaralandırma Hatası: compareMode değeri, Context3DCompareMode sınıfında tanımlanan değerlerden biri olmadığında.
 
Error — Geçersiz Numaralandırma Hatası: actionOnBothPass, actionOnDepthFail veya actionOnDepthPassStencilFail, Context3DStencilAction sınıfında tanımlanan değerlerden biri olmadığında.

İlgili API Öğeleri


Örnek  ( Bu örnek nasıl kullanılır? )

Aşağıdaki sınıf, şablon çizimini ve sonraki çizim işlemleri için bu şablonu maske olarak kullanmayı gösterir. Örnek, aşağıdaki adımları gerçekleştirir:
  • Şablon arabelleğini 0 yapar.
  • Şablon testi geçtiğinde, artacak şablon eylemini ayarlar.
  • Şablon başvuru değerini 0 olarak ayarlar.
  • Üçgen maskeyi çizer. Şablon arabelleği 0 olarak temizlendiğinden ve başvuru değeri 0 olduğundan üçgenin çizildiği her yerde şablon testi geçer. Sonuç olarak, üçgen maskenin çizildiği yerde şablon arabelleği 1'e artırılır.
  • Sonraki çizim işlemlerinin şablon arabelleğini değiştirmemesini sağlamak için korunacak şablon eylemini değiştirir.
  • Tam ekran bir dikdörtgen çizer (birden fazla renkli). Şablon başvuru değeri hala 0 olduğundan şablon testi, maskelenmiş alanda başarısız olur. Bu nedenle dikdörtgen, maskelenmiş bölge hariç her yerde çizim yapar.
  • Şablon başvuru değerini 1 olarak değiştirir.
  • Başka bir tam ekran dikdörtgen (kırmızı) çizer. Artık şablon testi, 1'e artırılmış olan maskelenmiş alan hariç her yerde başarısız olur. Bu nedenle dikdörtgen, yalnızca maskelenmiş bölgede çizim yapar.

Ana adımları sıralı olarak görmek için fareyi örneğin üzerine getirin.

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

()yöntem 
public function setStencilReferenceValue(referenceValue:uint, readMask:uint = 255, writeMask:uint = 255):void

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Şablon testleri için kullanılan şablon karşılaştırma değerini ayarlar.

Başvuru değerinin yalnızca daha düşük olan 8 bitleri kullanılır. Şablon arabellek değerinin uzunluğu da 8 bittir. Şablon arabelleğini bir bit alanı olarak kullanmak için readMask ve writeMask öğelerini kullanın.

Parametreler

referenceValue:uint — başvuru değeri karşılaştırma testlerinde kullanılan 8 bitlik başvuru değeri.
 
readMask:uint (default = 255) — hem geçerli şablon arabellek değerine hem de karşılaştırmadan önceki başvuru değerine uygulanan 8 bitlik bir maske.
 
writeMask:uint (default = 255) — şablon arabelleğini güncellemeden önce başvuru değerine uygulanan 8 bitlik bir maske.

İlgili API Öğeleri

setTextureAt

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Parça programının doku girdisi kaydı olarak kullanılacak dokuyu belirtir.

Bir parça programı en fazla sekiz doku nesnesinden bilgi okuyabilir. Parça programının kullandığı örnekleyici kayıtlarından birine Texture veya CubeTexture nesnesi atamak üzere bu işlevi kullanın.

Not: Etkin parça programını daha az sayıda doku kullanan bir gölgelendiriciyle değiştirirseniz (setProgram ile) kullanılmayan kayıtları null değerine ayarlayın.

         setTextureAt( 7, null );
         

Parametreler

sampler:int — örnekleyici kaydı dizini, 0 ila 7 arası bir değer
 
texture:flash.display3D.textures:TextureBase — Texture veya CubeTexture örneği olmak üzere kullanılabilir hale getirilecek doku nesnesi.

Daha fazla bilgi

İlgili API Öğeleri

Doku
CubeTexture

setVertexBufferAt

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

Dil Sürümü: ActionScript 3.0
Çalışma Zamanı Sürümleri: Flash Player 11, AIR 3

Tek bir köşe gölgelendirici programına ait bir girdiye hangi veri bileşenlerinin karşılık geldiğini belirtir.

VertexBuffer3D arabelleğindeki her köşe için tanımlanan verilerin hangi bileşenlerin, köşe programındaki hangi girdilere ait olduğunu belirlemek üzere setVertexBufferAt yöntemini kullanın. Köşe başına ne kadar veri gerektiğini köşe programının geliştiricisi belirler. Veri 1 veya daha fazla VertexBuffer3D akışından köşe gölgelendiricisi programının nitelik kayıtlarına eşlenir.

Köşe gölgelendiricisi tarafından tüketilen en küçük veri birimi 32 bitlik veridir. Köşe akışına giden kenardan uzaklıklar 32 bit katları olarak belirtilir.

Örnek olarak, bir programcı her köşeyi aşağıdaki verilerle tanımlayabilir:
position:  x    float32
           y    float32
           z    float32
color:     r    unsigned byte
           g    unsigned byte
           b    unsigned byte
           a    unsigned byte
Köşenin bir VertexBuffer3D nesnesinde buffer olarak tanımlandığını varsayarsak bir köşe gölgelendiriciye aşağıdaki kodla atanmış olabilir:
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

Parametreler

index:int — Köşe gölgelendiricideki nitelik kaydı dizini (0 ila 7).
 
buffer:VertexBuffer3D — köşe gölgelendiriciye verilecek kaynak köşe verisini içeren arabellek.
 
bufferOffset:int (default = 0) — bu niteliğin okunmaya başlayacağı tek bir köşe için veri başlangıcının kenar uzaklığı. İlk nitelik olduğundan yukarıdaki örnekte konum verilerinin kenardan uzaklığı 0'dır; renk niteliği üç adet 32 bitlik konum değerini izlediğinden rengin kenardan uzaklığı ise 3'tür. Kenardan uzaklık 32 bitlik birimler halinde belirtilir.
 
format:String (default = "float4") — bu niteliğin veri türünü belirten Context3DVertexBufferFormat sınıfından bir değer.


Atar
Error — Geçersiz Numaralandırma: Biçim, Context3DVertexBufferFormat sınıfında tanımlanan değerlerden biri olmadığında.
 
RangeError — Nitelik Kaydı Sınırı Aştı: index parametresi 0 ila 7 aralığının dışına çıktığında. (Bir gölgelendirici en fazla sekiz köşe niteliği kaydı kullanabilir.)

Daha fazla bilgi

İlgili API Öğeleri

Context3DExample.as

Aşağıdaki sınıf, perspektif izdüşüm kullanarak dönen bir küp çizer.
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 ]Niçin İngilizce?
ActionScript 3.0 Başvurusu'ndaki içerik İngilizce görünür

ActionScript 3.0 Başvurusu'nun tüm bölümleri tüm dillere çevrilmemiştir. Bir dil öğesi çevrilmediğinde İngilizce görünür. Örneğin, ga.controls.HelpBox sınıfı hiçbir dile çevrilmez. Bu nedenle, başvurunun Türkçe versiyonunda ga.controls.HelpBox sınıfı İngilizce görünür.