Adobe® Flash® Platform 用 ActionScript® 3.0 リファレンスガイド
ホーム  |  パッケージおよびクラスリストの非表示 |  パッケージ  |  クラス  |  新機能  |  索引  |  付録  |  英語で表示される理由
フィルター: AIR 30.0 以前, Flash Player 30.0 以前, Flash Lite 4
Flex 4.6 以前, Flash Pro CS6 以前
フィルターを非表示
flash.display3D 

Context3D  - AS3

パッケージx

トップレベル
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

言語エレメント

グローバル定数
グローバル関数
演算子
ステートメント、キーワード、ディレクティブ
特殊な型

付録

新機能
コンパイルエラー
コンパイラー警告
ランタイムエラー
ActionScript 3 への移行
サポートされている文字セット
MXML のみのタグ
モーション XML エレメント
Timed Text タグ
使用されなくなったエレメントのリスト
Accessibility Implementation 定数
ActionScript の例の使用方法
法律上の注意
パッケージflash.display3D
クラスpublic final class Context3D
継承Context3D Inheritance EventDispatcher Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

Context3D クラスでは、幾何学的に定義されたグラフィックをレンダリングするためのコンテキストを指定します。

レンダリングコンテキストには、描画面と、関連するリソースおよび状態が含まれます。可能であれば、レンダリングコンテキストでは、ハードウェアグラフィックスプロセッシングユニット(GPU)を使用します。これを使用できない場合、レンダリングコンテキストではソフトウェアを使用します(Context3D を使用したレンダリングがプラットフォームでサポートされていない場合は、Stage オブジェクトの stage3Ds プロパティに空のリストが含まれます)。

Context3D レンダリングコンテキストは、OpenGL ES 2 に非常によく似たプログラム可能なパイプラインですが、ハードウェアおよび GPU の様々なインターフェイスとの互換性を保つために抽象化されます。3D グラフィック用にデザインされているものの、レンダリングパイプラインでは、レンダリングが 3 次元であることは要求されません。したがって、適切な頂点およびピクセルのフラグメントプログラムを指定することにより、2D レンダラーを作成できます。3D、2D いずれの場合も、サポートされている幾何プリミティブは三角形だけです。

Stage3D オブジェクトの requestContext3D() メソッドを呼び出して、Context3D クラスのインスタンスを取得します。Context3D オブジェクトの数はステージごとに制限されており、Stage.stage3Ds リスト内の Stage3D ごとに 1 つだけです。コンテキストが作成されると、Stage3D オブジェクトでは context3DCreate イベントが送出されます。レンダリングコンテキストは、GPU を使用する別のアプリケーションがフォーカスされたときなど、いつでも破棄して再作成できます。context3DCreate イベントを複数受け取ることを想定してコードを作成する必要があります。関連する Stage3D インスタンスの x および y プロパティを使用して、ステージにレンダリング領域を位置付けます。

シーンをレンダリングして表示(Context3D オブジェクトを取得後)する場合の標準的な手順は次のとおりです。

  1. configureBackBuffer() を呼び出して、メインの表示バッファー属性を設定します。
  2. 以下を含むレンダリングリソースを作成して初期化します。
    • シーンのジオメトリを定義する頂点およびインデックスのバッファー
    • シーンをレンダリングするための頂点およびピクセルのプログラム(シェーダー)
    • テクスチャ
  3. フレームをレンダリングします。
    • シーン内のオブジェクトまたはオブジェクトのコレクションに合わせてレンダリング状態を設定します。
    • drawTriangles() メソッドを呼び出して一連の三角形をレンダリングします。
    • 次のオブジェクトグループ用にレンダリング状態を変更します。
    • drawTriangles() を呼び出して、オブジェクトを定義する三角形を描画します。
    • シーン全体がレンダリングされるまで、この手順を繰り返します。
    • present() メソッドを呼び出して、レンダリングされたシーンをステージに表示します。

レンダリングには次の制限が適用されます。

リソースの制限:

リソース数の上限メモリ合計
Vertex buffers 4096256 MB
Index buffers 4096128 MB
Programs 409616 MB
Textures 4096128 MB
Cube textures 4096256 MB

AGAL の制限:プログラムあたりオペコード 200 個まで。

描画の呼び出しの制限:present() 呼び出し 1 回につき drawTriangles() 呼び出し 32,768 回まで。

テクスチャには次の制限が適用されます。

AIR 32 ビットのテクスチャの制限:

Texture最大サイズGPU メモリの合計量
標準テクスチャ(ベースライン拡張以下) 2048 x 2048512 MB
標準テクスチャ(ベースライン拡張以上) 4096 x 4096512 MB
矩形テクスチャ(ベースライン拡張以下) 2048 x 2048512 MB
矩形テクスチャ(ベースライン拡張以上) 4096 x 4096512 MB
立方体テクスチャ 1024 x 1024256 MB

AIR 64 ビットのテクスチャの制限(デスクトップ):

Texture最大サイズGPU メモリの合計量
標準テクスチャ(ベースライン拡張以下) 2048 x 2048512 MB
標準テクスチャ(ベースライン拡張から標準) 4096 x 4096512 MB
標準テクスチャ(標準の拡張以上) 4096 x 40962048 MB
矩形テクスチャ(ベースライン拡張以下) 2048 x 2048512 MB
矩形テクスチャ(ベースライン拡張から標準) 4096 x 4096512 MB
矩形テクスチャ(標準の拡張以上) 4096 x 40962048 MB
立方体テクスチャ 1024 x 1024256 MB

512 MB がテクスチャの絶対限界です(ミップマップに必要なテクスチャメモリを含む)。ただし、立方体テクスチャの場合、メモリの上限は 256 MB です。

Context3D コンストラクターで Context3D オブジェクトを作成することはできません。Stage3D インスタンスのプロパティとして作成し、使用できます。Context3D クラスは、Flash Player と AIR のどちらで実行している場合でも、デスクトッププラットフォームとモバイルプラットフォームの両方で使用できます。

例を表示

関連する API エレメント



パブリックプロパティ
 プロパティ定義元
  backBufferHeight : int
[読み取り専用] バックバッファーの高さを指定します。これは、configureBackBuffer() を正常に呼び出すことで変更できます。
Context3D
  backBufferWidth : int
[読み取り専用] バックバッファーの幅を指定します。これは、configureBackBuffer() を正常に呼び出すことで変更できます。
Context3D
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。
Object
  driverInfo : String
[読み取り専用] このレンダリングコンテキストで使用されるグラフィックスライブラリドライバーのタイプです。
Context3D
  enableErrorChecking : Boolean
レンダラーで発生したエラーをアプリケーションに報告するかどうかを指定します。
Context3D
  maxBackBufferHeight : int
バックバッファーの高さの最大値を指定します。
Context3D
  maxBackBufferWidth : int
バックバッファーの幅の最大値を指定します。
Context3D
  profile : String
[読み取り専用] この Context3D オブジェクトによって使用中の、機能サポートプロファイルです。
Context3D
  supportsVideoTexture : Boolean
[静的] [読み取り専用] Context3D がビデオテクスチャをサポートしているかどうかを示します。
Context3D
  totalGPUMemory : Number
[読み取り専用] アプリケーションの Stage3D データ構造により割り当てられた GPU メモリの合計が返されます。GPU リソースオブジェクトが作成されるたびに、使用されるメモリが Context3D に格納されます。
Context3D
パブリックメソッド
 メソッド定義元
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
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
この Context3D オブジェクトに関連付けられている色、深度およびステンシルのバッファーをクリアして、指定した値を入力します。
Context3D
  
configureBackBuffer(width:int, height:int, antiAlias:int, enableDepthAndStencil:Boolean = true, wantsBestResolution:Boolean = false, wantsBestResolutionOnBrowserZoom:Boolean = false):void
レンダリングバッファーのビューポイントのサイズおよびその他の属性を設定します。
Context3D
  
createCubeTexture(size:int, format:String, optimizeForRenderToTexture:Boolean, streamingLevels:int = 0):flash.display3D.textures:CubeTexture
CubeTexture オブジェクトを作成します。
Context3D
  
createIndexBuffer(numIndices:int, bufferUsage:String = "staticDraw"):IndexBuffer3D
IndexBuffer3D オブジェクトを作成します。
Context3D
  
Program3D オブジェクトを作成します。
Context3D
  
createRectangleTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean):flash.display3D.textures:RectangleTexture
Rectangle Texture オブジェクトを作成します。
Context3D
  
createTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean, streamingLevels:int = 0):flash.display3D.textures:Texture
Texture オブジェクトを作成します。
Context3D
  
createVertexBuffer(numVertices:int, data32PerVertex:int, bufferUsage:String = "staticDraw"):VertexBuffer3D
VertexBuffer3D オブジェクトを作成します。
Context3D
  
    createVertexBufferForInstances(numVertices:int, data32PerVertex:int, instancesPerElement:int, bufferUsage:String = "staticDraw"):VertexBuffer3D
インスタンスデータの VertexBuffer3D オブジェクトを作成します。
Context3D
  
VideoTexture オブジェクトを作成します。
Context3D
 Inherited
イベントをイベントフローに送出します。
EventDispatcher
  
dispose(recreate:Boolean = true):void
この Context3D に関連付けられているすべてのリソースおよび内部記憶領域を開放します。
Context3D
  
    drawToBitmapData(destination:BitmapData, srcRect:Rectangle = null, destPoint:Point = null):void
ビットマップに現在のレンダリングバッファーを描画します。
Context3D
  
drawTriangles(indexBuffer:IndexBuffer3D, firstIndex:int = 0, numTriangles:int = -1):void
現在のバッファーと、この Context3D オブジェクトの状態を使用して、指定した三角形をレンダリングします。
Context3D
  
    drawTrianglesInstanced(indexBuffer:IndexBuffer3D, numInstances:int, firstIndex:int = 0, numTriangles:int = -1):void
現在のバッファーと、この Context3D オブジェクトの状態を使用して、指定したインスタンス化済みの三角形をレンダリングします。
Context3D
 Inherited
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  
バックレンダリングバッファーを表示します。
Context3D
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  
setBlendFactors(sourceFactor:String, destinationFactor:String):void
既存のカラーによる描画処理の出力カラーをブレンドするために使用する係数を指定します。
Context3D
  
setColorMask(red:Boolean, green:Boolean, blue:Boolean, alpha:Boolean):void
カラーをレンダリングバッファーに書き込む際に使用するマスクを設定します。
Context3D
  
setCulling(triangleFaceToCull:String):void
三角形カリングモードを設定します。
Context3D
  
setDepthTest(depthMask:Boolean, passCompareMode:String):void
深度のテストに使用する比較のタイプを設定します。
Context3D
  
    setFillMode(fillMode:String):void
レンダリングで使用される塗りモードを設定します。
Context3D
  
後続のレンダリングに使用する頂点シェーダープログラムおよびフラグメントシェーダープログラムを設定します。
Context3D
  
setProgramConstantsFromByteArray(programType:String, firstRegister:int, numRegisters:int, data:ByteArray, byteArrayOffset:uint):void
ByteArray に保存された値を使用するシェーダープログラムで必要となる定数を設定します。
Context3D
  
setProgramConstantsFromMatrix(programType:String, firstRegister:int, matrix:Matrix3D, transposedMatrix:Boolean = false):void
Matrix3D に保存された値を使用して、シェーダープログラムで必要となる定数を設定します。
Context3D
  
