osgFX - 开发者简明手册

合集下载

g-bios开发者手册

g-bios开发者手册
MaxWit g-bios 开发者手册
第 1 卷:使用入门
MaxWit 开放实验室
2009 年 1 月 1 日
ቤተ መጻሕፍቲ ባይዱ

1

2
3
4
5
6
初识 MaxWit g-bios ................................................................................................................3 1.1 开源项目 MaxWit g-bios 概述 .....................................................................................3 1.2 获取最新 g-bios 源码 ...................................................................................................4 1.3 如何参与 g-bios 开发 ...................................................................................................4 Host 端发行版的选择及软件安装..........................................................................................4 2.1 关于 Linux 发行版 .......................................................................................................4 2.2 安装系统必备软件包 ...................................................................................................4 2.3 安装 kermit ...................................................................................................................5 2.4 安装 tftp Server.............................................................................................................5 编译 g-bios ...............................................................................................................................6 3.1 制作交叉编译 Toolchain..............................................................................................6 3.2 g-bios 配置和编译 ........................................................................................................6 烧录 g-bios ...............................................................................................................................6 4.1 烧录 g-bios 上半部分(Top-half) .............................................................................6 4.2 烧录 g-bios 下半部分(Bottom-half) .......................................................................7 使用 g-bios 引导 Linux 系统 ..................................................................................................7 5.1 g-bios 引导命令(boot)设计特点 .............................................................................7 5.2 boot 命令的使用...........................................................................................................7 g-bios 命令一览 .......................................................................................................................8 6.1 flash 命令 ......................................................................................................................8 6.2 网络命令.......................................................................................................................8 6.3 boot 命令.......................................................................................................................9 6.4 其他命令.......................................................................................................................9

Mac Os Xcode开发人员入门导引(简体中文版)

Mac Os Xcode开发人员入门导引(简体中文版)
如果你忘了在代码中加上分号,哪怕只忘了一个分号,那么代码也不能被编译,也就是说编译器会提示错误。后面读到的章节会帮助你查找是哪 里出了问题。
对于编译器来说变量本身并没有特别的意义,但是描述性变量可以令程序简单易读并易于理 解。特别是你在代码中寻找错误的时候它就显得特别有用。
严格遵守这个约定,可以减少许多因为区分大小写带来的错误。 请注意变量名一般由单个单词构成(必要时也可以是一个字母)。
尽管你在使用变量名上有充分的自由,但依然要遵循一些规则。也许这些规则令人讨厌。最 重要的一条规则是你不能使用 Objective-C 语言中的保留字(也就是在 Objective-C 语言中已经有了 特殊含义的单词)。使用简明的单词组成变量名,比如 pictureWidth,通常是安全的。为了保证变 量名的可读性,推荐在其中使用大写字母,这条规则可以让你程序减少错误。
/books 2、通过视觉展示告诉世界并不是人人都用PC。在公共场合着一件以Mac微机为印花的T恤是个 办法,但还有许多其他途径。如果运行“活动监视器(Activity Monitor)”(位于“应用程序”文 件夹下的“实用程序”文件夹里面),你会注意到你的Mac微机只是偶尔才会满负荷运行。 科研人员正在推动几项“分散计算计划”(distributed computing projects,简称DC),比如 Folding@home和SETI@home,就是利用Mac微机空闲的处理能力来为公众服务。你只需要下载一个 被称做DC客户端(DC client)的免费小程序并开始处理工作。这些 DC客户端(DC client)占用很 少的系统资源。如果你运行一个占用资源很大的程序, DC客户端(DC client)将自动中止,因此 你大可不必在意它的运行。这项工作如何帮助Mac微机?通常这种DC项目的网站上回对各个团队的 工作进度进行排名。如果你加入了一个Mac微机团队(你可以从他们的名字中区别来),你就可以 帮助你的团队提升排名。其他平台的用户会看到Mac微机是如此之棒!DC项目的内容很丰富,有关 于数学的,也有关于医疗的等等。你可以通过一下网址找到一个你感兴趣的DC项目:

开发者参考手册集合说明书

开发者参考手册集合说明书

