原文:Stage3D / AGAL from scratch. Part V – Indexes and culling mode

eg.如果你E文不错的话  还是看E文比较带劲。本人E文非常烂,若有偏差请指出。

索引用于什么地方?

在前面的文章中,介绍了索引 和索引缓冲,我把索引缓冲比喻成连线游戏中的数字,在屏幕上渲染图形的时候,显卡需要知道如何画三角形

例如有8个顶点,想象成构建一个8个顶点的立方体,如果仅仅是给出8个顶点数据,而没有进一步的指令编码,那显卡根本不知道你想画啥

可能你想渲染出一个封闭的四方盒子,但也许你是想画一个开盖的四方盒子,有也许你想打开四方盒子中的两面。。。

索引就是你想 根据顶点画图形的步骤  或者说是顺序,绘画方案 总之一个意思。索引告诉显卡怎么在顶点上画画 顶点告诉显卡在那里画画。就是这样~

在渲染三角形的过程中 可能会用到同一个顶点多次,无论在显卡中渲染什么图形,索引缓冲的长度(并非顶点)的都必须是3的倍数,因为我们能渲染的最简单的物品是三角形嘛。。然后其他全部都由一个一个三角形组成。
继续阅读

原文:Stage3D / AGAL from scratch. Part IV – Adding some depth

eg.如果你E文不错的话  还是看E文比较带劲。本人E文非常烂,若有偏差请指出。

关于Z轴的解释(角度理解)

Stage3D,我认为这是3D的技术,但是为什么我们在上一节并没有用到Z轴坐标呢?如果你在上一节我分析代码的时候也跟着下载源码来编译,并且尝试修改其中的坐标看效果的话,你就会发现  没用(X,Y,Z,r,g,b)顶点中的Z数值,Z轴有何作用呢,下面我将解释。

——3D场景在2D中渲染,渲染出的区域叫做Clipspace(这个应该翻译为锥体裁剪之后的空间,还是投影变换后的空间?),CLIPSPACE(剪切空间)是屏幕的基础,屏幕上的每一个点 都会被映射到CLIPSPACE(剪切空间),然后才能被显示出来。(这个CLIPSPACE(剪切空间)就是这么一个东西   不理解没关系 如果要深入理解麻烦去找本计算机图形学)。

——之前说的屏幕坐标(X,Y,Z)每一个数值都是在闭区间[-1,1]其实表述并不完全正确,更准确的解释是,X,Y,Z 只有在闭区间[-1,1]的时候  才能映射在CLIPSPACE(剪切空间)上(也就是说 你所能看到的程序窗口大小 即为CLIPSPACE有效大小,所以我在之前也加了解释,坐标的有效数值是[-1,1],坐标可以取任何值)。
继续阅读

原文:Stage3D / AGAL from scratch. Part III – Hello Triangle

eg.如果你E文不错的话  还是看E文比较带劲。本人E文非常烂,若有偏差请指出。

国内的大牛FlashChe也有一篇类似的基础文章,传送门在上一篇开头。

让我们开始吧

在开始编码之前请确认你已经读过第一篇与第二篇,并且都已经理解其中的原理。

你可以先下载[源码]自行编译一遍,以确认你的硬件与编译环境可行。

这篇文章将会带您一起在GPU中渲染出第一个三角形图形,其中会涉及到一点点的关于AGAL的代码,仅仅几句而已非常容易理解,如果你汇编学得不错的话 那你一眼就能看明白,即使你的汇编非常的糟糕那也没关系  我将会一句一句的解释它。(后面这句我加的)稍微再解释一下顶点在GPU上渲染三角形的作用,所谓的顶点“Vertex”其实可以理解为内存中的指针,三个顶点确定一个三角形的形状和位置,正是依靠这三个”指针” ,GPU才能在指定位置画图,继续阅读

原文:Stage3D / AGAL from scratch. Part II – Anatomy of a Stage3D Program

eg.如果你E文不错的话  还是看E文比较带劲。本人E文非常烂,若有偏差请指出。

国内的大牛FlashChe也有一篇类似的基础文章:传送门

也有7yue写的一篇PPT“深入Stage3D

Stage3D程序基础分析:

在我们编写第一个三角形程序之前,先粗略的了解下Stage3D程序的基本结构,这种结构也适用于其他底层3D编程和webGL编程。(WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起)

在使用底层3D API的时候,你必须知道一些硬件知识(作者指的是上一篇末尾的内容),例如V-RAM是你的显卡内存,而缓存区则是显卡内存中的一部分。

在渲染三角形的时候,你必须提供几个顶点(Vertices)(所谓的顶点其实就是指向缓存区的“指针”)给程序,然后程序通过顶点把三角形在屏幕上渲染出来。

