30 Dec 2010

一个很简单的opengl例子

一个很简单的opengl例子 # include <GL/glut.h>
# include <stdlib.h>

/* 初始化材料属性、光源属性、光照模型,打开深度缓冲区 */
void init ( void )
{
GLfloat mat_specular [ ] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_shininess [ ] = { 50.0 };
GLfloat light_position [ ] = { 1.0, 1.0, 1.0, 0.0 };

glClearColor ( 0.0, 0.0, 0.0, 0.0 );
glShadeModel ( GL_SMOOTH );

glMaterialfv ( GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialfv ( GL_FRONT, GL_SHININESS, mat_shininess);
glLightfv ( GL_LIGHT0, GL_POSITION, light_position);

glEnable (GL_LIGHTING);
glEnable (GL_LIGHT0);
glEnable (GL_DEPTH_TEST);
}

/*调用GLUT函数,绘制一个球*/
void display ( void )
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidSphere(1.0, 40, 50);
glFlush();
}


/* 定义GLUT的reshape函数,w、h分别是当前窗口的宽和高*/
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ( );
if (w <= h)
glOrtho (-1.5, 1.5, -1.5 * ( GLfloat ) h / ( GLfloat ) w, 1.5 * ( GLfloat ) h / ( GLfloat ) w, -10.0, 10.0 );
else
glOrtho (-1.5 * ( GLfloat ) w / ( GLfloat ) h, 1.5 * ( GLfloat ) w / ( GLfloat ) h, -1.5, 1.5, -10.0, 10.0);
glMatrixMode ( GL_MODELVIEW );
glLoadIdentity ( ) ;
}


/* 定义对键盘的响应函数 */
void keyboard ( unsigned char key, int x, int y)
{
/*按Esc键退出*/
switch (key)
{
case 27:
exit ( 0 );
break;
}
}


int main(int argc, char** argv)
{
/* GLUT环境初始化*/
glutInit (&argc, argv);
/* 显示模式初始化 */
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
/* 定义窗口大小 */
glutInitWindowSize (300, 300);
/* 定义窗口位置 */
glutInitWindowPosition (100, 100);
/* 显示窗口,窗口标题为执行函数名 */
glutCreateWindow ( argv [ 0 ] );
/* 调用OpenGL初始化函数 */
init ( );
/* 注册OpenGL绘图函数 */
glutDisplayFunc ( display );
/* 注册窗口大小改变时的响应函数 */
glutReshapeFunc ( reshape );
/* 注册键盘响应函数 */
glutKeyboardFunc ( keyboard );
/* 进入GLUT消息循环,开始执行程序 */
glutMainLoop( );
return 0;
}

23 Dec 2010

stasm+opencv




要使用STASM来定位面部特征点,步骤如下: 项目的预编译头加入stasm_dll.lib,然后复制stasm_dll.dll,stasm_dll.hpp和stasm_dll.lib到cpp所在文件夹,最后把data文件夹copy到cpp的上级文件夹,在cpp中引用#include "stasm_dll.hpp"即可.




12 Dec 2010

ZT: OpenGL教程收藏



1.DancingWind NEHE中文教程
       NEHE是十分不错的opengl教程,由浅入深,配合实例讲解。而DancingWind本着一颗分享的心,制成中文版。看官不必一课一课按顺序看但每一课都应该认真看,英文可在英文版教程观看……各位可以在这个网站下载。此外DancingWind还整合了几种OPENGL框架 、SDK()。

2.EastcowBoy  OpenGL入门学习


       连载于programfan.com论坛的入门教程,建议初学者重点看看。涉及的是OpenGL基础,真正的由浅入深,eastcowboy讲解认真详细,备足功课(崇拜ING)。也讲述了很多其他教程中很难包含的关于一点原理概念上的东西,帮助你更好理解opengl。各位可点以上链接,内有目录。(P.S.期待新作)

3.LightHouse3D
提供十分有针对性的教程,譬如三维地形技术啦Billboard公告牌技术啦GLSL教程等等。而且讲解详细,看后一定有所裨益。话说我初学GLSL就是从这里开始呢。(注意是英文哦。)另外貌似还有VRML(虚拟真实建模语言)的介绍呢。