setProgramConstantsFromVector(programType:String, firstRegister:int, data:Vector.<Number>, numRegisters:int = -1):void
シェーダープログラムの定数の入力を設定します。
Context3D
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
レンダリングターゲットとしてバックレンダリングバッファーを設定します。
Context3D
  
setRenderToTexture(texture:flash.display3D.textures:TextureBase, enableDepthAndStencil:Boolean = false, antiAlias:int = 0, surfaceSelector:int = 0, colorOutputIndex:int = 0):void
レンダリングターゲットとして指定されたたテクスチャを設定します。
Context3D
  
setSamplerStateAt(sampler:int, wrap:String, filter:String, mipfilter:String):void
テクスチャサンプラーの状態を手動でオーバーライドします。
Context3D
  
シザー矩形(描画マスクの一種)を設定します。
Context3D
  
setStencilActions(triangleFace:String = "frontAndBack", compareMode:String = "always", actionOnBothPass:String = "keep", actionOnDepthFail:String = "keep", actionOnDepthPassStencilFail:String = "keep"):void
ステンシルモードおよびステンシル操作を設定します。
Context3D
  
setStencilReferenceValue(referenceValue:uint, readMask:uint = 255, writeMask:uint = 255):void
ステンシルのテストで使用するステンシル比較値を設定します。
Context3D
  
フラグメントプログラムのテクスチャ入力レジスタに使用するテクスチャを指定します。
Context3D
  
