背景接下来的变换是旋转变换,就是说给定一个角度和点,我们将点绕着一个坐标轴旋转。在旋转过程中发生变化的总是x,y,z三个坐标里面的其中两个,而不让第三个坐标值变化。这意味着,旋转路径总在三个坐标轴平面中的一个之中:绕 Z 轴的是 xy 面、绕 X 轴的是 yz 面、绕 Y 轴的是 xy 面。
背景这一课中我们来看一看如何在三维场景中对场景中的物体进行各式各样的变换,并且在保持场景的立体感的情况下将其渲染到屏幕上去!常见的方法是用矩阵表示每一个变换, 之后将它们挨个儿相乘,最后乘以顶点位置产生最后的结果!接下来的每一章都将着重介绍一种转变。
Background在本教程中我们将接触到一个新的着色器变量类型——一致变量。属性变量与一致变量之间的区别:属性变量包含顶点特性数据所以每次调用shader都会从顶点缓冲区中重新导入新的数据,而一致变量中的值在整个绘制过程中都保持不变。这意味着我们在绘制过程之前就为一致变量赋值并且在着色器的每次调用中都可以访问这个相同的值。
Background从这一节开始,我们要加入的所有效果都会使用 Shaders 来实现,Shaders 是进行三维图形学编程的先进方法,从某种意义上来说 Shader 的出现是图形学中的一种”退步”,因为在这之前所有的功能都直接由固定管线提供,而开发人员只需要为其指定参数(如光照属性、旋转角度等),但是由于 Shader 的出现这些功能现在都需要开发者自己通过 Shader 实现。
Background这一节是非常短的。我们简单的扩展上一节的内容来画一个三角形。在这一节中我们再一次在规范化空间中安排我们的顶点坐标。能够看见的顶点一定要在盒子内部,这样视口矩阵才能将这些顶点映射到窗口可以看见的地方。当我们忽略 Z 轴时,我们看到的盒子如下图: 点(-1.0,-1.0)是被映射到窗口的左下角,(-1.0,1.0)被映射到窗口的左上角等等。
背景这将是我们第一次遇到 GLEW,GLEW 是OpenGL的扩展功能库。它能帮助你解决OpenGL不断扩展的问题。一旦你初始化它之后,它在你的系统上将查询所有可用的扩展功能,自动的加载它们并且通过一个单一的头文件提供简单的接口。在这一节中,我们将第一次看见顶点缓冲区对象(VBOs)的使用。顾名思义,它们是被用来储存顶点数据的。加载顶点进入 GPU 最有效率的方法是 VBOs。
BackgroundOpenGL 标准没有指定任何用于建立和使用窗口的 API。在x系统中提供 OpenGL 的接口为 GLX。Windows 提供 WGL 而 MacOS 提供 CGL。为了建立一个能够显示图像的窗口,我们直接使用这些接口,这样就不用关心在不同操作系统中的具体实现细节。我们这里使用的库叫 ‘OpenGL utility library’ 简称 GLUT。
翻译: http://ogldev.atspace.co.uk/index.html (连载)OpenGL是一个跨编程语言、跨平台的专业图形程序接口,是一个功能强大,调用方便的底层图形库。
这部分介绍一些正处于试验阶段的 Scrapy 特性, 这些特性所涉及到的函数接口等还不够稳定, 但会在以后的发布版中趋于完善。所以在使用这些特性过程中需更谨慎,并且最好订阅我们的邮件列表以便接收任何有关特性改变的通知。虽然这些特性不会频繁的被修改,但是这部分文档仍有可能是过时的、不完整的或是与已经稳定的特性文档重复。所以你需要自行承担使用风险。
当你抓取了你要的数据(Items),你就会想要将他们持久化或导出它们,并应用在其他的程序。这是整个抓取过程的目的。为此,Scrapy 提供了 Item Exporters 来创建不同的输出格式,如 XML,CSV 或 JSON。使用 Item Exporter如果你很忙,只想使用 Item Exporter 输出数据,请查看 Feed exports。
内置异常参考手册(Built-in Exceptions reference)下面是 Scrapy 提供的异常及其用法。DropItemexception scrapy.exceptions.DropItem该异常由 item pipeline 抛出,用于停止处理 item。详细内容请参考 Item Pipeline。CloseSpiderexception scrapy.exceptions.CloseSpider(reason='cancelled')该异常由 spider 的回调函数(callback)抛出,来暂停/停止 spider。
Scrapy 使用信号来通知事情发生。您可以在您的 Scrapy 项目中捕捉一些信号(使用 extension)来完成额外的工作或添加额外的功能,扩展 Scrapy。虽然信号提供了一些参数,不过处理函数不用接收所有的参数 - 信号分发机制(singal dispatching mechanism)仅仅提供处理器(handler)接受的参数。您可以通过信号(Signals) API 来连接(或发送您自己的)信号。
Scrapy 设定(settings)提供了定制 Scrapy 组件的方法。您可以控制包括核心(core),插件(extension),pipeline 及 spider 组件。设定为代码提供了提取以 key-value 映射的配置值的的全局命名空间(namespace)。设定可以通过下面介绍的多种机制进行设置。设定(settings)同时也是选择当前激活的 Scrapy 项目的方法(如果您有多个的话)。内置设定列表请参考内置设定参考手册。
新版功能。该节文档讲述 Scrapy 核心 API,目标用户是开发 Scrapy 扩展(extensions)和中间件(middlewares)的开发人员。Crawler APIScrapy API 的主要入口是 Crawler 的实例对象,通过类方法 from_crawler 将它传递给扩展(extensions)。该对象提供对所有 Scrapy 核心组件的访问,也是扩展访问 Scrapy 核心组件和挂载功能到 Scrapy 的唯一途径。
扩展框架提供一个机制,使得你能将自定义功能绑定到 Scrapy。扩展只是正常的类,它们在 Scrapy 启动时被实例化、初始化。扩展设置(Extension settings)扩展使用 Scrapy settings 管理它们的设置,这跟其他 Scrapy 代码一样。通常扩展需要给它们的设置加上前缀,以避免跟已有(或将来)的扩展冲突。
Spider 中间件(Middleware)下载器中间件是介入到 Scrapy 的 spider 处理机制的钩子框架,您可以添加代码来处理发送给 Spiders 的 response 及 spider 产生的 item 和 request。激活 spider 中间件要启用 spider 中间件,您可以将其加入到 SPIDER_MIDDLEWARES 设置中。该设置是一个字典,键位中间件的路径,值为中间件的顺序(order)。
下载器中间件是介于 Scrapy 的 request/response 处理的钩子框架。 是用于全局修改 Scrapy request 和 response 的一个轻量、底层的系统。激活下载器中间件要激活下载器中间件组件,将其加入到 DOWNLOADER_MIDDLEWARES 设置中。该设置是一个字典(dict),键为中间件类的路径,值为其中间件的顺序(order)。这里是一个例子:DOWNLOADER_MIDDLEWARES = { 'myproject.
本文档介绍了 Scrapy 架构及其组件之间的交互。概述接下来的图表展现了 Scrapy 的架构,包括组件及在系统中发生的数据流的概览(绿色箭头所示)。下面对每个组件都做了简单介绍,并给出了详细内容的链接。数据流如下所描述。组件Scrapy Engine引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。
DjangoItem 是一个 item 的类,其从 Django 模型中获取字段(field)定义。 您可以简单地创建一个 DjangoItem 并指定其关联的 Django 模型。除了获得您 item 中定义的字段外, DjangoItem 提供了创建并获得一个具有 item 数据的 Django 模型实例(Django model instance)的方法。使用 DjangoItemDjangoItem 使用方法与 Django 中的 ModelForms 类似。
有些情况下,例如爬取大的站点,我们希望能暂停爬取,之后再恢复运行。Scrapy 通过如下工具支持这个功能:一个把调度请求保存在磁盘的调度器一个把访问请求保存在磁盘的副本过滤器[duplicates filter]一个能持续保持爬虫状态(键/值对)的扩展Job 路径要启用持久化支持,你只需要通过 JOBDIR 设置 job directory 选项。
关注时代Java