4.Ozone3D
ozone3d.net 里面可以看到很多诱人的东西,我有机会一定得好好参详。此外网站也提供OpenGL教程,但是貌似跨度比较大的说,不太适合拿来初学。另外还有GLSL,Direct3D, Demoniak3D等等的教案,资源实在太丰富了。

5.SULACO
OpenGL的Dephi实现。记得网上也有一些Dephi版的NEHE教程了,可见学OpenGL不一定只有C/C++的。但是即使你手头上只有C/C++也可以看看sulaco的教程。不难明白的,而且更重要的是一些绚丽效果的实现手法。

6.UltimateGameProgramming
这里的教程就更加“逐步”了,十分适合给初学者一直看下去学下去。其最大特点是教程间的关联性,基本每个例子都代表一项特性并都与上下文相关。缺点是,教案是“代码”,意味着看代码学习,所以初学者还是“以此为辅”吧。(注意需要.net编译器)

7.SwiftlessGameProgramming
同样是适合初学者循序渐进地学习的教程,而且附有一定的讲解。有C++版和Basic版。关键词是“一步一步来”,恩,是的,学习不可急进。

当然,系统地学习就要有书在旁,如经典的《OpenGL编程权威指南》(红宝,现在有中文第六版了)、《OpenGL编程基础》等等,但是,要记得ZwqXin上篇文章说过的:行为决定态度啊。

再提供一些相关网站。OPENGL在这个世界上学习资源还是很多的。

Opengl.org -WIKI
Opengl.org-掌握最新信息。

Debevec
关注图形学前沿技术。

GameDev
一个属于3D技术的强大社区,高手云集于此。


开始学习OpenGL可以直接上手的awx文件
点此下载(for VC++6.0)

1 Dec 2010

ZT: Greasemonkey-让Firefox加速的油猴

Greasemonkey 是一个 firefox 扩展, 它具有通过编写脚本来改变被访问网页的功能。使用它,能使您访问的网站更便于阅读或者更便于使用。使用它,您能修复网页渲染的缺陷,而无须烦扰网站 管理员。使用它,您能让网页更好地使用残疾人援助技术,清楚响亮地说出网页内容,或者将网页内容变为盲文。使用它,您能自动地获得其它网站的数据,从而使 两个网站更好地相互链接起来。 什么是GreaseMonkey脚本?

原文链接:http://hzzgood48.com/?tag=%E6%B2%B9%E7%8C%B4%E8%84%9A%E6%9C%AC

Greasemonkey 是一个 firefox 扩展, 它具有通过编写脚本来改变被访问网页的功能。使用它,能使您访问的网站更便于阅读或者更便于使用。使用它,您能修复网页渲染的缺陷,而无须烦扰网站 管理员。使用它,您能让网页更好地使用残疾人援助技术,清楚响亮地说出网页内容,或者将网页内容变为盲文。使用它,您能自动地获得其它网站的数据,从而使 两个网站更好地相互链接起来。

然而 Greasemonkey 本身并没有作这些事。实际上,在您安装它之后,您注意到根本没有任何变动…直到您开始安装一种叫做“用户脚本”的东西。用户脚本(user script)就是一大块 javascript 代码,还有些附加信息,用来告诉 Greasemonkey 脚本应该在何时何地运行。每个用户脚本能够针对具体页面,具体网站,或者 一批网站。用户脚本能做到您在 Javascript 中可做到的任何事情。实际上,它能做得更多,因为 Greasemonkey 提供了专供用户脚本使用的函数。via
如何安装GreaseMonkey和脚本?

Greasemonkey的安装非常简单,和安装其它所有Firefox插件一样,到官方主页下载http://www.greasespot.net, 选择工具 (T)单。您应该看到四个菜单项:启用 (E)、管理用户脚本 (U)…、新建 用户脚本 (N)…和用户脚本命令 (C)。 只要管理用户脚本 (U)…可以使用,那么就装好了。装用户脚本也很简单,点击要安装的脚本链 接,会弹出一个标题为“Greasemonkey 安装过程”的对话框,其中显示了将要安装的用户脚本名称,简介以及作用与排除的页面列表。确定安装即可。
GreaseMonkey脚本推荐

下面就推荐一些比较受欢迎的Greasemonkey脚本。
1. Gmail的Greasemonkey脚本

Google Account Multi-Login

可以将Gmail右上角的Logout变成选择多个Gmail帐号切换按钮,适合多个Gmail帐号使用者。