setVertexBufferAt(index:int, buffer:VertexBuffer3D, bufferOffset:int = 0, format:String = "float4"):void
単一の頂点シェーダープログラムの入力に対応する頂点データコンポーネントを指定します。
Context3D
 Inherited
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
 Inherited
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント 概要 定義元
 Inherited[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを取得して、アクティブになったときに送出されます。EventDispatcher
 Inherited[ブロードキャストイベント] Flash Player または AIR アプリケーションがオペレーティングシステムのフォーカスを失って、非アクティブになったときに送出されます。EventDispatcher
プロパティの詳細

backBufferHeight

プロパティ
backBufferHeight:int  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 15, AIR 15

バックバッファーの高さを指定します。これは、configureBackBuffer() メソッドを正常に呼び出すことで変更できます。configureBackBuffer() メソッドの最後の正常な呼び出しで wantsBestResolutionOnBrowserZoomtrue に設定されていれば、ブラウザーのズーム率が変更されたときに高さを変更できます。ブラウザーのズーム変更イベントのイベントリスナーを登録することで、高さの変更を検出できます。



実装
    public function get backBufferHeight():int

関連する API エレメント

backBufferWidth

プロパティ 
backBufferWidth:int  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 15, AIR 15

バックバッファーの幅を指定します。これは、configureBackBuffer() メソッドを正常に呼び出すことで変更できます。configureBackBuffer() メソッドの最後の正常な呼び出しで wantsBestResolutionOnBrowserZoomtrue に設定されていれば、ブラウザーのズーム率が変更されたときに幅を変更できます。ブラウザーのズーム変更イベントのイベントリスナーを登録することで、幅の変更を検出できます。



実装
    public function get backBufferWidth():int

関連する API エレメント

driverInfo

プロパティ 
driverInfo:String  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

このレンダリングコンテキストで使用されるグラフィックスライブラリドライバーのタイプです。ソフトウェア、DirectX ドライバー、OpenGL ドライバーのいずれがレンダリングに使用されるかを示します。また、ハードウェアレンダリングが失敗したかも示します。ハードウェアレンダリングが失敗した場合、Flash Player は Stage3D に対してソフトウェアレンダリングを使用し、driverInfo に次のいずれかの値が含まれます。

  • "Software Hw_disabled=userDisabled":Adobe Flash Player 設定 UI の「ハードウェアアクセラレーションを有効化」チェックボックスが選択されていません。
  • "Software Hw_disabled=oldDriver":ハードウェアグラフィックドライバーで既知の問題が発生しています。グラフィックドライバーをアップデートすることでこの問題が解決する場合があります。
  • "Software Hw_disabled=unavailable":ハードウェアグラフィックドライバーで既知の問題が発生したか、ハードウェアグラフィックの初期化に失敗しました。
  • "Software Hw_disabled=explicit":コンテンツから requestContext3D 経由でソフトウェアレンダリングが明示的に要求されました。
  • "Software Hw_disabled=domainMemory" - コンテンツは、Stage3D ハードウェアレンダリングで使用する場合にライセンスが必要な domainMemory を使用します。adobe.com/go/fpl_jp を参照してください。



実装
    public function get driverInfo():String

enableErrorChecking

プロパティ 
enableErrorChecking:Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

レンダラーで発生したエラーをアプリケーションに報告するかどうかを指定します。

enableErrorCheckingtrue のとき、clear() メソッドと drawTriangles() メソッドは同期状態であり、エラーがスローされる場合があります。enableErrorCheckingfalse のとき(デフォルト)、clear() メソッドと drawTriangles() メソッドは非同期状態であり、エラーは報告されません。エラーチェックを有効にすると、レンダリングのパフォーマンスが低下します。エラーチェックはデバッグ時にのみ有効にしてください。



実装
    public function get enableErrorChecking():Boolean
    public function set enableErrorChecking(value:Boolean):void

関連する API エレメント

maxBackBufferHeight

プロパティ 
maxBackBufferHeight:int

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 15, AIR 15

バックバッファーの高さの最大値を指定します。初期値は、プラットフォームのシステムの制限値です。 プロパティにはシステムの制限値以下の値を設定できますが、これより大きい値は設定できません。プロパティにはシステムの制限値以上の値を設定できますが、これより小さい値は設定できません。バックバッファーが設定されていない場合の最小限度は 定数 32 です。最小限度は、バックバッファーが設定された後、configureBackBuffer() メソッドの最後の正常な呼び出しにおける高さパラメーターの値となります。



実装
    public function get maxBackBufferHeight():int
    public function set maxBackBufferHeight(value:int):void

maxBackBufferWidth

プロパティ 
maxBackBufferWidth:int

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 15, AIR 15

バックバッファーの幅の最大値を指定します。初期値は、プラットフォームのシステムの制限値です。 プロパティにはシステムの制限値以下の値を設定できますが、これより大きい値は設定できません。プロパティにはシステムの制限値以上の値を設定できますが、これより小さい値は設定できません。バックバッファーが設定されていない場合の最小限度は 定数 32 です。最小限度は、バックバッファーが設定された後、configureBackBuffer() メソッドの最後の正常な呼び出しにおける幅パラメーターの値となります。



実装
    public function get maxBackBufferWidth():int
    public function set maxBackBufferWidth(value:int):void

profile

プロパティ 
profile:String  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 12, AIR 4

この Context3D オブジェクトによって使用中の、機能サポートプロファイルです。



実装
    public function get profile():String

関連する API エレメント

supportsVideoTexture

プロパティ 
supportsVideoTexture:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 17.0, Flash Player 18.0

Context3D がビデオテクスチャをサポートしているかどうかを示します。



実装
    public static function get supportsVideoTexture():Boolean

totalGPUMemory

プロパティ 
totalGPUMemory:Number  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 21, AIR 21

アプリケーションの Stage3D データ構造により割り当てられた GPU メモリの合計が返されます。

GPU リソースオブジェクトが作成されるたびに、使用されるメモリが Context3D に格納されます。このメモリには、この Context3D により作成されたインデックスバッファー、頂点バッファー、テクスチャ(ビデオのテクスチャは除く)およびプログラムが含まれます。

API totalGPUMemory は、上記のリソースで消費されたメモリの合計をユーザーに返します。デフォルト値として 0 が返されます。GPU メモリの合計はバイト単位で返されます。この情報は、モバイルではダイレクトモードでのみ、デスクトップではダイレクトおよび GPU モードで提供されます。(デスクトップでは、<renderMode>gpu</renderMode> を使用すると、<renderMode>direct</renderMode> にフォールバックされます)

この API は、SWF のバージョン 32 以降で使用できます。



実装
    public function get totalGPUMemory():Number
メソッドの詳細

clear

()メソッド
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

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

この Context3D オブジェクトに関連付けられている色、深度およびステンシルのバッファーをクリアして、指定した値を入力します。

mask パラメーターを設定して、クリアするバッファーを指定します。Context3DClearMask クラスで定義されている定数を使用して mask パラメーターを設定します。ビット単位の OR 演算子「|」を使用して、複数のバッファーをマスクに追加します(または Context3DClearMask.ALL を使用します)。バックバッファーにレンダリングする場合、clear() を呼び出す前に、configureBackBuffer() メソッドを呼び出す必要があります。

注意:許可されている範囲外のパラメーター値を指定した場合、Numeric パラメーターの値は、通知なしで 0 ~ 1 の範囲に強制的に設定されます。同様に、stencil に 0xff を超える値が指定された場合、0xff が設定されます。

パラメーター

red:Number (default = 0.0) — カラーバッファーをクリアする赤色成分(0 ~ 1)。
 
green:Number (default = 0.0) — カラーバッファーをクリアする緑色成分(0 ~ 1)。
 
blue:Number (default = 0.0) — カラーバッファーをクリアする青色成分(0 ~ 1)。
 
alpha:Number (default = 1.0) — カラーバッファーをクリアするアルファ成分(0 ~ 1)。アルファ成分は、ブレンドには使用されません。バッファーアルファに直接書き込まれます。
 
depth:Number (default = 1.0) — 深度バッファーをクリアする値(0 ~ 1)。
 
stencil:uint (default = 0) — ステンシルバッファーをクリアする 8 bit の値(0x00 ~ 0xff)。
 
mask:uint (default = 0xffffffff) — どのバッファーをクリアするかを指定します。


例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — 3768:バックグラウンドでの実行中、Stage3D API は使用できません。

関連する API エレメント

configureBackBuffer

()メソッド 
public function configureBackBuffer(width:int, height:int, antiAlias:int, enableDepthAndStencil:Boolean = true, wantsBestResolution:Boolean = false, wantsBestResolutionOnBrowserZoom:Boolean = false):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

レンダリングバッファーのビューポイントのサイズおよびその他の属性を設定します。

レンダリングは二重バッファーです。バックバッファーは、present() メソッドを呼び出したときに、表示されているフロントバッファーと入れ替わります。バッファーの最低サイズは 32x32 ピクセルです。バックバッファーの最大サイズは、デバイスの機能によって制限され、maxBackBufferWidth および maxBackBufferHeight プロパティを使用してユーザーが設定することもできます。バッファーの構成は低速な操作です。通常のレンダリング操作時は、バッファーのサイズや属性の変更は避けてください。

パラメーター

width:int — バッファーの幅(ピクセル単位)。
 
height:int — バッファーの高さ(ピクセル単位)。
 
antiAlias:int — 要求されたアンチエイリアスの品質を指定する整数値。この値は、アンチエイリアスの際に使用するサブサンプルの数と相関します。使用するサブサンプルの数を増やすと、必要な計算量も増えます。ただし、相対的なパフォーマンスへの影響は、レンダリングハードウェアによって異なります。アンチエイリアスのタイプと、アンチエイリアスが実際に実行されるかどうかは、デバイスとレンダリングモードによって決まります。ソフトウェアレンダリングコンテキストによるアンチエイリアスは一切サポートされていません。
0アンチエイリアスなし
2最小限のアンチエイリアス
4高品質なアンチエイリアス
16最高品質のアンチエイリアス
 
enableDepthAndStencil:Boolean (default = true)false の場合、深度およびステンシルバッファーは作成されません。true の場合、深度およびステンシルバッファーは作成されます。SWF 15 以降のバージョンでコンパイルされた AIR 3.2 以降のアプリケーションで、アプリケーション記述ファイルの renderMode エレメントが direct の場合、アプリケーション記述ファイルの depthAndStencil エレメントの値がこの引数の値と一致している必要があります。デフォルトでは、depthAndStencil エレメントの値は false です。
 
wantsBestResolution:Boolean (default = false)true は、デバイスが HiDPI スクリーンをサポートしている場合に width および height パラメーターで指定されているより大きなバックバッファーを割り当てようとしていることを示します。これは多くのピクセルを追加し、潜在的にシェーダー操作の結果を変更するので、デフォルトではオフになっています。ネイティブのバックバッファーがどれくらい増加したかによって、Stage.contentsScaleFactor を使用して決定します。
 
wantsBestResolutionOnBrowserZoom:Boolean (default = false)true は、ブラウザーのズーム率の増加に比例してバックバッファーのサイズが増加することを示します。この値の設定は、複数のブラウザーのズームで持続されます。パラメーターのデフォルト値は false です。バックバッファーのサイズの上限を制限するには、maxBackBufferWidth および maxBackBufferHeight プロパティを設定します。バックバッファーの現在のサイズを特定するには、backBufferWidth および backBufferHeight を使用します。


例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — 入力サイズが正しくありません:width または height のパラメーターがバックバッファーの最小サイズよりも小さいか、バックバッファーの最大サイズよりも大きい場合。
 
Error — 3709:アプリケーション記述子の depthAndStencil フラグは、Context3D オブジェクトの configureBackBuffer() に渡される enableDepthAndStencil ブール値と一致する必要があります。

createCubeTexture

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

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

CubeTexture オブジェクトを作成します。

CubeTexture オブジェクトを使用して、レンダリングコンテキストに立方体テクスチャビットマップをアップロードし、レンダリング時に立方体テクスチャを参照します。立方体テクスチャは 6 つの同一サイズの四角形テクスチャを立方体のトポロジーに配置したもので、環境マップを表現する場合に便利です。

CubeTexture コンストラクターで CubeTexture オブジェクトを作成できないので、代わりにこのメソッドを使用します。CubeTexture オブジェクトを作成したら、CubeTexture の uploadFromBitmapData()uploadFromByteArray() または uploadCompressedTextureFromByteArray() メソッドを使用して、テクスチャのビットマップデータをアップロードします。

パラメーター

size:int — テクスチャのエッジの長さ(テクセル単位)。
 
format:String — Context3DTextureFormat の列挙リスト(テクセル形式)。

テクスチャの圧縮では、テクスチャのイメージを圧縮形式で GPU に直接保存することにより、GPU のメモリとメモリ帯域幅の消費を抑えることができます。通常、圧縮テクスチャはオフラインで圧縮され、Texture.uploadCompressedTextureFromByteArray メソッドを使用して圧縮形式で GPU にアップロードされます。デスクトッププラットフォーム上の Flash Player 11.4 および AIR 3.4 では、ランタイムのテクスチャ圧縮がサポートされています。この機能は、ベクターアートから動的テクスチャをレンダリングするなどの場合に便利です。ただし、この機能は現在モバイルプラットフォームでは使用できず、ArgumentError(テクスチャ形式が一致しません)がスローされます。ランタイムのテクスチャ圧縮を使用するには、以下の手順を実行します。1. Context3D.createCubeTexture() メソッドを呼び出してテクスチャオブジェクトを作成し、format パラメーターとして flash.display3D.Context3DTextureFormat.COMPRESSED または flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA のどちらかを渡します。2. createCubeTexture() によって返された flash.display3D.textures.Texture インスタンスを使用して、flash.display3D.textures.CubeTexture.uploadFromBitmapData() または flash.display3D.textures.CubeTexture.uploadFromByteArray() のどちらかを呼び出し、テクスチャのアップロードと圧縮を一度に行います。

 
optimizeForRenderToTexture:Boolean — テクスチャをレンダリングのターゲットとして使用する可能性がある場合は、true に設定します。
 
streamingLevels:int (default = 0) — 画像をレンダリングする前にロードする必要のある MIP マップレベル。テクスチャストリーミングを使用すると、最も小さいミップレベルからロードして表示し、テクスチャのロード時に高品質の画像をプログレッシブに表示することができます。高画質の画像がロードされる間、エンドユーザーは低画質の画像を表示できます。

デフォルトの streamingLevels は 0 です。0 は、画像をレンダリングする前に MIP マップ内の最高画質の画像をロードする必要があることを表します。このパラメーターは Flash Player 11.3 および AIR 3.3 で追加されました。これらより前のバージョンの Flash Player および AIR の動作を維持するには、デフォルト値を使用してください。

streamingLevels を、1 以上 MIP マップ内の画像数以下の値に設定し、テクスチャのストリーミングを有効にします。例えば、MIP マップに 64 × 64 ピクセルの最高画質のメイン画像が含まれているとすると、MIP マップ内のそれよりも低画質の画像は、32 × 32、16 × 16、8 × 8、4 × 4、2 × 2 および 1 × 1 ピクセルとなり、合計 7 画像(7 レベル)です。レベル 0 は最高画質の画像です。このプロパティの最大値は log2(min(width,height)) です。そのため、64 x 64 ピクセルのメイン画像の場合、streamingLevels の最大値は 7 になります。このプロパティを 3 に設定すると、8 × 8ピクセルの画像をロードした後に画像がレンダリングされます。

注意:このプロパティを 0 より大きい値に設定すると、メモリ使用量とパフォーマンスに影響を及ぼすことがあります。

戻り値
flash.display3D.textures:CubeTexture

例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — リソースの制限を超えました:あまりに多くの Texture オブジェクトが作成されたか、テクスチャに割り当てられたメモリの容量を超過した場合。
 
ArgumentError — 深度テクスチャはまだ実装されていません:深度テクスチャを作成しようとした場合。
 
ArgumentError — テクスチャのサイズがゼロです:size パラメーターが 0 以下の場合。
 
ArgumentError — テクスチャのサイズが 2 の累乗ではありません:size パラメーターが 2 の累乗ではない場合。
 
ArgumentError — テクスチャが大きすぎます:size パラメーターが 1024 よりも大きい場合。
 
Error — テクスチャの作成に失敗しました:レンダリングコンテキストによる CubeTexture オブジェクトの作成ができなかった(にもかかわらず、理由に関する情報がない)場合。
 
ArgumentError — 無効なストリーミングレベル:Invalid streaming level が log2(size) 以上の場合。

関連する API エレメント

createIndexBuffer

()メソッド 
public function createIndexBuffer(numIndices:int, bufferUsage:String = "staticDraw"):IndexBuffer3D

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

IndexBuffer3D オブジェクトを作成します。

IndexBuffer3D オブジェクトを使用して、レンダリングコンテキストに一連の三角形のインデックスをアップロードし、レンダリング時にそのインデックスを参照します。インデックスバッファーの各インデックスは、頂点バッファーにある該当する頂点を参照します。一連の 3 つのインデックスで 1 つの三角形を定義します。IndexBuffer3D オブジェクトを drawTriangles() メソッドに渡し、インデックスバッファーで定義されている 1 つ以上の三角形をレンダリングします。

IndexBuffer3D クラスのコンストラクターで IndexBuffer3D オブジェクトを作成できないので、代わりにこのメソッドを使用します。IndexBuffer3D オブジェクトを作成したら、IndexBuffer3D の uploadFromVector() または uploadFromByteArray() メソッドを使用してインデックスをアップロードします。

パラメーター

numIndices:int — バッファーに保存する頂点の数。
 
bufferUsage:String (default = "staticDraw") — 想定されるバッファー使用量。Context3DBufferUsage で定義された定数のうちの 1 つを使用します。正しく設定すると、ハードウェアドライバーは適切に最適化できます。このパラメーターは、Flash 12/AIR 4 以降でのみ使用できます。

戻り値
IndexBuffer3D

例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — リソースの制限を超えました:あまりに多くのインデックスバッファーが作成されたか、インデックスバッファーに割り当てられたメモリの容量を超過した場合。
 
Error — 3768:バックグラウンドでの実行中、Stage3D API は使用できません。
 
ArgumentError — バッファーが大きすぎます:numIndices が 0xf0000 以上の場合。

関連する API エレメント

createProgram

()メソッド 
public function createProgram():Program3D

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

Program3D オブジェクトを作成します。

Program3D オブジェクトを使用して、レンダリングコンテキストにシェーダープログラムをアップロードし、レンダリング時にアップロードしたプログラムを参照します。Program3D オブジェクトは、頂点プログラムとフラグメントプログラム(ピクセルプログラムとも呼ばれます)の 2 つのプログラムを保存します。これらのプログラムは、バイナリのシェーダーアセンブリ言語で記述されます。

Program3D コンストラクターで Program3D オブジェクトを作成できないので、代わりにこのメソッドを使用します。Program3D オブジェクトを作成したら、Program3D の upload() メソッドを使用してプログラムをアップロードします。

戻り値
Program3D

例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — プログラム数が 4096 を超える場合、またはメモリの合計サイズが 16 MB を超える場合(dispose を使用して Program3D のリソースを解放します)。

関連する API エレメント


例  ( この例の使用方法 )

この例は、レンダリングコンテキストに頂点ペアおよびピクセルプログラムを作成し、アップロードし、アクティブにする方法を示しています。この例の renderContext オブジェクトは Context3D クラスのインスタンスです。この例のプログラムは、Adobe Graphics Assembly Language(AGAL)で記述されています。
//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

()メソッド 
public function createRectangleTexture(width:int, height:int, format:String, optimizeForRenderToTexture:Boolean):flash.display3D.textures:RectangleTexture

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11.8, AIR 3.8

Rectangle Texture オブジェクトを作成します。

RectangleTexture オブジェクトを使用して、レンダリングコンテキストにテクスチャのビットマップをアップロードし、レンダリング時にテクスチャを参照します。

RectangleTexture コンストラクターで RectangleTexture オブジェクトを作成できないので、代わりにこのメソッドを使用します。RectangleTexture オブジェクトを作成したら、Texture の uploadFromBitmapData() または uploadFromByteArray() メソッドを使用して、テクスチャのビットマップをアップロードします。

32 bit 整数のテクスチャは、Flash の BitmapData の形式に適合させるために、パックされた BGRA 形式で保存されることに注意してください。浮動小数点テクスチャには、従来の RGBA 形式が使用されます。

Rectangle Texture は、幅と高さが 2 の累乗になる必要がなく、通常の 2D テクスチャとは異なります。また、ミップマップも含まれません。テクスチャへのレンダリングを行う場合に最も有効です。Rectangle Texture をミップマップフィルターまたは繰り返しの折り返しを使用するサンプラーで使用すると、drawTriangles の呼び出しは失敗します。Rectangle Texture ではストリーミングも使用できません。Rectangle Texture でサポートされるテクスチャ形式は、BGRA、BGR_PACKED、BGRA_PACKED のみです。Rectangle Texture では圧縮されたテクスチャ形式はサポートされません。

パラメーター

width:int — テクスチャの幅(テクセル単位)。
 
height:int — テクスチャの高さ(テクセル単位)。
 
format:String — Context3DTextureFormat の列挙リスト(テクセル形式)。
 
optimizeForRenderToTexture:Boolean — テクスチャをレンダリングのターゲットとして使用する可能性がある場合は、true に設定します。

戻り値
flash.display3D.textures:RectangleTexture

例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — リソースの制限を超えました:あまりに多くの Texture オブジェクトが作成されたか、テクスチャに割り当てられたメモリの容量を超過した場合。
 
ArgumentError — テクスチャのサイズがゼロです:width または height パラメーターのいずれかがゼロまたはそれ以下の場合。
 
ArgumentError — テクスチャが大きすぎます:width および height パラメーターのいずれかが 2048 よりも大きい場合。
 
Error — テクスチャの作成に失敗しました:レンダリングコンテキストによる Texture オブジェクトの作成ができなかった(にもかかわらず、理由に関する情報がない)場合。
 
Error — ベースラインプロファイル以上が必要です:矩形テクスチャがベースラインの制限プロファイルで作成される場合。

関連する API エレメント

createTexture

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

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

Texture オブジェクトを作成します。

Texture オブジェクトを使用して、レンダリングコンテキストにテクスチャのビットマップをアップロードし、レンダリング時にテクスチャを参照します。

Texture コンストラクターで Texture オブジェクトを作成できないので、代わりにこのメソッドを使用します。Texture オブジェクトを作成したら、Texture の uploadFromBitmapData()uploadFromByteArray() または uploadCompressedTextureFromByteArray() メソッドを使用して、テクスチャのビットマップをアップロードします。

32 bit 整数のテクスチャは、Flash の BitmapData の形式に適合させるために、パックされた BGRA 形式で保存されることに注意してください。浮動小数点テクスチャには、従来の RGBA 形式が使用されます。

パラメーター

width:int — テクスチャの幅(テクセル単位)。
 
height:int — テクスチャの高さ(テクセル単位)。
 
format:String — Context3DTextureFormat の列挙リスト(テクセル形式)。

テクスチャの圧縮では、テクスチャのイメージを圧縮形式で GPU に直接保存することにより、GPU のメモリとメモリ帯域幅の消費を抑えることができます。通常、圧縮テクスチャはオフラインで圧縮され、Texture.uploadCompressedTextureFromByteArray メソッドを使用して圧縮形式で GPU にアップロードされます。デスクトッププラットフォーム上の Flash Player 11.4 および AIR 3.4 では、ランタイムのテクスチャ圧縮がサポートされています。この機能は、ベクターアートから動的テクスチャをレンダリングするなどの場合に便利です。ただし、この機能は現在モバイルプラットフォームでは使用できず、ArgumentError(テクスチャ形式が一致しません)がスローされます。ランタイムのテクスチャ圧縮を使用するには、以下の手順を実行します。1. Context3D.createTexture() メソッドを呼び出してテクスチャオブジェクトを作成し、format パラメーターとして flash.display3D.Context3DTextureFormat.COMPRESSED または flash.display3D.Context3DTextureFormat.COMPRESSED_ALPHA のどちらかを渡します。2. createTexture() によって返された flash.display3D.textures.Texture インスタンスを使用して、flash.display3D.textures.Texture.uploadFromBitmapData() または flash.display3D.textures.Texture.uploadFromByteArray() のどちらかを呼び出し、テクスチャのアップロードと圧縮を一度に行います。

 
optimizeForRenderToTexture:Boolean — テクスチャをレンダリングのターゲットとして使用する可能性がある場合は、true に設定します。
 
streamingLevels:int (default = 0) — 画像をレンダリングする前にロードする必要のある MIP マップレベル。テクスチャストリーミングを使用すると、最も小さいミップレベルからロードして表示し、テクスチャのロード時に高品質の画像をプログレッシブに表示することができます。高画質の画像がロードされる間、エンドユーザーは低画質の画像を表示できます。

デフォルトの streamingLevels は 0 です。0 は、画像をレンダリングする前に MIP マップ内の最高画質の画像をロードする必要があることを表します。このパラメーターは Flash Player 11.3 および AIR 3.3 で追加されました。これらより前のバージョンの Flash Player および AIR の動作を維持するには、デフォルト値を使用してください。

streamingLevels を、1 以上 MIP マップ内の画像数以下の値に設定し、テクスチャのストリーミングを有効にします。例えば、MIP マップに 64 × 64 ピクセルの最高画質のメイン画像が含まれているとすると、MIP マップ内のそれよりも低画質の画像は、32 × 32、16 × 16、8 × 8、4 × 4、2 × 2 および 1 × 1 ピクセルとなり、合計 7 画像(7 レベル)です。レベル 0 は最高画質の画像です。このプロパティの最大値は log2(min(width,height)) です。そのため、64 x 64 ピクセルのメイン画像の場合、streamingLevels の最大値は 7 になります。このプロパティを 3 に設定すると、8 × 8ピクセルの画像をロードした後に画像がレンダリングされます。

注意:このプロパティを 0 より大きい値に設定すると、メモリ使用量とパフォーマンスに影響を及ぼすことがあります。

戻り値
flash.display3D.textures:Texture

例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — リソースの制限を超えました:あまりに多くの Texture オブジェクトが作成されたか、テクスチャに割り当てられたメモリの容量を超過した場合。
 
ArgumentError — 深度テクスチャはまだ実装されていません:深度テクスチャを作成しようとした場合。
 
ArgumentError — テクスチャのサイズがゼロです:width または height パラメーターのいずれかがゼロまたはそれ以下の場合。
 
ArgumentError — テクスチャのサイズが 2 の累乗ではありません:width および height パラメーターのいずれも 2 の累乗ではない場合。
 
ArgumentError — テクスチャが大きすぎます:ベースラインおよびベースラインの制限プロファイルの width または height パラメーターが 2048 よりも大きい場合、あるいは拡張された上記のプロファイルベースラインの width または height パラメーターが 4096 よりも大きい場合。
 
Error — テクスチャの作成に失敗しました:レンダリングコンテキストによる Texture オブジェクトの作成ができなかった(にもかかわらず、理由に関する情報がない)場合。
 
ArgumentError — 無効なストリーミングレベル:streamingLevels が log2(min(width,height)) 以上の場合。

関連する API エレメント

createVertexBuffer

()メソッド 
public function createVertexBuffer(numVertices:int, data32PerVertex:int, bufferUsage:String = "staticDraw"):VertexBuffer3D

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

VertexBuffer3D オブジェクトを作成します。

VertexBuffer3D オブジェクトを使用して、レンダリングコンテキストに一連の頂点データをアップロードします。頂点バッファーには、シーンのジオメトリに各ポイントをレンダリングする必要があるデータが含まれています。通常、各頂点に関連付けられているデータ属性には、位置、カラー、テクスチャ座標があり、頂点シェーダープログラムへの入力となります。setVertexBufferAt() メソッドを使用して、頂点プログラムの入力の 1 つに該当するデータ値を特定します。各頂点に対し、最大 64 個の 32 bit 値を指定できます

VertexBuffer3D コンストラクターで VertexBuffer3D オブジェクトを作成できないので、代わりにこのメソッドを使用します。VertexBuffer3D オブジェクトを作成したら、VertexBuffer3D の uploadFromVector() または uploadFromByteArray() メソッドを使用して頂点データをアップロードします。

パラメーター

numVertices:int — バッファーに保存する頂点の数。1 つのバッファーに保存できる頂点の最大数は 65535 です。
 
data32PerVertex:int — 各頂点に関連付けられている 32 bit(4 バイト)データ値の数。各頂点の 32 bit データエレメントの最大数は 64(256 バイト)です。頂点シェーダープログラムからアクセスできる attribute レジスタの数は、どのような場合でも 8 個のみです。頂点バッファー内の属性を選択するには、SetVertextBufferAt() を使用します。
 
bufferUsage:String (default = "staticDraw") — 想定されるバッファー使用量。Context3DBufferUsage で定義された定数のうちの 1 つを使用します。正しく設定すると、ハードウェアドライバーは適切に最適化できます。このパラメーターは、Flash 12/AIR 4 以降でのみ使用できます。

戻り値
VertexBuffer3D

例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — リソースの制限を超えました:あまりに多くの頂点バッファーが作成されたか、頂点バッファーに割り当てられたメモリの容量を超過した場合。
 
ArgumentError — バッファーが大きすぎます:numVertices が 0x10000 を超えているか、data32PerVertex が 64 を超えている場合。
 
ArgumentError — バッファーのサイズがゼロです:numVertices が 0 または data32PerVertex が 0 の場合。
 
ArgumentError — バッファーの作成に失敗しました:レンダリングコンテキストによる VertexBuffer3D オブジェクトの作成ができなかった(にもかかわらず、理由に関する詳細情報がない)場合。
 
Error — 3768:バックグラウンドでの実行中、Stage3D API は使用できません。

関連する API エレメント


例  ( この例の使用方法 )

次の例は、頂点データバッファーを作成し読み込む方法を示しています。この例のバッファーには、1 つの頂点につき 2 種類のデータが含まれています。x、y、z 座標で表される位置と、rgb 成分で表されるカラーです。頂点バッファーの作成後、この例では setVertexBufferAt() メソッドを呼び出して、最初の 3 組のデータポイントが va0 で 3 つの浮動小数点値として頂点プログラムに渡されること、および 2 つ目の 3 組のデータポイントが va1 として渡されることを指定します。頂点プログラムでは、この方法で最大 8 つの入力(頂点属性レジスタとも呼ばれます)を定義できます。
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

()メソッド 
public function createVertexBufferForInstances(numVertices:int, data32PerVertex:int, instancesPerElement:int, bufferUsage:String = "staticDraw"):VertexBuffer3D

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 20.0

インスタンスデータの VertexBuffer3D オブジェクトを作成します。

VertexBuffer3D オブジェクトを使用して、レンダリングコンテキストに一連のインスタンスデータをアップロードします。頂点バッファーには、シーンのジオメトリに各インスタンスをレンダリングする必要があるデータが含まれています。インスタンスデータを含む頂点バッファーは、インスタンスのすべての頂点に共通する属性を提供し、頂点シェーダープログラムの入力として機能します。setVertexBufferAt() メソッドを使用して、頂点プログラムの入力の 1 つに該当するデータ値を特定します。頂点バッファーの各エレメントに対し、最大 64 個の 32 bit 値を指定できます

VertexBuffer3D コンストラクターで VertexBuffer3D オブジェクトを作成できないので、代わりにこのメソッドを使用します。VertexBuffer3D オブジェクトを作成したら、VertexBuffer3D の uploadFromVector() または uploadFromByteArray() メソッドを使用して頂点データをアップロードします。

パラメーター

numVertices:int — バッファーに保存するエレメントの数。1 つのバッファーに保存できるエレメントの最大数は 65535 です。
 
data32PerVertex:int — 各エレメントに関連付けられている 32 bit(4 バイト)データ値の数。各頂点の 32 bit データエレメントの最大数は 64(256 バイト)です。
 
instancesPerElement:int — 頂点バッファーの 1 つのエレメントを使用するインスタンスの数。
 
bufferUsage:String (default = "staticDraw") — 想定されるバッファー使用量。Context3DBufferUsage で定義された定数のうちの 1 つを使用します。正しく設定すると、ハードウェアドライバーは適切に最適化できます。このパラメーターは、Flash 12/AIR 4 以降でのみ使用できます。

戻り値
VertexBuffer3D

例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — リソースの制限を超えました:あまりに多くの頂点バッファーが作成されたか、頂点バッファーに割り当てられたメモリの容量を超過した場合。
 
ArgumentError — バッファーが大きすぎます:numVertices が 0x10000 を超えているか、data32PerVertex が 64 を超えている場合。
 
ArgumentError — バッファーのサイズがゼロです:numVertices が 0 または data32PerVertex が 0 の場合。
 
ArgumentError — バッファーの作成に失敗しました:レンダリングコンテキストによる VertexBuffer3D オブジェクトの作成ができなかった(にもかかわらず、理由に関する詳細情報がない)場合。
 
Error — 3768:バックグラウンドでの実行中、Stage3D API は使用できません。
 
Error — 標準の拡張プロファイル以上が必要です:要求されたプロファイルが標準の拡張プロファイル未満のときにこのメソッドが呼び出された場合。
 
Error — エレメントあたりのインスタンス数が無効です:instancesPerElement が 0 以下の場合。

関連する API エレメント

createVideoTexture

()メソッド 
public function createVideoTexture():flash.display3D.textures:VideoTexture

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 17.0, Flash Player 18.0

VideoTexture オブジェクトを作成します。

VideoTexture オブジェクトを使用して、NetStream オブジェクトまたは Camera オブジェクトからビデオフレームをテクスチャとして取得したり、ビデオフレームをレンダリングコンテキストにアップロードします。

VideoTexture オブジェクトは、VideoTexture コンストラクターで作成できません。代わりにこのメソッドを使用してください。VideoTexture オブジェクトを作成したら、NetStream オブジェクトまたは Camera オブジェクトを添付し、VideoTexture attachNetStream() または attachCamera() メソッドを使用してビデオフレームを取得します。

システムがこの機能をサポートしていない場合、このメソッドは null を返します。

VideoTexture はミップマップを含みません。VideoTexture をミップマップフィルターまたは繰り返しの折り返しを使用するサンプラーで使用すると、drawTriangles の呼び出しは失敗します。VideoTexture は、シェーダーで BGRA テクスチャとして扱うことができます。Context3D がソフトウェアレンダリングモードでリクエストされた場合、VideoTexture オブジェクトをインスタンス化しようとすると失敗します。

1 つの Context3D インスタンスあたり、最大で 4 つの VideoTexture オブジェクトを利用できます。モバイルの場合は、プラットフォームの制限により、実際にサポートされる VideoTexture オブジェクトの数は 4 つ未満となる場合があります。

戻り値
flash.display3D.textures:VideoTexture

例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — リソースの制限を超えました:あまりに多くの Texture オブジェクトが作成されたか、テクスチャに割り当てられたメモリの容量を超過した場合。
 
Error — テクスチャの作成に失敗しました:レンダリングコンテキストによる Texture オブジェクトの作成ができなかった(にもかかわらず、理由に関する情報がない)場合。

dispose

()メソッド 
public function dispose(recreate:Boolean = true):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

この Context3D に関連付けられているすべてのリソースおよび内部記憶領域を開放します。

この Context3D で作成したインデックスバッファー、頂点バッファー、テクスチャおよびプログラムがすべて、個別に dispose() を呼び出したときと同様に破棄されます。また Context3D 自体も破棄され、すべての一時バッファーおよびバックバッファーが解放されます。dispose() を呼び出した後で、configureBackBuffer()、clear()、drawTriangles()、createCubeTexture()、createTexture()、createProgram()、createIndexBuffer()、createVertexBuffer()、drawToBitmapData() のいずれかを呼び出すと、ランタイムによって例外がスローされます。

警告:関連する Stage3D オブジェクトで Events.CONTEXT3D_CREATE 用のイベントリスナーがまだ設定されているうちに、Context3D で dispose() を呼び出すと、デバイス損失がシミュレートされます。Stage3D で新しい Context3D が作成され、Events.CONTEXT3D_CREATE イベントが再度発行されます。この状況を回避したい場合は、dispose() を呼び出す前に Stage3D オブジェクトからこのイベントリスナーを削除するか、recreate パラメーターを false に設定してください。

パラメーター

recreate:Boolean (default = true)

関連する API エレメント

    drawToBitmapData

()メソッド 
public function drawToBitmapData(destination:BitmapData, srcRect:Rectangle = null, destPoint:Point = null):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 3

ビットマップに現在のレンダリングバッファーを描画します。

バックレンダリングバッファーの現在のコンテンツが BitmapData オブジェクトにコピーされます。場合によっては、これは非常に低速な操作となり、最大 1 秒かかります。使用の際は注意が必要です。この関数はフロントレンダリングバッファー(ステージに表示されているバッファー)をコピーするのではなく、描画先のバッファーをコピーします。ステージ上の表示どおりにレンダリングされたイメージをキャプチャするには、drawToBitmapData() を呼び出してから、present() を呼び出します。

AIR 25 から、API drawToBitmapData() に 2 つの新しいパラメーターが導入されました。この API は、3 つのパラメーターを取るようになりました。1 つ目のパラメーターは、既存のパラメーター destination:BitmapData です。2 つ目のパラメーター srcRect:Rectangle は、stage3D 上のターゲット矩形です。3 つ目のパラメーター destPoint:Point は、コピー先のビットマップ上の座標です。パラメーター srcRect と destPoint はオプションで、デフォルト値はそれぞれ (0,0,bitmapWidth,bitmapHeight) と (0,0) です。

イメージが描画されると、ビットマップに適合するように拡大/縮小されずに、コンテンツは、コピー先のビットマップのサイズにクリッピングされます。

Flash の BitmapData オブジェクトは、アルファ成分で乗算済みのカラーを保存します。例えば、ピクセルの「純粋な」RGB カラー成分が (0x0A, 0x12, 0xBB) で、アルファ成分が 0x7F (.5) の場合、そのピクセルは、rgba 値:(0x05, 0x09, 0x5D, 0x7F) で BitmapData オブジェクトに保存されます。ブレンド係数を設定して、バッファーにレンダリングされたカラーにアルファを乗算したり、フラグメントシェーダーで操作を実行することができます。レンダリングコンテキストでは、カラーが事前に乗算された形式で保存されているかどうかは検証されません。

パラメーター

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


例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error — 3768:バックグラウンドでの実行中、Stage3D API は使用できません。
 
Error — 3802:パラメーター destPoint:Point または srcRect:Rectangle のどちらかがビットマップ/stage3D の座標境界外の場合、または非数(NaN)の値が入力として渡された場合。

例  ( この例の使用方法 )

次の例は、通常のレンダリングバッファーと BitmapData オブジェクトの両方に 2 つの三角形をレンダリングしています。BitmapData オブジェクトは、通常の表示リストに追加される Bitmap オブジェクトを使用して表示されます。ドロップシャドウフィルターがビットマップレンダリングに適用されます。
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

()メソッド 
public function drawTriangles(indexBuffer:IndexBuffer3D, firstIndex:int = 0, numTriangles:int = -1):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

現在のバッファーと、この Context3D オブジェクトの状態を使用して、指定した三角形をレンダリングします。

三角形ごとに、三角形の頂点は頂点シェーダープログラムで処理され、三角形の面はピクセルシェーダープログラムで処理されます。各ピクセルに関してピクセルプログラムから出力される色は、ステンシルの操作、深度テスト、レンダリング元とレンダリング先のアルファ、現在のブレンドモードに従って、レンダリングターゲットに描画されます。レンダリング先の対象は、主要なレンダリングバッファーまたはテクスチャです。

カリングが有効な場合(setCulling() メソッドを使用)は、ピクセルプログラムを実行する前にシーンから三角形を破棄できます。ステンシルおよび深度のテストが有効な場合は、レンダリング先を更新せずに、ピクセルプログラムからの出力ピクセルを破棄できます。また、ピクセルの色を出力しないことをピクセルプログラムで決定することもできます。

レンダリングされた三角形は、present() メメソッドを呼び出すまでビューポイントに表示されません。毎回 present() を呼び出した後に、clear() メソッドを呼び出してから、drawTriangles() を呼び出さないと、レンダリングが失敗します。

enableErrorCheckingfalse の場合、この関数は直ちに返され、結果を待たず、この Context3D インスタンスが破棄された場合や描画呼び出しが多すぎる場合にのみ例外がスローされます。レンダリングコンテキストの状態が無効な場合、レンダリングは通知なしで失敗します。enableErrorChecking プロパティが true の場合、この関数は三角形を描画した後で返され、描画エラーや無効なコンテキスト状態がある場合は例外がスローされます。

パラメーター

indexBuffer:IndexBuffer3D — レンダリングする頂点を参照する一連の頂点インデックス。
 
firstIndex:int (default = 0) — レンダリング時に最初の頂点インデックスとして選択するインデックス。デフォルト値は 0 です。
 
numTriangles:int (default = -1) — レンダリングする三角形の数。各三角形は 3 つのインデックスを使用します。インデックスバッファーですべての三角形を描画するには、-1 を渡します。デフォルト値は -1 です。


例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error present() に対する呼び出しの合間に、このメソッドを呼び出す回数が多すぎた場合。呼び出し回数の上限は 32,768 回です。

次のエラーは、enableErrorChecking プロパティが true の場合にのみスローされます。

 
Error — 描画の前にクリアする必要があります:前回 present() を呼び出してから、バッファーがクリアされていない場合。
 
Error — 有効な Program3D オブジェクトが設定されていない場合。
 
Error — 有効なインデックスバッファーセットがありません:IndexBuffer3D オブジェクトが設定されていない場合。
 
Error — パラメーターの健全性チェックに失敗しました:描画する三角形の数または firstIndex の数が許容値を超えている場合。
 
RangeError — バッファーに十分なインデックスがありません:描画する三角形の数を定義するバッファーに十分なインデックスがない場合。
 
Error — サンプラーはレンダリング用にもバインドされているテクスチャをバインドします:レンダリングターゲットがテクスチャで、そのテクスチャが現在のフラグメントプログラムのテクスチャ入力に割り当てられている場合。
 
Error — サンプラーは無効なテクスチャをバインドします:現在のフラグメントプログラムへの入力として、無効なテクスチャが指定されている場合。
 
Error — サンプラーの形式がテクスチャの形式と一致しません:現在のフラグメントプログラムへの入力として割り当てられているテクスチャの形式が、sampler レジスタに指定されている形式と異なる場合。2D テクスチャが立方体テクスチャのサンプラーに割り当てられている場合など。
 
Error — サンプラーは未定義のテクスチャをバインドします:現在のフラグメントプログラムが、(setTextureAt() を使用して)設定されていないテクスチャレジスタにアクセスした場合。
 
Error — 同一テクスチャには同一サンプラーパラメーターが必要です:テクスチャを複数の sampler レジスタで使用するときに、すべてのサンプラーに同じ設定を行う必要がある場合。例えば、1 つのサンプラーをクランプに設定し、もう 1 つをラップに設定することはできません。
 
Error — テクスチャはバインドされますが、使用されません:テクスチャがシェーダー入力として設定されているが、使用されない場合。
 
Error — ストリームは使用されません:頂点バッファーが頂点属性入力に割り当てられているが、頂点プログラムは対応するレジスタを参照しない場合。
 
Error — ストリームは無効です:頂点プログラムの入力に割り当てられている VertexBuffer3D オブジェクトが有効なオブジェクトでない場合。
 
RangeError — ストリームには十分な頂点がありません:指定の三角形の描画用データを提供する頂点バッファーに十分なデータがない場合。
 
RangeError — ストリームの頂点オフセットが境界外です:setVertexBufferAt() の呼び出しに指定されているオフセットが負の値か、バッファーの境界を越えている場合。
 
Error — ストリームは読み取られますが、設定されません:現在の頂点プログラムに使用されている頂点属性が、(setVertexBufferAt() を使用して)設定されていない場合。

関連する API エレメント


例  ( この例の使用方法 )

次のクラスは、ステージ上の Stage3D ビューポートに 2 つの三角形を描画します。これらの三角形は、原点 (0,0,0) にある 1 つの頂点を共有します。

三角形は、頂点バッファーとインデックスバッファーを使用して定義されます。頂点バッファーには、三角形の各頂点の位置と色の情報が含まれます。インデックスバッファーには、頂点バッファーへのインデックスが含まれます。3 つのインデックスによって 1 つの三角形が定義されます。例えば、頂点バッファーの最初の 3 つの点で構成される三角形は、インデックスバッファーに 0,1,2 として表示されます。

この簡単な例では、3D 変形は行われません。標準的な表示領域内のオブジェクト(2x2x1 の単位ボリューム)のみが表示可能であり、三角形の座標はこの領域内に定義されます。ただし、典型的な 3D シーンをレンダリングするときは、遠近投影法または正投影法を使用して、レンダリングするオブジェクトを「ワールド」座標系からこの表示領域に投影します。

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

()メソッド 
public function drawTrianglesInstanced(indexBuffer:IndexBuffer3D, numInstances:int, firstIndex:int = 0, numTriangles:int = -1):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 20.0

現在のバッファーと、この Context3D オブジェクトの状態を使用して、指定したインスタンス化済みの三角形をレンダリングします。

各インスタンスの三角形ごとに、三角形の頂点は頂点シェーダープログラムで処理され、三角形の面はピクセルシェーダープログラムで処理されます。各ピクセルに関してピクセルプログラムから出力される色は、ステンシルの操作、深度テスト、レンダリング元とレンダリング先のアルファ、現在のブレンドモードに従って、レンダリングターゲットに描画されます。レンダリング先の対象は、主要なレンダリングバッファーまたはテクスチャです。

カリングが有効な場合(setCulling() メソッドを使用)は、ピクセルプログラムを実行する前にシーンから三角形を破棄できます。ステンシルおよび深度のテストが有効な場合は、レンダリング先を更新せずに、ピクセルプログラムからの出力ピクセルを破棄できます。また、ピクセルの色を出力しないことをピクセルプログラムで決定することもできます。

レンダリングされたインスタンス化済みの三角形は、present() メソッドを呼び出すまでビューポイントに表示されません。毎回 present() を呼び出した後に、clear() メソッドを呼び出してから、drawTrianglesInstanced() を呼び出さないと、レンダリングが失敗します。

enableErrorCheckingfalse の場合、この関数は直ちに返され、結果を待たず、この Context3D インスタンスが破棄された場合や描画呼び出しが多すぎる場合にのみ例外がスローされます。レンダリングコンテキストの状態が無効な場合、レンダリングは通知なしで失敗します。enableErrorChecking プロパティが true の場合、この関数は三角形を描画した後で返され、描画エラーや無効なコンテキスト状態がある場合は例外がスローされます。

インスタンス化されたバッファーが SetVertexAt() を使用して適切に順序付けられていない場合、例外がスローされることがあります。例えば、Direct 3D 9 では、SetStreamSourceFreq() API を使用して、インデックス付きのジオメトリデータと描画するインスタンス数を常にストリーム 0 に設定する必要があります。

つまり、SetVertexBufferAt() を頂点シェーダープログラムへの入力として使用して配置する場合、CreateVertexBufferForInstance() を使用して作成された頂点バッファーを最小インデックス番号で配置してはいけません。CreateVertexBuffer() を使用して生成された頂点バッファーは、CreateVertexBufferForInstance() のインデックス番号より小さいインデックス番号で配置する必要があります。一般的に、SetVertexBufferAt() を使用してジオメトリデータを配置してから、インスタンスごとのデータを配置する必要があります。

パラメーター

indexBuffer:IndexBuffer3D — レンダリングする頂点を参照する一連の頂点インデックス。
 
numInstances:int — レンダリングするインスタンスの数。
 
firstIndex:int (default = 0) — レンダリング時に最初の頂点インデックスとして選択するインデックス。デフォルト値は 0 です。
 
numTriangles:int (default = -1) — レンダリングする三角形の数。各三角形は 3 つのインデックスを使用します。インデックスバッファーですべての三角形を描画するには、-1 を渡します。デフォルト値は -1 です。


例外
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。
 
Error present() に対する呼び出しの合間に、このメソッドを呼び出す回数が多すぎた場合。呼び出し回数の上限は 32,768 回です。
 
Error — 標準の拡張プロファイル以上が必要です:要求されたプロファイルが標準の拡張プロファイル未満のときにこのメソッドが呼び出された場合。
 
Error — 負の numInstances を指定してこのメソッドが呼び出された場合。

次のエラーは、enableErrorChecking プロパティが true の場合にのみスローされます。

 
Error — 描画の前にクリアする必要があります:前回 present() を呼び出してから、バッファーがクリアされていない場合。
 
Error — 有効な Program3D オブジェクトが設定されていない場合。
 
Error — 有効なインデックスバッファーセットがありません:IndexBuffer3D オブジェクトが設定されていない場合。
 
Error — パラメーターの健全性チェックに失敗しました:描画する三角形の数または firstIndex の数が許容値を超えている場合。
 
RangeError — バッファーに十分なインデックスがありません:描画する三角形の数を定義するバッファーに十分なインデックスがない場合。
 
Error — サンプラーはレンダリング用にもバインドされているテクスチャをバインドします:レンダリングターゲットがテクスチャで、そのテクスチャが現在のフラグメントプログラムのテクスチャ入力に割り当てられている場合。
 
Error — サンプラーは無効なテクスチャをバインドします:現在のフラグメントプログラムへの入力として、無効なテクスチャが指定されている場合。
 
Error — サンプラーの形式がテクスチャの形式と一致しません:現在のフラグメントプログラムへの入力として割り当てられているテクスチャの形式が、sampler レジスタに指定されている形式と異なる場合。2D テクスチャが立方体テクスチャのサンプラーに割り当てられている場合など。
 
Error — サンプラーは未定義のテクスチャをバインドします:現在のフラグメントプログラムが、(setTextureAt() を使用して)設定されていないテクスチャレジスタにアクセスした場合。
 
Error — 同一テクスチャには同一サンプラーパラメーターが必要です:テクスチャを複数の sampler レジスタで使用するときに、すべてのサンプラーに同じ設定を行う必要がある場合。例えば、1 つのサンプラーをクランプに設定し、もう 1 つをラップに設定することはできません。
 
Error — テクスチャはバインドされますが、使用されません:テクスチャがシェーダー入力として設定されているが、使用されない場合。
 
Error — ストリームは使用されません:頂点バッファーが頂点属性入力に割り当てられているが、頂点プログラムは対応するレジスタを参照しない場合。
 
Error — ストリームは無効です:頂点プログラムの入力に割り当てられている VertexBuffer3D オブジェクトが有効なオブジェクトでない場合。
 
RangeError — ストリームには十分な頂点がありません:指定の三角形の描画用データを提供する頂点バッファーに十分なデータがない場合。
 
RangeError — ストリームの頂点オフセットが境界外です:setVertexBufferAt() の呼び出しに指定されているオフセットが負の値か、バッファーの境界を越えている場合。
 
Error — ストリームは読み取られますが、設定されません:現在の頂点プログラムに使用されている頂点属性が、(setVertexBufferAt() を使用して)設定されていない場合。
 
Error — 頂点バッファーストリームに含まれているエレメントの数が、インスタンスに対して足りません:頂点バッファーストリームに含まれているエレメントの数が、インスタンスの数に対して足りません。
 
Error — インスタンスに対する頂点バッファーストリームが、最小インデックス属性レジスタに適切に設定されていません:CreateVertexBuffer() を使用して生成された頂点バッファーのインデックス番号が、CreateVertexBufferForInstance() を使用して生成された頂点バッファーのインデックス番号より大きい場合。

関連する API エレメント


例  ( この例の使用方法 )

次のクラスは、複数の描画呼び出しではなく単一の描画呼び出しを使用するインスタンス化描画機能を使用して、3 つの三角形を描画します。
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.
        }    
    }
}