DEVELOPER'S REFERENCE MANUALSTo make our users comfortable we have put all the reference Manuals at one place. So now your Reference Manuals for PERL, PHP, C, UDDI, MySQL and other programming languages is just one click away.RECOMMENDATIONS: Bookmark this page for easy and quick access.TUTORIALS IN PDF FORMAT:ANT Tutorial in PDF - Download quick ANT tutorial in PDF format.Hibernate Tutorial in PDF - Download quick Hibernate tutorial in PDF format.Python Tutorial in PDF - Download quick Python tutorial in PDF format.Ruby Tutorial in PDF - Download quick Ruby tutorial in PDF format.Java Tutorial in PDF - Download quick Java tutorial in PDF format.Javascript Tutorial in PDF - Download quick Javascript tutorial in PDF format.JSP Tutorial in PDF - Download quick JSP tutorial in PDF format.SQL Tutorial in PDF - Download quick SQL tutorial in PDF format.MySQL Tutorial in PDF - Download quick MySQL tutorial in PDF format.C++ Tutorial in PDF - Download quick C++ tutorial in PDF format.JDBC Tutorial in PDF - Download quick JDBC tutorial in PDF format.Servlets Tutorial in PDF - Download quick Servlets tutorial in PDF format.log4j Tutorial in PDF - Download quick log4j tutorial in PDF format.iBATIS Tutorial in PDF - Download quick iBATIS tutorial in PDF format.UML Tutorial in PDF - Download quick UML tutorial in PDF format.Unix Tutorial in PDF - Download quick Unix tutorial in PDF format.QUICK REFERENCES:ASCII Table Lookup - A complete table of 7 Bit ASCII Codes and Extended ASCII Codes.HTML Character Encodings - A Set of all HTML Character Encodings.HTML Color Code Builder - We have given one very light weight JAVA Applet to generatemillions of HTML Color Code. Try it once!C Built-In Library Functions - A list of all important functions which you will use in your day today programming.CSS2 Properties - A complete list of all the CSS2 properties explained with examples.HTML /XHTML Tags Reference - A complete reference manual for HTML/XHTML tags arranged alphabetically.HTML Color Names - A list of thousands of color codes along with examples. Ready to use in your HTML Pages.HTML Entities - A list of all standard HTML Entity Codes.HTML Fonts - A list of HTML Fonts available on Microsoft Windows, Macintosh System and Unix.HTML ASCII Codes - Listing down all the 7-BIT ASCII codes and their equivalent HTML Entity Codes.JavaScript Built-in Function - Listing of all the built-in JavaScript methods.jQuery Quick Guide - Listing of all the jQuery APIs.Language ISO Codes - Language ISO Codes for Windows and Macintosh Systems.MIME Media Types - Complete reference for MIME Media Types.MySQL Useful Functions and Clauses - A comprehensive set of all MySQL functions and Clauses with examples.Rails Quick Reference Guide - A quick reference guide for Rails developers. We have listed out all the important concepts related to Rails.UDDI API References - A complete set of UDDI APIs.Useful UNIX Commands - List of all important UNIX Commands.Perl Functions References - A comprehensive reference manual for Perl Developers. All the Perl functions have been listed out with examples.WML Tags Reference - A complete list of WML tags explained with examples.。

NVIDIA IGX Orin 开发者主机 用户指南说明书

NVIDIA IGX Orin 开发者主机 用户指南说明书

NVIDIA IGX Orin 开发者主机用户指南文档历史记录DU-11439-003_v1.0目录Chapter 1.简介 (1)Chapter 2.配置 (2)2.1GPU 模式 (2)2.2环境 (2)Chapter 3.系统概述 (3)3.1主要组件 (3)3.2技术规格 (4)3.3I/ O 和外部接口 (5)3.4其他可选显卡的物理安装 (7)Chapter 4.为系统供电 (10)Chapter 5.软件安装 (11)5.1默认设置 (11)5.2交互式安装 Holopack (11)5.2.1检查当前安装的 GPU 堆栈 (14)5.2.2在 iGPU 和 dGPU 堆栈之间切换 (14)5.3重新刷写开发者套件 (15)5.3.1重新刷写选项 1 –使用 NVIDIA SDK Manager (15)5.3.2重新刷写选项 2 - 手动 (21)Chapter 6.安装后配置 (22)6.1设置 SSD 存储 (22)6.1.1创建分区 (22)6.1.2安装分区 (23)6.2在 SSD 上设置 Docker 存储 (24)Chapter 7.使用 BMC (25)7.1访问 BMC (25)7.2通过 BMC 将系统置于恢复模式 (26)Chapter 8.交换机 ConnectX - 7 网络链路类型 (27)Chapter 9.安装 Holoscan SDK (28)Chapter 10.故障排除 (29)Chapter 11.获取帮助 (30)图表列表图3-1。