Right Click Menu in Gmail

在你的Gmail中增加右键功能,右键包括“inbox”, “compose new”, “sent messages”, “contacts”等。

Folders4Gmail

用类似文件夹的形式来管理你的Lables。

Gmail Super Clean

美化Gmail界面。

Gmail HTML Signatures

为Gmail增加 html签 名,也可以使用我之前介绍的WiseStamp。

Gmail Filter Assistant

Fliter助手,增加一个Filter管理模块,是你能够方便的创建filter。

Gmail Addons

增加各种功能到Gmail,包括Calendar等。

Gmail + Reader Integrator

喜欢 Gmail 和 Google Reader 的你怎么可以错过这个在 Gmail 里面看 Google Reader 的 addon ?

Gmail Spam-count Hide

隐藏 Gmail 中垃圾邮件的计数。就是传说中眼不见为净的境界。
2. Google日历的Greasemonkey脚本

Google Calendar Header and Navigation Switcher

在 Google 日历的左侧和顶端显示小三角,点击它们可以隐藏 / 显示左侧栏和顶部空间,最大化主区域的面积,折叠状态可记忆。

Google Calendar Wheel Viewer

在月视图、自定义视图中用鼠标滚轮翻屏,这是 Google 日历自身没有提供的。

Google Calendar Display Current Time Line

在日视图、周视图、自定义视图中显示一条当前时间的红线,适合日程多的大忙人使用。
3. Google Reader的Greasemonkey脚本

Google Reader: Show Feed Favicons

在Google Reader中显示Feed Favicons。

Google Reader Subscribers Count

在右下角显示此feed有多少用户通过google reader订阅。

Google Reader Redux

安装后你的Google Reader里所订阅的RSS Feed将会作为一个新菜单项出现在Gmail左侧上方。

Google Reader Preview Enhanced

增加Feed网页预览功能。你可以在feed的List和expand视图进行预览。

Google Reader for wider screens

改变Google Reader现实宽度,以使宽屏电脑用户获得更好的用户体验。

Google reader full feed changer

现在有些Feed不是全文输出,怎么办呢,可以使用此脚本,实现获取feed全文。

Google Reader Minimalistic

获得最简洁的Google Reader界面。

Colorful List View

这个脚本的功能是给Google reader的list view根据不同的feed着色,效果是很华丽的。如果你的feed不多,用这个脚本可以清楚地分别出不同来源的文章,但如果你有几百个不同的feed, 这个脚本恐怕不适合你,太花了。

GoogleMonkeyR

超强的google搜索结果页增强脚本,功能包括多列显示搜索结果、移除右侧付费结果、给搜索结果编号、自动载入翻页结果等等。必装。
4. Google搜索的Greasemonkey脚本

Google Thumbnails

在搜索结果前增加网页的缩略图。

GoogleTagCloudMaker

利用搜索结果显示出一个Tag Cloud,让你更方便找到相关的内容。

Google 100

让Google每页显示100个搜索结果

Google Air Skin

可拥有多个Google应用服务的皮肤。

AutoPagerize (Pagination)

自动翻页脚本。

Google Ad Remover

从Google搜索结果中去除任何广告。

Google Account Multi-Login

多个Google账号登录。没什么需要解释的,如果有好几个Google账号的话,这个脚本很方便。

Google Shortcuts

也是针对Google搜索的一个脚本,安装后,在Google主页输入i:搜索内容 可以直接调用google图片搜索,输入w:搜索内容 则是调用wikpedia, y: 自然是youtube了。

Google Search Sidebar for FF3

为 Google 搜索结果页面加入一个右侧边栏,其中包括来自 Wikipedia、YouTube 和 Flickr 的搜索结果。只要 Google 一次,就能得到这许多结果,相当方便。

Multi-Column Results

将 Google 搜索结果分为多栏,使用 Alt + 1/2/3 组合键可在一栏、二栏、三栏切换,适合宽屏用户。

Google Time Search

提供选项,让你可以搜索指定时间范围内的网页(如过去 24 小时)。

Twitter Search on Google Search Pages

twitter 已经成为最为实时的信息中心,这个 GreaseMonkey 脚本能将 Twitter 搜索结果结成到 Google 中。

Fixed Topbar

提供一个悬浮的导航条,包括到新闻搜索、图像搜索和翻页的连接,可以节省你不少时间。