次のクラスは、複数の描画呼び出しではなく単一の描画呼び出しを使用するインスタンス化描画機能を使用して、3 つの三角形を描画します。
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

()メソッド 
public function present():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

バックレンダリングバッファーを表示します。

present() メソッドを呼び出すと、前回の present() 呼び出し以降のすべてのレンダリング操作の結果が表示され、新しいレンダリングサイクルが開始されます。present を呼び出した後に、clear() を呼び出してから、別の drawTriangles() を呼び出す必要があります。そうしないと、この関数は黄色と緑に対するレンダリングバッファーを交互にクリアするか、enableErrorCheckingtrue に設定されている場合は、例外がスローされます。

また、present() を呼び出すと、setRenderToBackBuffer() の呼び出しと同様に、レンダリングターゲットがリセットされます。


例外
Error — 描画の前にクリアする必要があります:前回 present() を呼び出してから、clear() を呼び出していない場合(連続して present() を呼び出すことはできません。必ず合間に clear() を呼び出す必要があります)。
 
Error — 3768:バックグラウンドでの実行中、Stage3D API は使用できません。

setBlendFactors

()メソッド 
public function setBlendFactors(sourceFactor:String, destinationFactor:String):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

既存のカラーによる描画処理の出力カラーをブレンドするために使用する係数を指定します。