开发者套件组件 (4)图3-2。

开发者套件前视图 (5)图3-3。

开发者套件背面板 (6)图3-4. 取消封面–第 1 步 (8)图3-5. 取消封面–第 2 步 (9)图5-1. 提示安装 dGPU (12)图5-2. 提示安装 iGPU (13)图5-3. dGPU 堆栈安装截图 (13)图5-4. SDK 管理器目标硬件 (17)图5-5. SDK 管理器硬件配置 (17)图5-6。

OSG虚拟可视化图形开发简介

OSG虚拟可视化图形开发简介

OSG虚拟可视化图形开发简介OSG诞生于大概是1997年,可以在osgChina[]上查阅到关于OSG的来龙去脉。

笔者使用OSG也已经有三到四年的时间了。

当初偶然接触OSG到现在,OSG已经在国内外得到广泛的应用,国内已经有好几家专门使用OSG的公司,他们分布在杭州、西安、深圳以及还有一些我不知道的地方。

然而,更让人兴慰的是国内的各重点院校与研究所都已经开始使用OSG。

我做为一直使用OSG做开发的图形工作者,感觉非常兴慰。

当每一次在群里或论坛说OSG 又有什么什么消息时,看到很多人说:看来选OSG是选对了,OSG明天更好等等类似的话,我热泪盈框。

OSG进入中国已经有七到八年了,在这期间,OSG经历了数次变迁,青丝变白发。

使用OSG的开发者从无到有,从草根开发者到成立专门使用OSG的公司。

1.1 OSG简介1.1.1 OSG的诞生在1997年时,Don Burns由于喜欢滑翔机运动且对计算机图形学非常熟悉,在LINUX上写了一个控制滑翔机的小引擎,这便是OSG的最初雏形。

后来在1998年,Don Burns在滑翔机爱好者邮件列表中遇到了Robert Osfield,对OSG的命运起到了决定性的改变。

我们现在在邮件列表中也会经常看到Robert的名字,从98年至今,Robert一直担当OSG开发组长,权衡OSG的各种利弊。

有很多人在刚开始接触OSG时感觉到非常痛苦,咋一看一点儿都看不懂,疑是什么鬼怪新语言。

其实OSG是语法是标准C++的。

您可以登录:/ 与查看关于OSG历史的更多信息。

也可以查阅《OSG快速入门指南》[<OpenSceneGraph Quick Start Guide>]的第一章的相关章节来获得OSG的发展更详细信息。

1.1.2 OSG在中国OSG在2000年或更早时候进入的中国,据个人了解,FLMN在2003年接触的OSG,并在2005年创立了VRDEV[]网站。

VRDEV是国内OSG爱好者交流的中心,把无数OSG爱好者引入大门。

万象优图 开发者手册 产品文档说明书

万象优图 开发者手册 产品文档说明书

【版权声明】©2015-2016 腾讯云版权所有本文档著作权归腾讯云单独所有,未经腾讯云事先书面许可,任何主体不得以任何形式复制、修改、抄袭、传播全部或部分本文档内容。

【商标声明】及其它腾讯云服务相关的商标均为腾讯云计算(北京)有限责任公司及其关联公司所有。

本文档涉及的第三方主体的商标,依法由权利人所有。

【服务声明】本文档意在向客户介绍腾讯云全部或部分产品、服务的当时的整体概况,部分产品、服务的内容可能有所调整。

您所购买的腾讯云产品、服务的种类、服务标准等应由您与腾讯云之间的商业合同约定,除非双方另有约定,否则,腾讯云对本文档内容不做任何明示或模式的承诺或保证。

文档目录文档声明 (2)签名和鉴权文档 (4)RESTful API (10)SDK_文档 (32)SDK文档 (32)SDK下载 (33)返回码说明 (35)版本说明 (39)OCR识别接口文档 (45)人脸识别接口文档 (70)图片标签接口文档 (102)智能鉴黄接口文档 (107)人脸核身解决方案接口文档 (122)签名和鉴权文档本文为万象优图V2版本和V2加强版本的鉴权文档,V1的鉴权文档参见万象优图鉴权及签名文档-V1。

注意:各版本只能使用属于其的CGI,请不要混用。

