代码改变世界

随笔档案-2011年04月

(转)用AGG实现高质量图形输出(四)

2011-04-28 17:40 by CoolJie, 1755 阅读, 收藏,
摘要: AGG的字符输出 字符输出,对于AGG来说,这个功能可以处于显示流程的 不同位置。比如字体引擎可直接处于“Scanline Rasterizer”层向渲染器提供已处理完毕的扫描线,也可以处于“Vertex Source顶点源”层提供字体的顶点数据。 下面,我们开始学习AGG不同的字符输出方式。如没有特殊说明,所以示例代码都基于此处代码 方式一、使用gsv_text对象 gsv_text属于顶点源层... 阅读全文

(转)用AGG实现高质量图形输出(三)

2011-04-27 12:56 by CoolJie, 2302 阅读, 收藏,
摘要: 线段生成器(Span Generator) 我们前面举的例子使用的都是简单的单一实色,如蓝色的圆、黑色的线等。这是因为在例子里我们一直使用renderer_scanline_aa_solid或render_scanlines_aa_solid。 在上篇文章的渲染器一节中除了renderer_scanline_aa_solid外,还提到有一个renderer_scanline_aa,这里再写一遍它的... 阅读全文

(转)用AGG实现高质量图形输出(二)

2011-04-27 10:50 by CoolJie, 2852 阅读, 收藏,
摘要: 本文上接《用AGG实现高质量图形输出(一)》,分别介绍了AGG显示流程中的各个环节。 上次讲了AGG的显示原理并举了一个简单的例子,这一篇文章开始讲AGG工作流程里的每个环节。为了方便对照,再放一次AGG显示流程 图 另外,上一篇文章里的例程也很重要,后面的例子都将基于这个代码。 下面,我们来考察AGG显示流程中的每个环节。理解每个环节最好的方法是编写实验代码,建议先参照这里建 立一个可以运行的A... 阅读全文

(转)用AGG实现高质量图形输出(一)

2011-04-27 09:38 by CoolJie, 2376 阅读, 收藏,
摘要: AGG是一个开源、高效的跨平台2D图形库。AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高(自称超过GDI+)使用前AGG的准备工作下载AGG库,它的家在http://www.antigrain.com,目前最高版本是AGG2.5 解压,后面以[AGG]表示AGG的解压目录. 把[AGG]\include加入到include搜索目录中 把[AGG]\src里所有cpp加入到项目中(或者用makefile一起编译) 另外,AGG还有一些其它组件,用到时也要把它们(都是些.h和.cpp文件)加入项目: 如果要用AGG的控件和窗体,要加入[AGG] 阅读全文

(转)从零实现3D图像引擎:(13)把宽高比、透视投影矩阵、屏幕变换矩阵说透

2011-04-25 15:45 by CoolJie, 957 阅读, 收藏,
摘要: 1. 问题的引出这个问题的引出又是因为《3D游戏编程大师技巧》这书里面有的问题没讲明白,有的东西又不对。首先宽高比这个名词的出现是因为我们的PC屏幕不是正方形的,屏幕宽度 : 屏幕高度 就是宽高比。但是我们上次搭建的相机系统的视平面是正方形的,那么当很多物体投影到视平面上后,必然最后完成的是一幅正方形的画,而屏幕是长方形的,这时只有两种办法:1) 把照片压扁,这样画上的所有物体都被压扁了。2) 把照片上下多余的两条分别裁下来,只保留屏幕大小的画,这样物体不会走样变形,但是这幅画有一部分看不到了。哪种是正确的?以人眼为例,我们的眼睛不可能因为眼睛的外框不是正方形就把东西压扁吧,所以我们要做的是不 阅读全文

(转)从零实现3D图像引擎:(12)构建支持欧拉和UVN的相机系统

2011-04-25 15:44 by CoolJie, 1618 阅读, 收藏,
摘要: 1. 相机需要哪些参数先看下图了解一下上次我们建立的相机在3D世界中的意义:如Hello3DWorld中介绍的,在相机坐标系下,相机朝向正Z轴,相机有视野角度,因为视野角度,形成了上图的视锥体,视平面就是要被透视投影到的2D平面。在这幅图里增加了近裁剪面与远裁剪面。他们是做什么的呢?在现实中,我们会发现,离眼睛太远的东西我们就看不到了,离眼睛太近的东西又会挡住大部分景色。于是就定义了远裁剪面和近裁剪面——比近裁剪面还近的物体和比远裁剪面还远的物体,我们不把他们透视到视平面上。他们和视平面平行,也就和x-y平面平行,所以他们的平面方程就分别是z = nearz 和 z = farz。还有什么物体 阅读全文

(转)从零实现3D图像引擎:(10)Hello3DWorld

2011-04-25 15:38 by CoolJie, 1828 阅读, 收藏,
摘要: 1. 数学分析前面我们已经把预先想到的可能会用到的数学工具都封装好了,从这篇开始,应该很少出现一大篇都是数学推导的了,终于看见光明了,这次我们将开始第一个3D程序的编写,所以题目就叫Hello3DWorld吧。0) 3D程序的本质很多书都会先介绍“3D流水线”的词,但其实明白3D程序的人一下子就知道这是什么,而不了解的人看了这个词也没有意义。其实我也觉得没什么特殊意义,因为所有计算机程序都是一个一个流程执行下来的,不全都是某某流水线么。简单来说,3D流水线就是,从在计算机中表示三维世界的数据,到绘制到计算机2D屏幕上的整个过程。3D流水线的子过程有很多,都列出来只能让人更迷惑,还是举个例子说个 阅读全文

(转)从零实现3D图像引擎:(9)四元数函数库

2011-04-25 15:33 by CoolJie, 547 阅读, 收藏,
摘要: 1. 数学分析 1) 四元数是什么东西? 这个东西算盘、矩阵、复数是一类东西,即数学工具,数学家们创造了这个东西来解决一些数学问题。其实四元数是一种超复数,他不是只有一个虚数的复数,而是有三个虚数的复数。我们先回顾一下复数吧。 2) 虚数的来源 实数集中没有-1的平方根,因为没有哪个实数的平方等于-1,所以数学家们就创造它——虚数i,并且定义了i * i = -1。 所以我们可以计算sqrt(-4... 阅读全文

(转)创业公司的CEO每周须必做的13件事

2011-04-22 10:34 by CoolJie, 288 阅读, 收藏,
摘要: 当一个创业公司的CEO是个很辛苦很难的事。下面列出的是每个创业公司的CEO每周都应该必做的13件事情: 关注一件事。你的公司一次只能做好一件事情。弄清楚你的这件事。把它贴在墙上。每天都要这样。把它放在公司内的日常交流论坛的顶部。不要让任何其它事情把你的团队从这个事情上分心。 记住:你和你的团队是共荣共损的。花时间去培养你的团队。引进比你更善于做某些事的人。激励他们、督促他们去做他们从来不敢相信自己... 阅读全文