ピクセルシェーダープログラムの出力(ブレンド元)カラーが、次の式に従ってそのピクセルで既存の(ブレンド先)カラーと混合されます。

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

ブレンド先カラーは、そのピクセルのレンダリングバッファーにある現在のカラーです。したがってこのカラーは、直近の clear() 呼び出しと、途中の drawTriangles() 呼び出しの結果設定されたものです。

setBlendFactors() は、ブレンド元カラーとブレンド先カラーを加算する前にこれらに乗算する係数を設定するために使用します。デフォルトのブレンド係数は、sourceFactor = Context3DBlendFactor.ONE および destinationFactor = Context3DBlendFactor.ZERO です。この結果、ブレンド元カラーによってブレンド先カラーが上書きされます(つまり、2 つのカラーのブレンドは行われません)。通常のアルファブレンディングの場合は、sourceFactor = Context3DBlendFactor.SOURCE_ALPHAdestinationFactor = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA を使用します。

この関数のパラメーターを設定するには、Context3DBlendFactor クラスに定義された定数を使用します。

パラメーター

sourceFactor:String — ブレンド元カラーに乗算される係数。デフォルトは、Context3DBlendFactor.ONE です。
 
destinationFactor:String — ブレンド先カラーに乗算される係数。デフォルトは、Context3DBlendFactor.ZERO です。