Delicious Search Results on Google

将 Delicious 的搜索结果集成至 Google。
5. 通用的浏览器辅助增强Greasemonkey脚本

GoogleTagCloudMaker

自动在搜索结果的右边生成标签云(tagcloud,覆盖了原来的赞助商广告),鼠标停留在某个标签上,就会把含有此标签的搜索结果显示在最前面。 可能我说的不是很清楚,原文也说的不是很清楚。安装一下,你就知道有多好用了。Gfan 必备!支持中文标签云哦。

Disable Text Ads

自动移除 VibrantMedia(IntelliTXT), Kontera 和 Linkworth
的内文文字广告。

RSS+Atom Feed Subscribe Button Generator

当你发现一个优秀的新博客时,你还在满屏幕找 RSS 订阅按钮吗?安装这个 addon 之后,你只需在左上角点击自动生成的订阅按钮。(感觉不是很实用,如果有高手会修改这个脚本的话,建议为这个脚本添加更强的功能:订阅到抓虾之类的按 钮。)

Textarea Backup

文本框备份。你每按下十个按键、每十秒、文本框失去焦点(就是一闪一闪的竖线状光标在文本框中消失的时候),该 addon 会自动备份一次。当文本成功提交到服务器时,保存的文字会自动删除。会自动还原的哦。

LookItUp

选中网页文字,按下” w “,右边会出现 Wikipedia 中该词的页面。原文说可以自定义,对高手来说可能比较简单。

Linkify ting

自动把一个 URL 地址变成可以点击的链接。

Google MP3

自动调用 Google MP3 Player 播放任意网页中的 MP3 ,关于 Google MP3 Player 是这样的,Gmail 会自动调用 Google MP3 Player 来播放附件中的 MP3 文件,既然 Gmail 能用这个播放器,我们当然也能拿来用了。

简 繁转换

用于对网页进行简繁体转换阅读。
6. 视频下载的Greasemonkey脚本

Apple Trailer Download

让你可以非常方便地从 movie trailers from apple.com 下载任意大小的视频。用法在你要下载的大小上右键,选择“链接另存为”。

Download Video

让你轻轻松松得到 YouTube, Google Video, Myspace, Metacafe, Break.com, Putfile, Dailymotion 和 Sevenload 里面的视频的真实地址。只要点击页面顶部黄色的 Get download link(s) to video(s) 就行。
7. Web 2.0网站增强的Greasemonkey脚本

del.icio.us Prettifier

是不是觉得 del.icio.us 的界面很没特色(很难看)?快安装上吧。

IMDB enlarge actor pictures on hover

放大 IMDB (电影资料库,这里我链接的是其中文版)中演员的照片。

AdSlicer for MySpace

移除 MySpace 中的广告和空白。

YouTube Googler

让 YouTube 的界面看起来想 Google Videos ,看来是某狂热 Gfan 的杰作。

Facebook Auto-Colorizer

facebook 颜色主题一个。

Digg – Add Mirror

在 digg it 按钮下添加这样几个按钮:在 DuggMirror , Coral Cache, Google Cache 和 Archive.org 中查看该 digg 。当该 digg 的源链接过期,你还是可以轻松地浏览该 digg 的详细内容。也可以当成代理来使用。

Last.fm Artist Fan Rank

last.fm 是一个 Web 2.0 音乐分享社区。我安装该 addon 之后,去了 Last.fm 一趟,不知道它到底是用来干嘛的。-_-|||(我已经修改了该 addon 的作用网页范围。)
8. 豆瓣相关Greasemonkey脚本

Reply buttons for new Douban

给每个帖子添加回复按钮和引用按钮,适用于豆瓣的评论,小组,日记,站务论坛,活动论坛,书影音论坛等。 点击回复按钮自动在下方的输入框中添加 @<用户ID>, 点击引用按钮则自动在下方的输入框中引用全文, 并会自动将输入焦点移至输入框,方便你在豆瓣的讨论。

Friends Toolbar for Douban

在豆瓣的”友邻广播”页面,增加一个浮动的联络用工具条。

Douban Sliding Navbar

悬停式的豆瓣二级导航栏,实现了2007.11.16豆瓣改版风波中部分用户主张的悬停式二级导航栏。

相要查找更多GreaseMonkey脚本,你可以到这个网站: http://userscripts.org/