具体版本说明请参照版本说明。

1 签名与鉴权腾讯移动服务通过签名来验证请求的合法性。

开发者通过将签名授权给客户端,使其具备上传下载及管理指定资源的能力。

签名分为多次有效签名和单次有效签名。

多次有效签名:签名中绑定或者不绑定文件fileid,需要设置大于当前时间的有效期,有效期内此签名可多次使用,有效期最长可设置三个月。

单次有效签名:签名中绑定文件fileid,有效期必须设置为0,此签名只可使用一次,且只能应用于被绑定的文件。

具体适用场景参见签名适用场景。

注意:本页面介绍的签名算法适用于V2版本和V2加强版本,V1版本签名算法参加万象优图鉴权及签名文档-V1.2 签名算法2.1 获取签名所需信息生成签名所需信息包括项目ID(appid),空间名称(bucket,图片资源的组织管理单元),项目的SecretID和Secret Key。

osg原理 -回复

osg原理-回复osg原理是指在开发和使用osg(OpenSceneGraph)库时所涉及到的底层原理和机制。

osg是一个用于实时三维图形应用程序开发的跨平台的高性能图形库。

它提供了一系列功能强大的工具和接口,使开发者能够方便地创建、渲染和管理三维场景。

在本文中,我将详细介绍osg原理,并一步一步回答您关于osg原理的问题。

第一步:理解osg的基本原理osg是一个基于OpenGL的图形库,它在OpenGL的基础上提供了更高层次的抽象和功能。

osg将底层的OpenGL调用进行了封装,提供了一系列易于使用的接口,方便用户对三维场景进行建模、渲染和交互。

osg的基本原理可以概括如下:1. 场景管理:osg通过场景图的形式进行场景管理。

场景图是一种层次化的数据结构,描述了整个场景中的所有对象及其相互关系。

用户可以通过osg提供的接口,对场景图进行创建、添加、删除、修改等操作。

2. 渲染管线:osg提供了封装OpenGL渲染管线的接口。

用户可以通过osg来设置渲染状态、创建渲染器、调整渲染参数等。

osg会将这些设置转化为OpenGL的调用,从而实现场景的渲染。

3. 事件处理:osg提供了事件处理的机制,用户可以通过osg来监听和处理用户输入、设备事件等。

用户可以定义事件回调函数,在相应事件发生时执行特定的操作。

第二步:了解osg的关键概念和组件在理解osg的原理时,有几个关键概念和组件需要了解:1. Node(节点):osg的场景图是由一棵节点树组成的,每个节点代表场景中的一个对象。

节点可以是几何体、相机、灯光等。

节点之间可以形成层次化的关系。

2. State(状态):osg中的状态包括渲染状态、材质状态、变换状态等。

状态决定了场景中对象的外观和行为。

osg使用状态栈来管理状态,状态的改变会影响整个场景图的渲染结果。

3. Visitor(访问者):osg中的访问者模式非常重要,它通过一系列的访问者类实现对场景图的遍历和操作。

OSG安装方法

一.安装需要:1. 3rdparty——第三方库。

2. OpenSceneGraph源码包,我用的是OpenSceneGraph-2.4.0。

3. 实例模型数据包。

4. Cmake工具——如果用的是VS2008,请使用cmake-2.8.0-win32-x86以上版本。

1,2,3都可以在OSG的官网上找到下载。

Cmake也很容易在网上下载到。

二.注意事项:1. 就不要使用VC6.0了,OSG已经不支持它了。

2. 如果你用的是VISTA,甚至WIN7,为了防止未来出现很多不可预知且难以解决的问题,还是换成XP吧。

我曾经在VISTA下安装成功,但任意一个程序都必须报一个“DLL文件BUG”的错误,然后重新生成才可以成功。

三.安装准备:1. 安装CMAKE。

2. 找一个空间较大的盘,建立一个名为OSG的文件夹。

将第三方库文件夹复制进去,命名为3rdparty。

OpenSceneGraph-2.4.0文件夹也复制进去。

再新建一个名为OSG的文件夹,将实例模型数据包取名data,复制到该文件夹下。

3. 打开CMAKE程序。

打开OpenSceneGraph-2.4.0文件夹,将其中CMakeLists.txt直接拖到CMAKE的程序界面中。

这时你会发现,界面上方自动填入了两个地址。

上面那行地址是OpenSceneGraph源码所在的文件夹,也就是我们的OpenSceneGraph-2.4.0文件夹。

