- 浏览: 102720 次
- 性别:
- 来自: 大连
文章分类
最新评论
很多教程都会在开始讲到关于stage3D显示层级的概念,不知道大家有没有在这方面有所了解,没有了解也没关系,笔者制作过一个视频教程,里面讲到了这方面内容,具体的请看《stage3D理论概述》这篇文章。
估计大家可能现在对stage3D中的一些新增的类有些模糊,很多人看到flash.display3D这个包中的一大堆陌生的单词有些胆怯。其实大家不需要这么紧张,如果你仔细翻看最新的API文档的话,你还是能够看到,其中大部分类都定义了一些常量。而我们真正需要的功能类就只有少数的几个,如果你非要精简到最简单的话,那么你只需要4个类即可完成一个最简单的DEMO。
这四个类分别是:Context3D,VertexBuffer3D,IndexBuffer3D,Program3D。实际上如果你不考虑贴图的话,这四个类基本上可以称得上时stage3D的四大天王了。那么如何正确使用这写stage3D的API呢?下面就来为大家介绍一下如何开启stage3D功能。因为看到很多朋友在一开始接触stage3D的时候无法将舞台正确的实例化,但是错误的工作流不会引发运行时错误,这也就导致大家在学习的时候摸不到头脑,总会认为是在AGAL上面出现问题,比较我们现在还无法在GPU运行时将寄存器中的数据trace出来。好了我们来看看如何初始化这部分功能的吧。
由于我们对于stage3D的编程的目的最终都是可视化,所以我们不得不在制作时考虑一下关于stage的问题,这就需要我们在一开始就检测stage是否初始化完成,不要存在疑惑。很多人觉得stage在程序一开始运行的时候就会第一次被实例化并且创建出来,实际上这样做是相当危险的。
所以我们第一部分的代码应该使用如下语句:
1 //侦听舞台创建
2 this.addEventListener(Event.ADDED_TO_STAGE,init);
不必担心,这个代码是早在AS3出现的时候就一起出现的了。如果你对这个事件还是非常陌生,或者说一知半解,那么你可以翻翻我们伟大的API文档,里面会告诉你关于它的所有秘密。
当我们事件监听触发之后,我们就可以放手来选择我们想使用的stage3D层了,这里需要说明一下,在大部分机器中我们都能正常的使用4个stage3D图层,但是考虑到目前这些图层的特性和环境的因素,我还是推荐大家默认使用编号为0的这个stage3D图层,以免发生不必要的意外。创建并监听stage3D是否启动,请看下面代码:
01 //舞台创建相应函数
02 private function init( evt:Event ):void
03 {
04 //注销舞台创建侦听
05 this.removeEventListener(Event.ADDED_TO_STAGE,init);
06 //侦听stage3D启动事件
07 var stage3d:Stage3D = stage.stage3Ds[this.stageIndex];
08 stage3d.addEventListener(Event.CONTEXT3D_CREATE, stage3d_scene_create_headler);
09 //启动stage3D
10 stage3d.requestContext3D();
11 }
OK!通过这样几句简单的代码,我们在运行的时候就可以安全的启动GPU加速功能了,那么在启动之后我们能做什么呢?一句话总结:把你的3D梦想变成现实!
为了验证我们GPU的一些数据,我们仅仅做了一个非常简单的代码就是将图形库驱动程序类型打印出来。代码如下:
1 //stage3d启动成功响应事件
2 private function stage3d_scene_create_headler( evt:Event ):void
3 {
4 //将可编程管道取值
5 this.context3d = stage.stage3Ds[this.stageIndex].context3D;
6 trace("Your stage3D is created!");
7 //打印图形库驱动程序类型
8 trace("Graphics library driver:" + this.context3d.driverInfo);
9 }
由于我这里使用的是MAC机器,所以打印出的内容为:
Your stage3D is created!
Graphics library driver:OpenGL (Direct blitting)
下面应该是大家看这篇文章的时候迫切想看到的全部代码!
01 package
02 {
03 import flash.display.Sprite;
04 import flash.display.Stage3D;
05 import flash.display3D.Context3D;
06 import flash.events.Event;
07
08 /**
09 * 程序入口,负责开启stage3D功能
10 * @author mebius.A闪(张鑫磊)
11 *
12 */
13 public class stage3Dstudy extends Sprite
14 {
15
16 /*------ property ------*/
17 private var stageIndex:uint = 0;
18 private var context3d:Context3D;
19 /*------ function ------*/
20 /**
21 * 创建一个stage3Dstudy对象
22 *
23 */
24 public function stage3Dstudy()
25 {
26 //侦听舞台创建
27 this.addEventListener(Event.ADDED_TO_STAGE,init);
28 }
29 //舞台创建相应函数
30 private function init( evt:Event ):void
31 {
32 //注销舞台创建侦听
33 this.removeEventListener(Event.ADDED_TO_STAGE,init);
34 //侦听stage3D启动事件
35 var stage3d:Stage3D = stage.stage3Ds[this.stageIndex];
36 stage3d.addEventListener(Event.CONTEXT3D_CREATE, stage3d_scene_create_headler);
37 //启动stage3D
38 stage3d.requestContext3D();
39 }
40 //stage3d启动成功响应事件
41 private function stage3d_scene_create_headler( evt:Event ):void
42 {
43 //将可编程管道取值
44 this.context3d = stage.stage3Ds[this.stageIndex].context3D;
45 trace("Your stage3D is created!");
46 //打印图形库驱动程序类型
47 trace("Graphics library driver:" + this.context3d.driverInfo);
48 }
49 }
估计大家可能现在对stage3D中的一些新增的类有些模糊,很多人看到flash.display3D这个包中的一大堆陌生的单词有些胆怯。其实大家不需要这么紧张,如果你仔细翻看最新的API文档的话,你还是能够看到,其中大部分类都定义了一些常量。而我们真正需要的功能类就只有少数的几个,如果你非要精简到最简单的话,那么你只需要4个类即可完成一个最简单的DEMO。
这四个类分别是:Context3D,VertexBuffer3D,IndexBuffer3D,Program3D。实际上如果你不考虑贴图的话,这四个类基本上可以称得上时stage3D的四大天王了。那么如何正确使用这写stage3D的API呢?下面就来为大家介绍一下如何开启stage3D功能。因为看到很多朋友在一开始接触stage3D的时候无法将舞台正确的实例化,但是错误的工作流不会引发运行时错误,这也就导致大家在学习的时候摸不到头脑,总会认为是在AGAL上面出现问题,比较我们现在还无法在GPU运行时将寄存器中的数据trace出来。好了我们来看看如何初始化这部分功能的吧。
由于我们对于stage3D的编程的目的最终都是可视化,所以我们不得不在制作时考虑一下关于stage的问题,这就需要我们在一开始就检测stage是否初始化完成,不要存在疑惑。很多人觉得stage在程序一开始运行的时候就会第一次被实例化并且创建出来,实际上这样做是相当危险的。
所以我们第一部分的代码应该使用如下语句:
1 //侦听舞台创建
2 this.addEventListener(Event.ADDED_TO_STAGE,init);
不必担心,这个代码是早在AS3出现的时候就一起出现的了。如果你对这个事件还是非常陌生,或者说一知半解,那么你可以翻翻我们伟大的API文档,里面会告诉你关于它的所有秘密。
当我们事件监听触发之后,我们就可以放手来选择我们想使用的stage3D层了,这里需要说明一下,在大部分机器中我们都能正常的使用4个stage3D图层,但是考虑到目前这些图层的特性和环境的因素,我还是推荐大家默认使用编号为0的这个stage3D图层,以免发生不必要的意外。创建并监听stage3D是否启动,请看下面代码:
01 //舞台创建相应函数
02 private function init( evt:Event ):void
03 {
04 //注销舞台创建侦听
05 this.removeEventListener(Event.ADDED_TO_STAGE,init);
06 //侦听stage3D启动事件
07 var stage3d:Stage3D = stage.stage3Ds[this.stageIndex];
08 stage3d.addEventListener(Event.CONTEXT3D_CREATE, stage3d_scene_create_headler);
09 //启动stage3D
10 stage3d.requestContext3D();
11 }
OK!通过这样几句简单的代码,我们在运行的时候就可以安全的启动GPU加速功能了,那么在启动之后我们能做什么呢?一句话总结:把你的3D梦想变成现实!
为了验证我们GPU的一些数据,我们仅仅做了一个非常简单的代码就是将图形库驱动程序类型打印出来。代码如下:
1 //stage3d启动成功响应事件
2 private function stage3d_scene_create_headler( evt:Event ):void
3 {
4 //将可编程管道取值
5 this.context3d = stage.stage3Ds[this.stageIndex].context3D;
6 trace("Your stage3D is created!");
7 //打印图形库驱动程序类型
8 trace("Graphics library driver:" + this.context3d.driverInfo);
9 }
由于我这里使用的是MAC机器,所以打印出的内容为:
Your stage3D is created!
Graphics library driver:OpenGL (Direct blitting)
下面应该是大家看这篇文章的时候迫切想看到的全部代码!
01 package
02 {
03 import flash.display.Sprite;
04 import flash.display.Stage3D;
05 import flash.display3D.Context3D;
06 import flash.events.Event;
07
08 /**
09 * 程序入口,负责开启stage3D功能
10 * @author mebius.A闪(张鑫磊)
11 *
12 */
13 public class stage3Dstudy extends Sprite
14 {
15
16 /*------ property ------*/
17 private var stageIndex:uint = 0;
18 private var context3d:Context3D;
19 /*------ function ------*/
20 /**
21 * 创建一个stage3Dstudy对象
22 *
23 */
24 public function stage3Dstudy()
25 {
26 //侦听舞台创建
27 this.addEventListener(Event.ADDED_TO_STAGE,init);
28 }
29 //舞台创建相应函数
30 private function init( evt:Event ):void
31 {
32 //注销舞台创建侦听
33 this.removeEventListener(Event.ADDED_TO_STAGE,init);
34 //侦听stage3D启动事件
35 var stage3d:Stage3D = stage.stage3Ds[this.stageIndex];
36 stage3d.addEventListener(Event.CONTEXT3D_CREATE, stage3d_scene_create_headler);
37 //启动stage3D
38 stage3d.requestContext3D();
39 }
40 //stage3d启动成功响应事件
41 private function stage3d_scene_create_headler( evt:Event ):void
42 {
43 //将可编程管道取值
44 this.context3d = stage.stage3Ds[this.stageIndex].context3D;
45 trace("Your stage3D is created!");
46 //打印图形库驱动程序类型
47 trace("Graphics library driver:" + this.context3d.driverInfo);
48 }
49 }
发表评论
-
Adobe Flash Builder 4.6破解方法
2012-12-16 20:08 7C:\Program Files (x86)\Adobe\Ad ... -
FluorineFx 配置支持纯AS3工程!
2012-11-30 13:45 0FluorineFx 配置支持纯AS3工程! 由于自己用的纯 ... -
Flex中ArrayCollection的复制
2012-11-30 13:39 0lex中ArrayCollection的复制 2011- ... -
Flex的array和arrayCollection的应用实例
2012-11-30 13:34 0ArrayCollection是flex中的数组集合类,它是很 ... -
Flex air 中调用com组件的方法
2012-11-30 11:45 0air中直接调用com组件是很难做到的,但我们可以通过Fl ... -
FluorineFx 之 DateFeed,既服务端的数据推送服务
2012-11-30 11:29 0在开发如股票客户端的软件,客户端的数据在实时刷新,是由于服务端 ... -
收藏 flex+fluorinefx+asp.net c#后台如何接收arraycollection 并转换处理
2012-11-30 11:25 0flex,在.NET环境下通过FluorineFx传送Arra ... -
特殊符号收集大全
2012-11-27 19:06 922愛心符號 愛心符號怎 ... -
TextFormat设置中文字体font属性注意的问题
2012-11-27 19:05 2424如果要设置的字体为中文名称,则一定要使用对应的英文名称来设置才 ... -
flex国际化的问题
2012-11-27 18:52 7291、如果是简单项目,一般采用的是类似struts的bundle ... -
flex textfield中文字体
2012-11-27 17:14 970由于flex的图文混排总是有问题,而且效率实在有点低。所以最近 ... -
FLEX如何设置发光字体
2012-11-27 16:35 729<mx:Text id="bulletin&q ... -
Flex实现全屏源代码示例
2012-11-12 10:18 607stage.displayState = (stage.dis ... -
flex4.5组件:如何自定义VideoPlayer的全屏行为
2012-11-12 09:41 870Flex4中增加了一个视频播放组件:VideoPlayer,相 ... -
Flex+java+spring 上传和下载文件AIR
2012-11-09 10:50 839什么都别说附上代码 UploadFile.java ... -
FluorineFX初学者之最初配置 Flex4与.NET结合 .
2012-11-09 09:43 891FluorineFX整个架构和BlazeDs差不多,只是最开始 ... -
Flex 绑定/双向绑定
2012-11-08 11:39 6761.什么是数据绑定? Data binding is ... -
Flex ArrayCollection 之排序
2012-11-07 15:59 678利用ArrayCollection的sort属性 & ... -
Flex读取xml文件
2012-11-07 13:12 585<?xml version="1.0& ... -
FLEX中使用FLVPlayback控件
2012-11-07 08:58 828即swc文件的导入,使用问题. FLVPlaybackAS ...
相关推荐
### Starling基于Stage3D开发GPU加速的2D游戏 #### 概述 随着游戏行业的不断发展,对于游戏性能的要求也越来越高。特别是在2D游戏领域,为了实现更加流畅的画面效果和更高的分辨率,游戏开发者们开始寻求更为高效...
Stage3D是Adobe Flash Player和Adobe AIR中的一个低级API,它允许开发者利用显卡(GPU)的计算能力来加速2D和3D图形渲染,从而实现更复杂的视觉效果。这篇博文(链接已提供)可能详细介绍了如何利用Stage3D来实现...
随着Stage3D的引入,AS3的性能得到了显著提升,为GPU加速提供了可能,从而在室内全景展示方面实现了更流畅、更高效的渲染。 首先,我们需要理解AS3的基础。ActionScript是Adobe开发的一种面向对象的编程语言,主要...
1. **显卡加速**:Stage3D利用了现代显卡的并行处理能力,将计算任务从CPU转移到GPU,从而显著提高帧率和图形质量。 2. **批次处理**:在Stage3D中,图形数据被组织成批次,每个批次包含一组具有相同渲染属性的对象...
Stage3D借鉴了现代GPU加速的图形处理概念,使得开发者能够充分利用硬件加速,创建出流畅、细腻的3D视觉体验。 压缩包内的文件主要包含不同章节的代码示例,例如: 1. Stage3D_Code_Chapter07:这一部分可能涵盖了第...
Stage3D是Adobe Flash Player 11和AIR 3引入的一项重大革新,它允许开发者利用硬件GPU(图形处理器单元)加速来渲染复杂的3D场景,从而极大提升了应用程序的性能和视觉效果。本文将深入探讨Stage3D的启用方法、环境...
Stage3D是Flash Player 11及更高版本中引入的新特性,它为ActionScript 3(AS3)提供了一个直接访问GPU硬件加速的接口,极大地提升了2D和3D图形的渲染性能。相比传统的Canvas和Sprite,Stage3D能实现接近原生的速度...
Stage3D是AS3的一个重要组成部分,它为开发者提供了低级别的硬件加速图形渲染接口,直接与GPU交互,从而实现2D和3D图形的高性能渲染。Stage3D包括几个主要的API,如Context3D,用于管理GPU资源,以及Sprite3D和...
Stage3D是ActionScript 3.0的一个重要组件,它提供了一个硬件加速的渲染层,允许开发者直接访问GPU的计算能力,从而提高了图形处理的速度和效率。通过Stage3D,开发者可以创建出与原生游戏平台相媲美的3D视觉效果,...
1. **Stage3D API**:Stage3D提供了一系列的低级接口,如Context3D,允许开发者直接与GPU进行交互,实现高效的图形渲染。它包括了绘制几何形状、设置着色器、管理纹理和顶点缓冲等功能。 2. **ATF纹理加载**:在...
ND2Dx是一款专为Flash Stage3D设计的2D GPU加速游戏引擎,它利用了现代显卡的强大处理能力,显著提升了2D游戏在Flash平台上的性能表现。Stage3D是Adobe Flash Player的一个重要功能,它允许开发者直接访问GPU硬件,...
在Stage3D中,我们可以利用硬件加速的优势,通过GPU进行径向模糊的计算。这通常涉及到以下步骤: 1. **纹理采样**:将原始图像加载到纹理中,Stage3D可以高效地读取和操作纹理数据。 2. **模糊计算**:定义一个模糊...
ND2D-Flash Molehill(Stage3D)GPU加速的2D引擎。 ND2D是使用Flash的新GPU硬件功能的2D框架。 要运行此引擎,您必须下载并安装最新的Flash Player: 您必须使用FP11 playerglobal.swc和编译器选项-swf-version = ...
STAGE3D是Adobe Flash Player 11和Adobe AIR 3发布的一项新技术,旨在提供高性能的3D图形加速功能,为网页游戏开发提供强大的支持。通过STAGE3D,开发者能够利用GPU(图形处理单元)来进行图形渲染,从而大幅度提升...
Molehill是Adobe Flash Player 11引入的一个低级图形API,全称为Stage3D,它的目标是让开发者能够直接访问硬件加速的3D图形处理。通过Molehill API,开发者可以创建复杂的3D场景,实现高性能的游戏和交互式应用。该...
在计算机图形学的世界里,OpenGL和Stage3D都是实现硬件加速图形渲染的重要工具。这篇内容将深入探讨基于ActionScript 3(AS3)的Stage3D技术,这是一种在Flash平台上实现高效2D渲染的框架,其工作原理与OpenGL相似,...
Stage3D是Adobe公司针对Flash平台推出的一种3D图形API,它允许开发者利用GPU硬件加速来创建高性能的2D和3D内容。在深入探讨Stage3D技术之前,有必要了解其产生的背景以及为何被选择作为Web3D技术的解决方案。 ### ...
Stage3D的概念最早由Adobe公司于2009年提出,当时称之为Molehill。Adobe希望提供一个可以直接访问GPU的API来加速3D图形在Flash平台的渲染,以此来推动游戏和其他3D应用的发展。2011年,随着Flash Player 11和AIR 3的...
Stage3D是Flash Player 11及更高版本中的一项底层API,它允许开发者直接访问GPU资源,实现高效的硬件加速3D图形渲染。这一改进使得Flash能够支持复杂的3D游戏、应用程序和互动体验,与Unity和WebGL等其他3D技术相...