例外
Error — 無効な列挙値です:sourceFactor または destinationFactor が、Context3DBlendFactor クラスに定義されている値のいずれかではない場合。

関連する API エレメント


例  ( この例の使用方法 )

次のクラスでは、様々なブレンド係数が示されています。この例では、レンダリングバッファーに 4 種類の色付き矩形を描画します。この矩形セットはブレンド「先」です。次に、ブレンド元とブレンド先のブレンドモードが設定され、より大きな矩形(ブレンド「元」)が描画されます。キーの「1」と「2」を使用して、ブレンド元のブレンドモードを順に切り替えます。キーの「3」と「4」を使用して、ブレンド先のブレンドモードを順に切り替えます。
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

()メソッド 
public function setColorMask(red:Boolean, green:Boolean, blue:Boolean, alpha:Boolean):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

カラーをレンダリングバッファーに書き込む際に使用するマスクを設定します。

該当するカラーマスクのパラメーターが true であるカラー成分のみが、カラーがレンダリングバッファーに書き込まれたときに更新されます。例えば、setColorMask( true, false, false, false ) を呼び出すと、このカラーマスクを再度変更するまでは、カラーの赤色成分のみがバッファーに書き込まれます。カラーマスクによって clear() メソッドの動作が影響を受けることはありません。