其中还没有说的是索引(Indexes),索引的作用其实就是 连接顶点绘制出三角形。(顶点与索引的关系 按照我的理解应该是 顶点指明位置 索引负责在指定位置画画)。

继续阅读

原文:Stage3D / AGAL from scratch. Part I – The Basics

eg.如果你E文不错的话  还是看E文比较带劲。

关于AGAL(adobe 图形汇编语言

我第一次使用AGAL是在几周前与一个同事一起,AGAL让我们终于认识到了Stage3D的强大.

可能你想看到的是关于Away3D的教程,但是在我学Away3D的第一课的时候我感到非常失望, 因为我并没有成功编译出那个例子的立方体,其中的原因就在于我欠缺3D建模能力.

直到后来出现了Starling和ND2D这两个框架,通过这两个框架所表现出来的GPU渲染能力,我们才认识到原来Stage3D在硬件加速上堪称完美。

虽然Stage3D非常难,但是如果你真的想理解他们是怎么工作的  那你还是必须要面对它,你可以通过下面两种方式去学会使用它,第一是系统的从底层开始去学习Stage3D,第二是学会使用衍生的开源框架 (例如Starling ND2D),无论哪一种方式 如果你想深入(而不是只懂皮毛)的话 都必须先去学会使用adobe提供给我们的底层Stage3D API。
继续阅读

动机:

我从今年5月份在旧公司由于工作原因开始接触AS3,后来发现AS3原来能搞那么多的东西,到现在为止接触的从C++接口框架ALCHEMY1到ALCHEMY2(FlasCC) 到Stage3D框架的涌现再到GPU加速的2D框架Starling 而衍生features,StarlingPunk等等,都非常强大,无意中我发现AGAL(ADOBE GRAPHIC ASSEMBLY  LANGUAGE ,adobe图形汇编语言),这真是非常有意思的东西.于是我在一个法国ASer的Blog上发现一组教程,本人英语非常烂(大学过程因为考级问题痛苦了好久),但是还有想把它翻译过来放到自己BLOG保存的冲动。因为天天遇到不懂的地方就去翻E文实在很累。翻译过来的目的纯属是算一种学习笔记,在翻译的过程中 会加入我个人的理解,如果有理解错误或者翻译偏差 请留言指出.

关于原作者:

My name is Nicolas Chesné, and I am a french flash developer, currently working at Marcel Paris as a senior Flash developer.

作者Chesne自己的定位是 高级FALSH程序员,粗略看了一下作者的作品  这不仅仅是高级啊.

我觉得AGAL是一个非常有意思的东西。如果你能看完全部教程 相信你也会这样觉得。让我们开始吧!

[AGAL个人笔记]第一篇:AGAL基础(译2012/11/6

[AGAL个人笔记]第二篇:  Stage3D程序原理解剖(译)2012/11/7

[AGAL个人笔记]第三篇: Hello Stage3D`s World(译)2012/11/8

[AGAL个人笔记]第四篇:加入深度坐标(译) 2012/11/12

[AGAL个人笔记]第五篇:片段(索引 Indexes )和剔除(淘汰)模式(译)2012/11/21

[AGAL个人笔记]第六篇:重新组织矩阵 2013/3/7

首先 这篇博文不谈关于技术的东西

关于本博的一些吐槽:

难得的周末,终于可以静下心来写写近况。

博客开了快两年了,咋一看我果然没什么站长潜质。好少好少的浏览量哈哈。

但是这一点也没有影响我的心情和我继续开下去的想法。我觉得我在这方面没什么天分,这个博客本来是我和一个朋友一起开的,他在技术上一直都是我仰望的对象,但是似乎他并没有写博的爱好或者他认为技术还没到想要的高度,所以大家所看到的绝大部分都是我在写的没什么水平的东西,但是这也并没用影响我继续写下去的心情,还在大学的时候 我一直在玩汇编,所以在2012年之前的所有东西几乎都是关于逆向反汇编的,这个该死的爱好导致我后来毕业找工作到处碰壁,甚至被一些面试的PM们鄙视,我记得最清楚的一句话就是在深圳蛇口的一家公司,问题很尖锐 但是问得很到位,“你靠什么吃饭?靠什么在深圳活下去?”,但是我非常明确的告诉他 其实我没想过,这可能和我的性格有关,我很讨厌去想后果 喜欢干的话为什么不一直干下去呢?但是这的确是一个非常不值得玩的事情,相比于我的同学们 我好像比他们苦逼好多.直到7个月后阴错阳差的去搞前端。。很遗憾的是我到现在依旧还是那么喜欢逆向。。。真是要命呢~咋一看怎么好像写成了老者教诲新人的日记?无所谓了呢  。继续阅读