下面那行是生成项目的输出文件夹,我们将其改为“盘符:\OSG\OSG”。

点击左下方的“configure”。

这是第一次配置。

在跳出的对话框中选择你所用的VS版本。

4. 这时下方列表中会出现非常多项目。

它比较不智能,所以需要我们自己动手将需要改的项目改过来。

首先将界面中的“simple view”下拉列表改成“Advanced view”。

然后修改列表中以下值:1) ACTUAL_3DPARTY_DIR。

这一项填写的是我们第三方库所在的文件夹。

法格系统编程手册

法格系统编程手册
法格系统编程手册是法国电子元器件公司STMicroelectronics所开发的一套嵌入式系统编程手册,旨在为开发人员提供全面、系统化的指导,帮助他们开发和维护基于STMicroelectronics 产品的嵌入式系统。

该手册覆盖了多种嵌入式系统的相关知识和技术,包括处理器、嵌入式操作系统、通信协议、电源管理、存储器等方面的内容。

法格系统编程手册的主要内容包括以下几个方面:
处理器架构和指令集:介绍了STMicroelectronics公司开发的处理器架构和指令集,包括ARM Cortex-M系列、STMicroelectronics 8位和32位微控制器等。

嵌入式操作系统:介绍了常用的嵌入式操作系统,包括FreeRTOS、CMSIS-RTOS、ThreadX等,以及如何在STMicroelectronics产品上使用这些操作系统。

通信协议:介绍了常用的通信协议,包括SPI、I2C、CAN、USB等,以及如何在STMicroelectronics 产品上使用这些通信协议。

电源管理:介绍了如何有效地管理嵌入式系统的电源,包括如何选择电源管理芯片、如何实现低功耗模式等。

存储器管理:介绍了如何在STMicroelectronics产品上管理存储器,包括Flash、EEPROM、SRAM等。

除了以上内容,法格系统编程手册还包括了大量的示例代码和应用案例,方便开发人员进行实践和应用。

同时,STMicroelectronics也提供了丰富的技术支持和服务,帮助开发人员解决技术难题和优化系统性能。

iOS开发技术手册

iOS开发技术手册第一章:介绍iOS开发技术iOS是由Apple公司推出的操作系统,它为iPhone、iPad和iPod Touch等设备提供了强大的功能和良好的用户体验。

本章将对iOS开发技术进行简要介绍,帮助读者对iOS开发有一个初步的了解。

1.1 iOS开发概述iOS开发是指使用Objective-C或Swift编程语言开发基于iOS操作系统的应用程序。

iOS开发者可以利用Apple提供的软件开发工具包(SDK)以及相关文档和资源来创建各种类型的应用程序,包括游戏、社交媒体应用、商务应用等。

1.2 iOS开发环境搭建为了进行iOS应用的开发,需要在Mac电脑上搭建相应的开发环境。

具体包括安装Xcode集成开发环境、注册Apple开发者账号等步骤。

本节将详细介绍如何搭建iOS开发环境。

1.3 开发工具和语言iOS开发使用的主要工具是Xcode,它是一款强大的集成开发环境,提供了代码编辑、编译、调试等功能。

此外,Objective-C是一种使用广泛的iOS开发语言,而Swift则是Apple最新推出的一种现代化的开发语言。

本节将介绍如何使用Xcode进行开发,并对Objective-C和Swift进行简要对比。

第二章:iOS开发基础知识在进行iOS开发之前,需要熟悉一些基础知识,包括UIKit框架、界面设计等方面的内容。

本章将系统介绍iOS开发的基础知识,帮助读者打下扎实的基础。

2.1 UIKit框架在iOS应用开发中,UIKit框架是最常用的框架之一。

它包含了一系列用于构建用户界面的类和方法,如按钮、标签、文本框等控件。

本节将介绍UIKit框架的基本使用方法,以及常用控件的创建和操作。

2.2 界面设计好的用户界面设计是吸引用户的关键之一。

本节将介绍iOS开发的界面设计原则和技巧,包括布局、颜色选择、图标设计等方面的内容。

读者可以通过学习这些知识,设计出美观且易用的应用界面。

2.3 数据存储和管理iOS开发中,数据的存储和管理是不可或缺的一部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