パラメーター

red:Booleanfalse を設定すると、赤のチャンネルへの変更がブロックされます。
 
green:Booleanfalse を設定すると、緑のチャンネルへの変更がブロックされます。
 
blue:Booleanfalse を設定すると、青のチャンネルへの変更がブロックされます。
 
alpha:Booleanfalse を設定すると、アルファチャンネルへの変更がブロックされます。


例  ( この例の使用方法 )

次の例は、カラーマスクを設定した場合の効果について示しています。この例では、同じカラーの 2 つの三角形が描画されます。上側の三角形はマスクの設定前に描画されるので、白でレンダリングされます。下側の三角形は赤のチャンネルを除くすべてのチャンネルがマスクされた後に描画されます。赤のチャンネルだけが更新できるので、白の三角形は赤でレンダリングされます。
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

()メソッド 
public function setCulling(triangleFaceToCull:String):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

三角形カリングモードを設定します。

三角形は、表示面との相対的な方向関係に基づき、レンダリングパイプラインの初期段階でシーンから除外できることがあります。カリングを正常に行うため、モデルの外部から確認して、頂点を一貫した順序(時計回りまたは反時計回り)で指定します。

パラメーター

triangleFaceToCull:String — カリングモード。Context3DTriangleFace クラスに定義されている定数を 1 つ使用します。


例外
Error — 無効な列挙エラー:triangleFaceToCull が、Context3DTriangleFace クラスで定義されたどの値とも一致しない場合。

関連する API エレメント

setDepthTest

()メソッド 
public function setDepthTest(depthMask:Boolean, passCompareMode:String):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

深度のテストに使用する比較のタイプを設定します。

ピクセルシェーダープログラムからのソースピクセル出力の深度が、深度バッファーにある現在の値と比較されます。比較の結果 false と評価されると、ソースピクセルが破棄されます。true の場合は、ソースピクセルがレンダリングパイプラインの次の手順であるステンシルのテストによって処理されます。さらに、depthMask パラメーターが true に設定されている場合は、深度バッファーがソースピクセルの深度で更新されます。

ソースピクセルと出力先ピクセルの深度の値を比較するテストを設定します。比較が true の場合、ソースピクセルが出力先ピクセルと合成されます。比較命令では、比較演算子がソースピクセル値と出力先ピクセル値の間の挿入演算子として適用されます。

パラメーター

depthMask:Boolean — true の場合、出力先の深度の値はソースピクセルを基に更新されます。
 
passCompareMode:String — 深度の比較テストの操作。Context3DCompareMode のいずれかの値。

関連する API エレメント

    setFillMode

()メソッド 
public function setFillMode(fillMode:String):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 16

レンダリングで使用される塗りモードを設定します。このインターフェイスは AIR デスクトップでのみ使用できます。

パラメーター

fillMode:String — 値が WIREFRAME の場合、オブジェクトはメッシュで表示されます。値が SOLID の場合、オブジェクトはソリッドシェーディングの多角形で表示されます。

関連する API エレメント

setProgram

()メソッド 
public function setProgram(program:Program3D):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

後続のレンダリングに使用する頂点シェーダープログラムおよびフラグメントシェーダープログラムを設定します。

パラメーター

program:Program3D — 使用する頂点プログラムおよびフラグメントプログラムを表す Program3D オブジェクト。

関連する API エレメント


例  ( この例の使用方法 )

この例は、レンダリングコンテキストに頂点ペアおよびピクセルプログラムを作成し、アップロードし、アクティブにする方法を示しています。この例の renderContext オブジェクトは Context3D クラスのインスタンスです。この例のプログラムは、Adobe Graphics Assembly Language(AGAL)で記述されています。
//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

()メソッド 
public function setProgramConstantsFromByteArray(programType:String, firstRegister:int, numRegisters:int, data:ByteArray, byteArrayOffset:uint):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11.1, AIR 3.1

ByteArray に保存された値を使用するシェーダープログラムで必要となる定数を設定します。

頂点プログラムまたはフラグメントプログラムからアクセスできる定数を設定します。

パラメーター

programType:String — Context3DProgramType のいずれかの値。
 
firstRegister:int — 最初に設定するシェーダープログラム定数のインデックス。
 
numRegisters:int — 設定するレジスタの数。すべてのレジスタは 4 つの float 値として読み取られます。
 
data:ByteArray — ソース ByteArray オブジェクト。
 
byteArrayOffset:uint — ByteArray への読み取り用オフセット。


例外
TypeError — kNullPointerError(data が null の場合)。
 
RangeError — kConstantRegisterOutOfBounds(最大数を超える数のシェーダー定数を設定しようとした場合)。
 
RangeError — kBadInputSize(byteArrayOffsetdata の長さ以上、またはdata のエレメントの数 - byteArrayOffsetnumRegisters*16 よりも小さい場合)

関連する API エレメント

setProgramConstantsFromMatrix

()メソッド 
public function setProgramConstantsFromMatrix(programType:String, firstRegister:int, matrix:Matrix3D, transposedMatrix:Boolean = false):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

Matrix3D に保存された値を使用して、シェーダープログラムで必要となる定数を設定します。

この関数を使用して、シェーダープログラムにマトリックスを渡します。この関数は、頂点プログラムまたはフラグメントプログラムで使用する 4 個の constant レジスタを設定します。マトリックスは行ごとにレジスタに割り当てられます。最初の constant レジスタにはマトリックスの先頭行が割り当てられます。頂点プログラムには 128 個のレジスタ、フラグメントプログラムには 28 個のレジスタを設定できます。

パラメーター

programType:String — シェーダープログラムのタイプ(Context3DProgramType.VERTEX または Context3DProgramType.FRAGMENT)。
 
firstRegister:int — 設定する最初の constant レジスタのインデックス。Matrix3D には 16 個の値が含まれているので、4 個のレジスタが設定されます。
 
matrix:Matrix3D — 定数値を含むマトリックス。
 
transposedMatrix:Boolean (default = false)true の場合、マトリックスエントリが転置された順序でレジスタにコピーされます。デフォルト値は false です。


例外
TypeError — Null ポインターエラーです:matrix が null の場合。
 
RangeError — constant レジスタ数が範囲外です:シェーダーの constant レジスタの最大数を超えて設定しようとした場合。

詳細

関連する API エレメント

setProgramConstantsFromVector

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

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

シェーダープログラムの定数の入力を設定します。

頂点シェーダープログラムおよびフラグメントシェーダープログラムからアクセスできる定数の配列を設定します。Program3D に設定された定数は、constant レジスタとしてシェーダープログラム内でアクセスできます。各 constant レジスタは、4 つの浮動小数点値(x, y, z, w)で構成されています。したがって、data ベクトルではレジスタごとに 4 つのエントリが必要になります。頂点プログラムとフラグメントプログラムに設定できるレジスタの数は Context3DProfile によって異なります。

パラメーター

programType:String — シェーダープログラムのタイプ(Context3DProgramType.VERTEX または Context3DProgramType.FRAGMENT)。
 
firstRegister:int — 設定する最初の constant レジスタのインデックス。
 
data:Vector.<Number> — 浮動小数点定数の値。少なくとも numRegisters の 4 つのエレメントが data に存在する必要があります。
 
numRegisters:int (default = -1) — 設定する定数の数。-1(デフォルト値)を指定して、使用可能なデータをすべて利用できるように十分なレジスタを設定します。


例外
TypeError — Null ポインターエラーです:datanull の場合。
 
RangeError — constant レジスタ数が範囲外です:シェーダーの constant レジスタの最大数を超えて設定しようとした場合。
 
RangeError — 入力サイズが正しくありません:data 内のエレメントの数が numRegisters*4 よりも小さい場合

詳細

関連する API エレメント

setRenderToBackBuffer

()メソッド 
public function setRenderToBackBuffer():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

レンダリングターゲットとしてバックレンダリングバッファーを設定します。drawTriangles()clear() メソッドを後で呼び出すと、バックバッファーが更新されます。setRenderToTexture() メソッドを使用した後に、このメソッドを使用して、通常のレンダリングを再開します。

setRenderToTexture

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

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

レンダリングターゲットとして指定されたたテクスチャを設定します。

drawTriangles()clear() メソッドを後で呼び出すと、バックバッファーではなく指定したテクスチャが更新されます。ミップマップが自動的に作成されます。setRenderToBackBuffer() を使用して、バックバッファーへの通常のレンダリングを再開します。

描画の前にクリアは不要です。クリア処理がない場合は、レンダリングコンテンツが保持されます。深度バッファーとステンシルバッファーもクリアされません。ただし、最初の描画時には強制的にクリアされます。present() を呼び出すと、ターゲットがバックバッファーにリセットされます。

パラメーター

texture:flash.display3D.textures:TextureBase — レンダリング先のターゲットテクスチャ。null に設定して、バックバッファーへのレンダリングを再開します(setRenderToBackBuffer() および present もターゲットをバックバッファーにリセットします)。
 
enableDepthAndStencil:Boolean (default = false)true の場合、深度およびステンシルをテストできます。false の場合、後続の描画操作では、深度およびステンシル状態はすべて無視されます。
 
antiAlias:int (default = 0) — アンチエイリアスの品質。アンチエイリアスを無効にするには 0 を使用します。数値が高くなるとアンチエイリアスが向上しますが、必要な計算も増えます。現在、値はモバイルプラットフォームとソフトウェアレンダリングコンテキストで無視されます。
 
surfaceSelector:int (default = 0) — 更新するテクスチャのエレメントを指定します。Texture オブジェクトは 1 面なので、0 (デフォルト値)を指定する必要があります。CubeTexture オブジェクトは 6 面なので、0 ~ 5 の整数を指定できます。
 
colorOutputIndex:int (default = 0) — output カラーレジスタです。制限またはベースラインモードでは 0 である必要があります。0 でない場合は、output カラーレジスタを指定します。


例外
ArgumentError surfeSelector パラメーターが一致しない場合。値は、2D テクスチャの場合は 0、立方体マップの場合は 0 ~ 5 にする必要があります。
 
ArgumentError texture が TextureBase クラス(Texture クラスまたは CubeTexture クラス)から派生していません。
 
ArgumentError colorOutputIndex は 0 から 3 の整数である必要があります。
 
ArgumentError — この呼び出しには、標準プロファイルまたは上記で作成された Context3D が必要です。

関連する API エレメント

setSamplerStateAt

()メソッド 
public function setSamplerStateAt(sampler:int, wrap:String, filter:String, mipfilter:String):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11.6, AIR 3.6

テクスチャサンプラーの状態を手動でオーバーライドします。

