The Stage3D class provides a display area and a programmable rendering context for drawing 2D and 3D graphics.
Stage3D provides a high-performance rendering surface for content rendered
using the Context3D class. This surface uses the graphics processing unit
(GPU) when possible. The runtime stage provides a fixed number of Stage3D
objects. The number of instances varies by the type of device. Desktop
computers typically provide four Stage3D instances.
Content drawn to the Stage3D viewport is composited with other visible
graphics objects in a predefined order. The most distant are all
StageVideo surfaces. Stage3D comes next, with traditional Flash display
object content being rendered last, on top of all others. StageVideo and
Stage3D layers are rendered with no transparency; thus a viewport completely
obscures any other Stage3D or StageVideo viewports positioned underneath it.
Display list content is rendered with transparency.
Note: You can use the visible property of a Stage3D object to remove
it from the display temporarily, such as when playing a video using the
StageVideo class.
A Stage3D object is retrieved from the Player stage using its stage3Ds
member. Use the Stage3D instance to request an associated rendering context
and to position the display on the runtime stage.
Events:
context3DCreate | Dispatched when a rendering context is created. |
|---|---|
error | Dispatched when a request for a rendering context fails. |
See also:
Variables
read onlycontext3D:Context3D
The Context3D object associated with this Stage3D instance.
This property is initially null. To create the Context3D instance for this
Stage3D object, add an event listener for the context3DCreate event and then call
the requestContext3D method. The listener is called once the Context3D object has
been created.
visible:Bool
Specifies whether this Stage3D object is visible.
Use this property to temporarily hide a Stage3D object on the Stage. This property
defaults to true.
x:Float
The horizontal coordinate of the Stage3D display on the stage, in pixels.
This property defaults to zero.
y:Float
The vertical coordinate of the Stage3D display on the stage, in pixels.
This property defaults to zero.
Methods
requestContext3D(context3DRenderMode:Context3DRenderMode = AUTO, profile:Context3DProfile = BASELINE):Void
Request the creation of a Context3D object for this Stage3D instance.
Before calling this function, add an event listener for the context3DCreate
event. If you do not, the runtime throws an exception.
Important note on device loss:
GPU device loss occurs when the GPU hardware becomes unavailable to the application.
The Context3D object is disposed when the GPU device is lost. GPU device loss can
happen for various reasons, such as, when a mobile device runs out of battery power
or a Windows device goes to a "lock screen." When the GPU becomes available again,
the runtime creates a new Context3D instance and dispatches another
context3DCreate event. Your application must reload all assets and reset the
rendering context state whenever device loss occurs.
Design your application logic to handle the possibility of device loss and context
regeneration. Do not remove the context3DCreate event listener. Do not perform
actions in response to the event that should not be repeated in the application.
For example, do not add anonymous functions to handle timer events because they
would be duplicated after device loss. To test your application's handling of
device loss, you can simulate device loss by calling the dispose() method of the
Context3D object.
The following example illustrates how to request a Context3d rendering context:
if( stage.stage3Ds.length > 0 )
{
var stage3D:Stage3D = stage.stage3Ds[0];
stage3D.addEventListener( Event.CONTEXT3D_CREATE, myContext3DHandler );
stage3D.requestContext3D( );
}
function myContext3DHandler ( event : Event ) : void
{
var targetStage3D : Stage3D = cast event.target;
InitAll3DResources( targetStage3D.context3D );
StartRendering( targetStage3D.context3D );
}Parameters:
context3DRenderMode | The type of rendering context to request. The default
is |
|---|---|
profile | (AIR 3.4 and higher) Specifies the extent to which Flash Player
supports lower-level GPUs. The default is |
Throws:
Error | if no listeners for the |
|---|---|
ArgumentError | if this method is called again with a different
|
Events:
context3DCreate | Dispatched when the requested rendering context is successfully completed. |
|---|---|
error | Dispatched when the requested rendering context cannot be created. |
requestContext3DMatchingProfiles(profiles:Vector<Context3DProfile>):Void
Request the creation of a Context3D object for this Stage3D instance.
Before calling this function, add an event listener for the context3DCreate
event. If you do not, the runtime throws an exception.
Important note on device loss:
GPU device loss occurs when the GPU hardware becomes unavailable to the
application. The Context3D object is disposed when the GPU device is lost. GPU
device loss can happen for various reasons, such as, when a mobile device runs out
of battery power or a Windows device goes to a "lock screen." When the GPU becomes
available again, the runtime creates a new Context3D instance and dispatches
another context3DCreate event. Your application must reload all assets and reset
the rendering context state whenever device loss occurs.
Design your application logic to handle the possibility of device loss and context
regeneration. Do not remove the context3DCreate event listener. Do not perform
actions in response to the event that should not be repeated in the application.
For example, do not add anonymous functions to handle timer events because they
would be duplicated after device loss. To test your application's handling of
device loss, you can simulate device loss by calling the dispose() method of the
Context3D object.
The following example illustrates how to request a Context3d rendering context:
if( stage.stage3Ds.length > 0 )
{
var stage3D:Stage3D = stage.stage3Ds[0];
stage3D.addEventListener( Event.CONTEXT3D_CREATE, myContext3DHandler );
stage3D.requestContext3DMatchingProfiles(Vector.ofValues(Context3DProfile.BASELINE, Context3DProfile.BASELINE_EXTENDED));
}
function myContext3DHandler ( event : Event ) : Void
{
var targetStage3D : Stage3D = cast event.target;
if(targetStage3D.context3D.profile.localeCompare(Context3DProfile.BASELINE) == 0)
{
InitAll3DResources( targetStage3D.context3D );
}
StartRendering( targetStage3D.context3D );
}Parameters:
profiles | (AIR 3.4 and higher) a profile arrays that developer want to
use in their flash program. When developer pass profile array to
|
|---|
Throws:
Error | if no listeners for the context3DCreate event have been added to this Stage3D object. |
|---|---|
ArgumentError | if this method is called before the previous call has completed. |
ArgumentError | if the item in array is not openfl.display3D.Context3DProfile. |
Events:
context3DCreate | Dispatched when the requested rendering context is successfully completed. |
|---|---|
error | Dispatched when the requested rendering context cannot be created. If the hardware is not available, it will not create a software context3d. |