osgFX - 开发者简明手册Marco Jez2003年9月osgFX是一个OpenSceneGraph的附加库,是一个用于实现一致、完备、可重用的特殊效果的构架工具,其效果可以添加到OSG的节点中。

它同时还包含了一系列预定义好的特殊效果。

osgFX概述所谓“特效”指的是装载于单个对象中的一系列可视的属性和行为。

要实现一个真正可用的特效,相应的特效类应当具备一个公有的接口,以修改各种配置和微调量。

特效也可以被理解成是提出问题(对象应当是什么样子)与解决问题(应当设置哪些属性和其它调节量)之间的“桥梁”。

从C++代码来看,特效具现了osgFX::Effect类的实例。

或者说,是这个类的派生类的实例,因为osgFX::Effect直接派生自osg::Node,因此它是抽象类。

对于OSG而言,特效就是一个Node节点。

它与其它节点类的特性完全相同,因此可以关联到场景图形中的任意位置。

特效功能图如图1所示。

Effect类是一个多子节点的组节点。

它使用addChild()方法和其它节点关联。

在特效类中设置的可视属性将被关联到它的子节点上,与此相类似,Transform节点也会将坐标变换的信息应用到其子节点上。

Effect中的各种属性不会在其子节点以外生效。

如果用户想要将某一种特效应用到自己的图形子树上,那么需要遵循下面的步骤:1、创建所需特效的实例,例如,osgFX::Scribe;2、必要的话,使用特效类的方法设置特效属性;3、调用Effect::addChild()方法,将图形子树与特效节点相关联;4、将特效节点与场景图形关联。

下面的例子中使用了刻线(scribe)特效:osg::ref_ptr<osg::Node> my_node = osgDB::readNodeFi le(“cow.osg”);osg::ref_ptr<osgFX::Scribe> scribe_fx = new osgFX::Scribe;scribe_fx->addChild(my_node.get());scribe_fx->setEnabled(true);root->addChild(scribe_fx.get());代码执行的结果如图2所示。

深入学习:技法和通道技法就是实现特效的某一种可能方法。

由于图形硬件设备种类繁多,OpenGL也在不断扩展,因此不太可能用一种通用的方法来实现复杂的效果:针对不同的硬件和OpenGL环境,用户需要采用不同的实现手段来实现某个特效。

一种特效的产生往往可以采用一种或几种技法,每一种技法都采用不同的方式来尝试实现相同的效果。

缺省情况下,Effect类使用私有的StateAttribute对象来实时演算和验证各种技法,并选择最好的一种。

特效的开发者可以自行定义各种技法的优先级,从而要求OSG首先验证用户所选的技法。

Effect类会选择在实时的所有活动渲染设备中,可通过验证的优先级最高的技法,以为己用。

如果需要的话,用户可以在任何时刻重载这一缺省特性。

Effect类的技法功能图表如图3所示。

多通道渲染的意思是,每次都使用不同的可视属性,多次绘制同一对象后,合并所有通道获得的最终图像。

某些技法可能需要不止一个通道来实现所需的输出结果。

技法类为每个渲染通道都创建一个StateSet对象,然后交由osgFX管理多通道的渲染工作。

Effect类的通道功能图表如图4所示。

扩展osgFX创建一个新的特效的基本步骤如下。

1、特效都是从osgFX::Effect派生而来的,因此用户可以自由创建自己的派生类,例如命名它为TestFx。

2、具现抽象方法,例如effectName(),effectDescription()等,可能需要用到META_Effect宏。

3、向系统注册新的特效类,即创建一个Registry::Proxy的静态实例:osgFX::Registry::Proxy proxy(new TestFx);4、具现保护成员中的抽象方法define_techniques(),以便创建所需的特效技法。

为了实现某个技法,用户需要编写一个继承自osgFX::Technique的类;且这个类应当是私有的。

在用户特效类的define_techniques()方法中,创建上述用户技法类的实例,并使用Effect::addTechnique()按照优先级降序的顺序将其添加到特效类中。

为新建的技法提供一个验证手段。

最简单(但不是最灵活的)的方法是重载Technique::getRequiredExtensions()方法,并指定这个技法所需的OpenGL扩展函数。

具现Technique::define_passes()方法,以便创建渲染通道。

渲染通道的内部实现,是将其作为一个Group对象与一个StateSet相关联。

特效类的子节点在运行时将自动被添加到通道节点上。

技法类的define_passes()方法为每个渲染通道创建了一个StateSet对象,并调用Technique::addPass()将其添加到技法类中。