テクスチャサンプリングの状態は通常、setProgram を呼び出したときに設定されますが、この関数を使用してテクスチャサンプラーの状態をオーバーライドできます。プログラムでサンプラーの状態を変更できないようにする場合は、AGAL 内で ignoresamnpler ビットを設定し、この関数を使用してください。

パラメーター

sampler:int — 使用する sampler レジスタです。AGAL 内の sampler レジスタにマップされます。
 
wrap:String — ラップモードです。Context3DWrapMode 内で定義されています。デフォルトは repeat です。
 
filter:String — テクスチャフィルタリングモードです。Context3DTextureFilter 内で定義されています。デフォルトは nearest です。
 
mipfilter:String — ミップマップフィルターです。Context3DMipFilter 内で定義されています。デフォルトは none です。


例外
Error — サンプラーが範囲外です。
 
Error — ラップ、フィルター、マップフィルターの列挙が不正です。
 
Error — オブジェクトが破棄されました:dispose() の呼び出しによって、または基盤のレンダリングハードウェアが喪失したために、この Context3D オブジェクトが破棄された場合。

関連する API エレメント

setScissorRectangle

()メソッド 
public function setScissorRectangle(rectangle:Rectangle):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

シザー矩形(描画マスクの一種)を設定します。レンダラーはシザー矩形の内側の領域にのみ描画します。切り取りによってクリア操作は影響を受けません。

切り取りをオフにするには、null を渡します。

パラメーター

rectangle:Rectangle — 描画する矩形。矩形の位置とサイズ(ピクセル単位)を指定します。座標系の基点はビューポイントの左上隅で、正の値が右下方向に増加します(Flash の通常の表示座標系と同じ)。


例  ( この例の使用方法 )

次のクラスは、ステージ上の 640x480 ピクセルのビューポートに 2 つの三角形を描画します。これらの三角形は、原点 (0,0,0) にある 1 つの頂点を共有します。

三角形は、頂点バッファーとインデックスバッファーを使用して定義されます。頂点バッファーには、三角形の各頂点の位置と色の情報が含まれます。インデックスバッファーには、頂点バッファーへのインデックスが含まれます。3 つのインデックスによって 1 つの三角形が定義されます。例えば、頂点バッファーの最初の 3 つの点で構成される三角形は、インデックスバッファーに 0,1,2 として表示されます。

この簡単な例では、3D 変形は行われません。標準的な表示領域内のオブジェクト(原点を中心とする 2x2x2 の立方体ボリューム)のみが表示されます。ただし、標準的な 3D シーンをレンダリングするときは、遠近投影法または正投影法を使用して、レンダリングするオブジェクトをこの表示領域に投影します。

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

()メソッド 
public function setStencilActions(triangleFace:String = "frontAndBack", compareMode:String = "always", actionOnBothPass:String = "keep", actionOnDepthFail:String = "keep", actionOnDepthPassStencilFail:String = "keep"):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

ステンシルモードおよびステンシル操作を設定します。

描画の各呼び出しに、8 bit のステンシル参照値を関連付けることができます。レンダリング中に、参照値とフレームバッファーに既に保存されている値を対応させてテストできます。テストの結果によって、描画アクションを制御したり、保存されているステンシル値の更新の有無や更新方法を制御できます。また、深度のテストによって、ステンシルのテストを実行するかどうかを制御できます。深度のテストが失敗した場合は、その結果を使用して、ステンシルバッファーで実行するアクションを制御できます。

ピクセル処理パイプラインでは、深度のテストが最初に行われます。深度のテストが失敗した場合、ステンシルバッファーの更新アクションは実行できますが、それ以上のステンシルバッファー値の評価はできません。深度のテストが成功した場合は、ステンシルのテストが行われます。ステンシルのテスト結果に応じて、他のアクションを実行できます。

ステンシルの参照値は、setStencilReferenceValue() を使用して設定されます。

パラメーター

triangleFace:String (default = "frontAndBack") — ステンシル操作で使用できる三角形の方向。Context3DTriangleFace のいずれかの値。
 
compareMode:String (default = "always") — 現在のステンシルの参照値と出力先ピクセルのステンシル値の比較に使用するテスト演算子。出力先ピクセルのカラーと深度の更新は、この比較の結果が true の場合に実行されます。ステンシルのアクションは、以下のアクションパラメーターで要求されたとおりに実行されます。比較命令では、比較演算子が現在値と出力先の参照値の間の挿入演算子として適用されます(擬似コード:if stencilReference OPERATOR stencilbuffer then pass)。Context3DCompareMode クラスに定義されている定数を 1 つ使用します。
 
actionOnBothPass:String (default = "keep") — 深度およびステンシルの比較がどちらも正常であった場合に実行されるアクション。Context3DStencilAction クラスに定義されている定数を 1 つ使用します。
 
actionOnDepthFail:String (default = "keep") — 深度の比較結果が失敗した場合に実行されるアクション。Context3DStencilAction クラスに定義されている定数を 1 つ使用します。
 
actionOnDepthPassStencilFail:String (default = "keep") — 深度の比較が正常で、ステンシルの比較が失敗した場合に実行されるアクション。Context3DStencilAction クラスに定義されている定数を 1 つ使用します。


例外
Error — 無効な列挙エラー:triangleFace が、Context3DTriangleFace クラスで定義されたどの値とも一致しない場合。
 
Error — 無効な列挙エラー:compareMode が、Context3DCompareMode クラスで定義されたどの値とも一致しない場合。
 
Error — 無効な列挙エラー:actionOnBothPassactionOnDepthFail または actionOnDepthPassStencilFail が、Context3DStencilAction クラスで定義されたどの値とも一致しない場合。

関連する API エレメント


例  ( この例の使用方法 )

次のクラスは、ステンシルを描画し、それを後続の描画処理でマスクとして使用する方法を示しています。この例では、次の手順が実行されます。
  • ステンシルバッファーを 0 にクリアします。
  • ステンシルアクションを、ステンシルテストが成功したらインクリメントするように設定します。
  • ステンシル参照値を 0 に設定します。
  • 三角形マスクを描画します。三角形が描画された場所ではすべて、ステンシルテストが成功します。これは、ステンシルバッファーが 0 にクリアされおり、参照値が 0 であるからです。その結果、ステンシルバッファーが 1 にインクリメントされます。この時点で、三角形マスクが描画されます。
  • ステンシルアクションを変更し、後続の描画処理でステンシルバッファーが変更されないようにします。
  • フルスクリーン矩形(マルチカラー)を描画します。ステンシル参照値が 0 のままなので、マスクされた領域でステンシルテストが失敗します。そのため、マスクされた領域を除くすべての領域で三角形が描画されます。
  • ステンシル参照値を 1 に変更します。
  • 別のフルスクリーン矩形(赤)を描画します。この時点で、マスクされた領域(1 にインクリメントされている)を除くすべての領域でステンシルテストが失敗します。そのため、マスクされた領域でのみ三角形が描画されます。

この例にマウスを合わせて、主な手順を順に確認してください。

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

()メソッド 
public function setStencilReferenceValue(referenceValue:uint, readMask:uint = 255, writeMask:uint = 255):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

ステンシルのテストで使用するステンシル比較値を設定します。

この参照値の下位 8 bit のみが使用されます。ステンシルバッファー値の長さも 8 bit です。ステンシルバッファーをビットフィールドとして使用するには、readMaskwriteMask を使用します。

パラメーター

referenceValue:uint — 参照値の比較テストで使用する 8 bit の参照値。
 
readMask:uint (default = 255) — 比較の前に、現在のステンシルバッファー値と参照値の両方に適用される 8 bit のマスク。
 
writeMask:uint (default = 255) — ステンシルバッファーの更新の前に、参照値に適用される 8 bit のマスク。

関連する API エレメント

setTextureAt

()メソッド 
public function setTextureAt(sampler:int, texture:flash.display3D.textures:TextureBase):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

フラグメントプログラムのテクスチャ入力レジスタに使用するテクスチャを指定します。

フラグメントプログラムは最大 8 個のテクスチャオブジェクトの情報を読み取ることができます。この関数を使用して、フラグメントプログラムで使用する sampler レジスタの 1 つに Texture オブジェクトまたは CubeTexture オブジェクトを割り当てます。

注意:setProgram を使用して)アクティブなフラグメントプログラムをテクスチャの使用が少ないシェーダーに変更する場合は、未使用のレジスタを null に設定してください。

         setTextureAt( 7, null );
         

パラメーター

sampler:int — sampler レジスタのインデックス(値は 0 ~ 7)。
 
texture:flash.display3D.textures:TextureBase — Texture インスタンスまたは CubeTexture インスタンスを使用できるようにするテクスチャオブジェクト。

詳細

関連する API エレメント

Texture
CubeTexture

setVertexBufferAt

()メソッド 
public function setVertexBufferAt(index:int, buffer:VertexBuffer3D, bufferOffset:int = 0, format:String = "float4"):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 11, AIR 3

単一の頂点シェーダープログラムの入力に対応する頂点データコンポーネントを指定します。

setVertexBufferAt メソッドを使用して、頂点プログラムへの入力に属する VertexBuffer3D バッファーの各頂点に定義されているデータのコンポーネントを特定します。頂点プログラムの開発者が、頂点ごとに必要なデータ量を判断します。1 つまたは複数の VertexBuffer3D ストリームのデータが、頂点シェーダープログラムの attribute レジスタにマップされます。

頂点シェーダーで使用するデータの最小単位は 32 bit です。頂点ストリームに対するオフセット値は、32 bit の倍数で指定します。

例えば、プログラマーは次のデータを使用して各頂点を定義できます。
position:  x    float32
           y    float32
           z    float32
color:     r    unsigned byte
           g    unsigned byte
           b    unsigned byte
           a    unsigned byte
頂点が buffer という名前の1 つの VertexBuffer3D オブジェクトで定義されていると仮定すると、頂点は次のコードで頂点シェーダーに割り当てられます。
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

パラメーター

index:int — 頂点シェーダーの attribute レジスタのインデックス(0 ~ 7)。
 
buffer:VertexBuffer3D — 頂点シェーダーに提供する頂点のソースデータを含むバッファー。
 
bufferOffset:int (default = 0) — この属性の読み取りを開始する 1 つの頂点データの起点のオフセット。上述の例では、位置データは最初の属性なので、オフセットは 0 です。カラー属性は 3 つの 32 bit の位置の値を用いるので、カラーのオフセットは 3 です。オフセット値は、32 bit の単位で指定します。
 
format:String (default = "float4") — この属性のデータ型を指定する Context3DVertexBufferFormat クラスの値。


例外
Error — 無効な列挙値です:形式が Context3DVertexBufferFormat クラスに定義されている値ではない場合。
 
RangeError — attribute レジスタ数が範囲外です:index パラメーターが 0 ~ 7の範囲外の場合(シェーダーでは最大 8 個の頂点属性レジスタを使用できます)。

詳細

関連する API エレメント

Context3DExample.as

次のクラスは、遠近投影法を使用して回転立方体を描画します。
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 ]英語で表示される理由
ActionScript 3.0 リファレンスガイドのコンテンツが英語で表示されます。

ActionScript 3.0 リファレンスガイドのすべての部分がすべての言語に翻訳されているわけではありません。言語エレメントが翻訳されていない場合、そのエレメントは英語で表示されます。例えば、ga.controls.HelpBox クラスはどの言語にも訳されていません。このため、リファレンスガイドの日本語バージョンでは、ga.controls.HelpBox クラスは英語で表示されます。