通道节点将自动生成并连接到渲染状态之上。

以下为创建一个特效类所需的基本代码:Class TestFX (public){……META_Effect(……);bool define_techniques(){addTechnique(new FirstTechnique);// 也可以继续添加别的技法实例。

}……}Class FirstTechnique (private){……void getRequiredExtensions(……) const{// 指定所需的GL扩展功能。

}void define_passes(){osg::ref_ptr<osg::StateSet> ss1 = new osg::StateSet;// 添加渲染属性到ss1之后……addPass(ss1.get());osg::ref_ptr<osg::StateSet> ss2 = new osg::StateSet;// 添加渲染属性到ss2之后……addPass(ss2.get());}……}总结:1、继承osgFX::Effect并创建特效类(例如TestFx),为其添加名字和描述信息,并使用注册代理(registry proxy)注册到系统中;2、为用户所需的每个技法创建私有类,并定义它们的验证手段;3、在TestFx::define_techniques()中创建一个技法类的实例,并调用addTechnique()将其添加到特效中;4、在每个技法类的define_passes()方法中,创建一个或多个StateSet对象(每个渲染通道创建一个),并调用addPass()将其添加到技法中。

例子程序osgfxbrowser的效果如图5~8所示。

对于目前已提供的特效,简介如下:刻线(Scribe)这是一个双通道的特效;第一个通道以通常的方式渲染图形,而第二个通道使用线框模式,用户设置好光照和材质之后,即可使用指定的颜色进行渲染。

这个特效中使用了PolygonOffset渲染属性类来避免多边形斑驳(Z-fighting)的现象,它所需的OpenGL版本至少为1.1。

各向异性光照(Anisotropic Lighting)这种特效使用单一通道,它使用了一种各向异性的光照来替代OpenGL的标准光照模型。

几何体顶点的颜色在这里不是直接进行计算的,而是纹理映射到用户指定的光照图板的结果。

这里需要使用顶点着色器(vertex program)来计算纹理坐标S和T的值:S = N · H;T = N · L。

(其中的数学运算为点乘)这里N表示顶点的法线,L表示光到顶点的向量,H表示中间向量。

这种特效很好地演示了State::getInitialViewMatrix()方法的使用,它可以直接获取视口的初始矩阵并实现直接与视口相关的特效,而不需要任何假借的工作。

该特效需要ARB_vertex_program扩展的支持。

卡通渲染(Cartoon)这种特效实现了一种名为卡通着色(Cel-Shading)的技法,从而产生一种卡通式的(非真实感的)的渲染效果。

它需要两个通道支持;第一个用于绘制实体表面,第二个用于绘制轮廓线。

该特效需要使用顶点着色器来设置纹理坐标,以便在运行时生成的纹理单元0上实现一种尖锐的光照效果。

该特效需要ARB_vertex_program扩展或者OpenGL着色语言的支持。

基于立方映射图的镜面高光(Cubemap-based Specular Highlights)这种特效在片断层级(fragment level)上(而不是OpenGL通常的顶点层级)应用了镜面高光,它使用了立方映射图和反射纹理生成(reflective texgen)的技术。

首先要计算出纹理矩阵以实现立方映射图的自动旋转;这样无论从观察的方向和光照位置上来说,镜面光的效果都将是始终不变的。

用户可以选择使用何种光照来计算纹理矩阵。

该特效需要GL_ARB_texture_env_add扩展以及任意一种立方映射图扩展(GL_EXT_texture_cube_map,GL_ARB_texture_cube_map,或者OpenGL 1.3)的支持。

凹凸贴图(Bump Mapping)这种特效可以创建一种凹凸不平的表面效果。

其子节点必须使用两种纹理,其一是漫反射颜色,另一个是法线贴图(可以使用nVIDIA的法线贴图生成器或者其它工具,根据高度图自动生成)。

此外,还需要创建正切空间(tangent-space)的基向量并将其关联到每个Geometry几何体上;这一步骤可以调用BumpMapping::prepareChildren()方法来迅速完成。

注意Geometry对象的漫反射颜色和法线贴图纹理都必须提前定义好对应的UV贴图。

该特效推荐使用一种运用了ARB顶点和片断着色器的技法,另外还定义了一种不使用片断着色器的技法。

后者无法处理环境和镜面组件的运算,因此在运行时很受限制。

相关文档
最新文档