Face++ 人脸识别

简介

本文简单说明Face++ android 人脸检测器的使用方法,在线和离线人脸识别算法,算法支持android ios。最好给出结合Cocos2d-x应用。

注意:SDK 中包含armeabi 以及armeabi-v7a 两种架构的编译版本,其中armeabi 架构由于缺少浮点运算指令,因此运行速度仅能达到armeabi-v7a 编译版本的一半水平,请根据需求选用。

相关文件

demo.zip:离线检测器使用示例工程
doc.zip:SDK 接口javadoc 描述
libs/faceapi.jar SDK 接口
libs/armeabi SDK :依赖库(armeabi 架构)
libs/armeabi-v7a SDK :依赖库(armeabi-v7a 架构)

使用流程

本节内容通过介绍demo 工程来讲解SDK 的使用方式。

  1. 建立一个java 工程。
  2. 在AndroidManifest.xml 中添加权限
  3. 根据需求选择离线SDK 中依赖库以及libs/faceapi.jar 拷入工程内的libs 文件夹内,例如若APP 的运行环境为armeabi 架构,如下图所示: libs-faceapi
  4. 接着,在程序中初始化一个com.faceplusplus.api.FaceDetector 类。注意,类初始化时需要使用到当前context 以及使用者对应的API_Key, 这个API_Key 必须与下载离线检测器的App 对应的API_Key 一致才可以正确调用这个库。下面是一个调用示例:
    1. 初始化 :libs-faceapi-init
    2. 检测,并获取检测结果: libs-faceapi-detecter
    3. 若图像由摄像头采集,则原始数据将以YUV 格式存储,可以先将图像旋转到正确的方向后使用灰度图的形式传入检测器 libs-faceapi-detecter-yuv
  5. 离线检测器与线上API 的协同功能:如果需要用到线上API 的更多功能,可以将本地的检测结果直接上传(从而节省传输的数据量,仅会上传脸部图像)。使用离线SDK 中HttpRequest 的新方法offlineDetect,可将离线结果直接同步至线上,并获取face_id 进行后续操作,如下图所示:  libs-faceapi-detecter-http

库及key

本节提供库:http://pan.baidu.com/s/1i9szc

及下面是Key

  • API Key:636c34abb317f0c62985cabd73ebc8c8
  • API Secret:TCLJv-6PZtqSzVbthX0r2-IElnpW3z1t
  • API Url:apicn.faceplusplus.com

在Cocos2d-x应用人脸识别

静态检测

  1. 利用摄像机拍照保存图像RGBA8888,路径存到安卓程序的目录下,获取目录函数:FileUtils::getInstance()->getWritablePath()
  2. 和JNI交互使用,参考cocosplatformandroidjava下面的Cocos2dxHelper.java,及jni下面的Java_org_cocos2dx_lib_Cocos2dxHelper

动态检测

需要把摄像机嵌入到cocos2d-x里,有空就写个教程出来。

MaNGOS编译搭建

Mangos ,中文芒果服务器,是大名鼎鼎魔兽世界的模拟服务器,一个开源的c++实现的项目。只是作为研究用途,商业用是要给追究法律责任,跨平台性支持windows、linux、BSD操作系统。mmorpg服务器开发架构有的帮助,当然众所周知的原因,网络库那里是是ACE,一般人无法驾驭,写下本文是知做个笔记,因为网络部分不是很容易懂,TrinityCore是它分支,建议去深入这个大量的c++ 0x11重写Mangos ,本文只是环境是在windows环境下搭建MaNGOS编译经典版本的Zero,即是60级wow的1.12.1和1.12.2。之前也转过MaNGOS编译,那个比较老旧了,不过它的前言还是挺值的一看,至于目前最新的版本MaNGOS就参考这篇文章,文章在写的同事MaNGOS也是在一直更新,不过整的来说,它的编译方法差不了多少。

需求软件:

  • 暴雪官方魔兽世界 wow 1.12.1版本:
  • 编辑器:Notepad ++

Mangos编译

  1. 打开/win/BuildEverything_vc120.sln
  2. 编译将会在buildbinDebug目录下看到exe

制作地图

  1. 安装wow客户端
  2. 将Mangos编译出来的exe拷贝到World of Warcraft 1.12目录(Launcher.exe、WoW.exe)下
  3. 执行ExtractResources.sh,再执行make_vmaps.bat 漫长的等待,然后你看到dbc、maps、mmaps及vmaps。

数据库安装

  1. 按默认把mysql数据库管理系统安装上去
  2. 添加管理员帐号:mangos,密码:mangos
  3. 在database-release20目录下执行InstallDatabases.bat,(这个脚本有错误,后面会给批处理test.bat只是创建mangos的所有数据库)按照提示输入mysql 帐号和密码,
  4. 利用数据库工具更新mangos的全部数据库。

配置Mangos

mangosd.cfg

文件从mangosd.conf.dist.in修改后缀名

LoginDatabaseInfo = "127.0.0.1;3306;mangos;mangos;realmd"
WorldDatabaseInfo = "127.0.0.1;3306;mangos;mangos;mangos"
CharacterDatabaseInfo = "127.0.0.1;3306;mangos;mangos;characters"
ScriptDev2DatabaseInfo = "127.0.0.1;3306;mangos;mangos;mangos"
#下面是方便中断调试用,不会断开连接
MaxOverspeedPings =0 /

realmd.cfg

文件从realmd.conf.dist.in修改后缀名,直接默认。

运行并调试

  1. 把dbc、maps、mmaps及vmaps拷贝到buildbinDebug目录下。
  2. realmd是认证服务器,mangosd是游戏服务器,必须先启动认证服务器,如果要调试设置默认的为启动调试项目。
  3. 添加游戏用户,在mangosd的窗口里面输入,表示帐号username,密码Password的命令:create “username” “Password”
  4. 本机调试编辑魔兽世界官方客户端realmlist.wtf内容为,set realmlist 127.0.0.1
  5. 公网用:realmlist.wtf内容为,set realmlist 公网IP,用数据库工具打开realmd数据库,修改realmlist里面的address,为公网IP

Mangos 源码,数据库 wow客户端三者打包:

http://pan.baidu.com/s/1pJGEEan

更多资料

https://www.getmangos.eu/wiki.php

ogre简介

OGRE是什么?

OGRE(面向对象图形渲染引擎)是一个面向场景,C++编写设计的灵活的三维引擎,使它更容易和更直观的开发,利用3D硬件加速生成应用程序。像Direct3D和OpenGL的抽象细节底层类,并提供基于世界的物体和其他直观的类的接口。

它能做什么?

更多的特性,查看Ogre特征,或者查看ogre的截屏图

是一个游戏引擎?

目前OGRE(实际上已经)用来开放游戏,但是它是故意设计成功世界级图形解决方案;其他功能,如声音,网络,AI,碰撞,物理等,你需要将它和其他库结合,一些框架也已完成,有碰撞、物理整合的例子有描述。

为什么?好,这个是一个原因:并不是每一个人都需要3D引擎制作游戏,所以我们认为你为游戏,模拟,业务应用,一切用OGRE。其次即使在游戏行业,需求都有很大的不同,比如MMORPG(大型网游),FPS(第一人称射击),飞行模拟,需要不同碰撞物理系统的格斗游戏。如果OGRE都有这些特性,相信不是很好的设计,相反我们提供了友好的接口设计,如果需要,你可以选择其他库。许多游戏开发人员都很认可这种设计,因为没内在的约束。一个新的用户搭建一个fps游戏风格是非常艰难的,但是有越来越多的现成框架,使用OGRE提和给定其他库结合完整解决方案,使得OGRE保保持独立性灵活的融入。一个标准的宗旨,基于组件的设计是和其他库协同和整合,而不是同化。

为什么考虑使用它(而不是其他数不清的3D引擎)?

许多其他引擎,虽然技术上非常令人深刻,但是缺乏凝聚力的设计和一致的文档,无法能够有效的使用。他们中许多特性,例子的演示,但是没愿景。像其他软件,越臃肿。大多数去引擎,也用于游戏或者演示特定的风格(比如FPS类型,地形漫游)。

OGRE是不同的。OGRE的LED设计不是特性的LED,每个特性的设计底层到整体设计优雅,总是尽可能全面记录,意味着总有一个整体的一个部分特性。质量比数量好,因为数量可以在以后添加,质量永远不可能被添加回归。了解OGRE使用合理的设计原则,尝试多次使用商业软件提的设计模式。核心开发人员刻意的少,所有成员都有丰富的软件和社区经验。补丁来之社区,他们接受质量和凝聚力OGRE哲学严格审查。

OGRE不承当什么类型游戏和演示,灵活类层次结构允许您设计插件专门做你喜欢的任何场景。使室内的速度快吗?好,使用现有的BSP场景管理器/ PVS插件。想要一个室外景观吗?再次用场景管理器插件。引擎其他部分和以前一样。

所以答案是你如果喜欢优雅的设计,灵活和清晰的文档,那选择OGRE,你知道这是有趣的情景。

真的是免费?

OGRE是MIT协议,意味着你只有喜欢都可以使用,在把我们的版权文件COPYING 复制到你的程序目录下。源代码到你的程序,或者你修改的OGRE没有发布。

那里找到更多?

如果你想了解OGRE开发路线,你可以打开OGRE 手册,WIKI,阅读教程,有助于你快速掌握.

当然你如果需要支持,你也可以直接联系开发小组

ogre特征

ogre2.1已经在开发的路上,也许本文不是最新的ogre特征。

主要功能

  • 简单易于使用的面向对象接口设计,3D场景渲染最大限度的减少所需量,实时的Direct3D/ OpenGL实现
  • 可拖着的框架,使得你的应用程序运行快速和简单
  • 通用的渲染管理,空间剔除、处理透明度为你自动节省宝贵时间
  • 干净,整洁的设计,引擎类的完整文档
  • 经过验证,稳定在于一些商业产品

平台与3D API支持

  • 支持Direct3D 9 & 11, OpenGL (incl. ES, ES2, ES3 and OGL3+) 及 WebGL (Emscripten)
  • 支持Windows(所有主要版本),Linux, Mac OSX, Android, iOS, Windows Phone 及 WinRT 系统
  • 塔建在不同的编译器如:MSVC,、GCC 3+ 或 Clang

材质/着色支持

  • 强大的材质声明语言允许你重要的材质系统在代码之外
  • 支持顶点和片段程序(着色器),都用低级别汇编语言编写的程序及高级编程cg编写,DirectX9 HLSL, 或 GLSL 及对于很多常用的常量如世界矩阵,光状态信息,空间对象的眼位置等自动提供支持
  • 支持完整范围的固定功能,如纹理和多通路混合,纹理坐标生成和修改,独立色彩及为了非可编程的硬或者成本更低材质的的alpha操作
  • 如果需要最接近的’N’灯,则多pass效果及pass迭代
  • 支持更多的材质技术,意味着你可以设计替代效果,为了在多样的卡片和ogre自动支持最好的
  • 支持LOD材质,作为对象使用可以获得更低的开销在使用LOD材质
  • 加载纹理从 PNG, JPEG, TGA, BMP 或 DDS,包括不常用的格式如:1D纹理,体纹理,立方贴图和压缩纹理
  • 纹理可被提供和通过插件实时更新,如:视频反馈
  • 支持易于使用的投影纹理

网格

  • 接受灵活的网格数据格式,顶点缓冲器概念分离,索引缓冲,顶点声明和缓冲区映射
  • 二次贝塞尔曲面
  • 渐进式网格(LOD),手动,或自动
  • 批静态几何图形

动画

  • 支持先进的骨骼动画
    • 多个可变重动画的混合
    • 可变/多骨骼动画蒙皮
    • 软件和硬件加速与管道缓冲智能共享的蒙皮
    • 手动骨骼控制
    • 可配置插补方式,精确度和速度
  • 支持灵活的形态动画
    • 变形动画的传统应用程序在你想希望的简单线性混合在外形快照之间
    • 形象的现代造型动画,在变化的时间线上让你融入更多的形象动画,的比如说话的口型进行的面部动画
    • 两种技术的都可用硬件和软件实现,取决你的硬件支持的支持
  • 动的SceneNodes摄像机路径,采样插值动画在需要的地方的类似的技术
  • 可接受的插拔对象适配器的通用动画轨迹,使你赋予任何随着时间推移的对象的任何参数

场景特点

  • 不依赖于任何单一的场景类型,高度可定制的,灵活的场景管理。使用预定义的类进行场景组织,如果他们适应或插入您自己的子类来获得完全控制场景组织
  • 几个示例的插件演示多种方式处理特定类型布局(如BSP,八叉树)
  • 分层场景图;节点允许对象被连接到彼此及跟随对方的运动和链接结构等
  • 多重阴影渲染技术,无论经过调节和添加技术,模版和纹理为基础,每个高度可配置和充分利用任何可用硬文件加速
  • 场景查询功能

特殊效果

  • 合成系统,允许在全屏后处理效果,如需定义通过脚本
  • 粒子系统,包括易扩展发射器,影响器和渲染器(通过自定义插件)。系统可以通过文本脚本轻松调整来定义。自动使用粒子池的最大性能
  • 支持非常容易使用的kyboxes, skyplanes 及skydomes
  • 公告板精灵
  • 带状痕迹
  • 自动管理透明对象(渲染顺序及深度缓冲器设置)

其他特点

  • 内存资源过来和通过文件加载(ZIP,PK3)
  • 灵活的插件架构允许引擎不需要重新编译
  • ‘Controllers’易于你组织对象派生如改变船的左上盾牌颜色
  • 定位内存泄漏的内存调试管理器
  • 高效的二进制XML格式/接口交互和编辑
  • 示例库browser 展示了许多功能

AES加解密

这篇文章是对Cocos2d-x游戏资源加密解决方案的补充吧。说AES 数据的加密,解密过程。可以应用到cocos2d-x的数据加解密上面,比如玩家分数加密,写入到UserDefault写xml文件上面。

AES简单介绍

作为加密很有aes、des 、3des,三者对称加密中,AES256目前是3者中最安全的。比如:你现在的数据是”abcd”,这个时候你不想人家知道,最简单的办法就是^”密码”,界面再^”密码”。当然这个是很容易给解出来的。如果你想好一点加密数据就用AES,现在的网络有很多源代码,笔者找过的库有aes-des-3des,aes-src-18-02-14,Botan-1.10.8,OpenAES-0.9.0,openssl-1.0.1i,xyssl_0.9,cryptopp562,通过对比,最终选择了xyssl_0.9里面的AES库的解密速度快,在安卓下可以使用,最重要的是在cocos2d-x下的项目上做个实验,效率可以。AES有下面三个特点。

  1. 是对称加密算法,即密钥是相同。
  2. 密钥长度有128,192或256比特。密钥长的好。
  3. 消耗资源,毕竟要解密,是需要时间的。

AES加解密

加解步骤

  1. 初始化IV 和key,不同平台可能默认不同初始化,一定要自己memset。
  2. 设置aes_setkey_enc。
  3. cbc模式,当然你也可以用其他模式。

aes加解密代码示例

#include "aes.h"
void AesEncDec(char* in_buffer, char* out_buffer,bool b_enc)
{
    aes_context aes_ctx;
    unsigned char IV[16];
    unsigned char key[32];
    memset(key, 0, 32);
    memset(IV, 0, sizeof(IV));
    char password[32] = "123456";
    memcpy(key, password, strlen(password));

    int length = strlen(in_buffer);//注意strlen第一个字符串结束符'\0'为止,如果中间有'\0' ,后面的就失败,自己可固定长度,感谢味精指出
    int enc_buff_length = length + 16 - length % 16;
    if (b_enc)
    {
        aes_setkey_enc(&aes_ctx, key, 256);
        aes_crypt_cbc(&aes_ctx, AES_ENCRYPT, enc_buff_length, IV, (unsigned char*)in_buffer, (unsigned char*)out_buffer);
    }
    else
    {
        aes_setkey_dec(&aes_ctx, key, 256);
        aes_crypt_cbc(&aes_ctx, AES_DECRYPT, length, IV, (unsigned char*)in_buffer, (unsigned char*)out_buffer);
    }
}
//AES测试代码
char buffer[32] = {"123456789123"};
//int length = strlen(buffer);
AesEncDec(buffer, buffer, true);
AesEncDec(buffer, buffer, false);

文件加解密

作为文件,他只是数据存储,你只关心他数据本身的加解密。无论是在游戏,或者其他应用。我关于cocos2d-x png图片的资源加密保护,用这方法。在游戏引擎里面你也只把文件读取出数据进行解密。

  1. 打开文件。
  2. 读取文件内容。
  3. 进行加密,或解密。
  4. 写入加密内容。

源码下载

http://pan.baidu.com/s/1qWqTtEk

android编译boost库

本文描述在Debian 8.0系统,Android NDK编译android版本的boost库,最后给出使用Android.mk及已编译好的库。

预备

andorod NDK版本:最高去到r10d目前最新的,建议android-ndk-r9d 支持的boost版本:1.45.0、1.48.0、1.49.0、1.53.0、1.54.0、1.55.0。

Boost-for-Android: https://github.com/MysticTreeGames/Boost-for-Android/archive/master.zip

编译boost库

如果不想编译就直接跳过,后面给出已经编译好的boost库

  1. 终端下执行sudo apt-get install ia32-libs,x64位缺少,请按提示安装。
  2. 配置环境变量:$(NDK_ROOT) ,依次执行:
    • export NDK_ROOT=/usr/local/src/android-ndk-r9d
    • export PATH=$NDK_ROOT:$PATH
  3. 修改build-android.sh的内容
    1.  --layout=versioned
       #增加下面两行
       --without-python
       --without-locale
       #增加结束
       -sICONV_PATH=`pwd`/../libiconv-libicu-android/armeabi 
  4. 终端执行: ./build-android.sh $(NDK_ROOT)

boost库的使用

1.你的程序Application.mk

APP_STL := gnustl_static
APP_CPPFLAGS += -frtti -fexceptions

boost库的编译是用指定了gnustl的标准库。

2.你的程序Android.mk

#导入boost库所有在的目录
$(call import-add-path,$(LOCAL_PATH)/../../../../build)
..
..
LOCAL_WHOLE_STATIC_LIBRARIES += boost_static
include $(BUILD_STATIC_LIBRARY)
$(call import-module,boost)

3.boost 库的Android.mk文件内容

LOCAL_PATH:= $(call my-dir)
# boost_date_time
#
include $(CLEAR_VARS)
LOCAL_MODULE := boost_date_time
LOCAL_SRC_FILES := lib/libboost_date_time-gcc-mt-1_55.a
include $(PREBUILT_STATIC_LIBRARY)

# boost_filesystem
#
include $(CLEAR_VARS)
LOCAL_MODULE := boost_filesystem
LOCAL_SRC_FILES := lib/libboost_filesystem-gcc-mt-1_55.a
include $(PREBUILT_STATIC_LIBRARY)

# boost_thread
#
include $(CLEAR_VARS)
LOCAL_MODULE := boost_thread
LOCAL_SRC_FILES := lib/libboost_thread-gcc-mt-1_55.a
include $(PREBUILT_STATIC_LIBRARY)

# boost_system
#
include $(CLEAR_VARS)
LOCAL_MODULE := boost_system
LOCAL_SRC_FILES := lib/libboost_system-gcc-mt-1_55.a
include $(PREBUILT_STATIC_LIBRARY)

# boost_program_options
#
include $(CLEAR_VARS)
LOCAL_MODULE := boost_program_options
LOCAL_SRC_FILES := lib/libboost_program_options-gcc-mt-1_55.a
include $(PREBUILT_STATIC_LIBRARY)

# boost_chrono
#
#include $(CLEAR_VARS)
#LOCAL_MODULE := boost_chrono
#LOCAL_SRC_FILES := lib/libboost_chrono-gcc-mt-1_55.a
#include $(PREBUILT_STATIC_LIBRARY)

# first lib, which will be built statically
#
include $(CLEAR_VARS)
LOCAL_MODULE := boost_static
LOCAL_MODULE_FILENAME := boost
LOCAL_STATIC_LIBRARIES := boost_date_time
                          boost_system
                          boost_filesystem
                          boost_program_options
                          boost_thread
                         # boost_chrono
#LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/boost-1_55
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/boost-1_55
#LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
include $(BUILD_STATIC_LIBRARY)

 编译好的boost 1.55的下载

build ndk-r9d-boost1.55.0:http://pan.baidu.com/s/1pJKH6gr

GamePlay3d游戏引擎安卓环境塔建

本文说明GamePlay3d 3.0如何编译安卓系统游戏。安卓ndk 运行于Linux, MacOSX 及 Windows桌面环境。

安装源码和依赖包

  • GamePlay3d源码:https://github.com/gameplay3d/GamePlay/releases
  • win下执行install.bat
  • Linux, MacOSX执行./install.sh

安装工具

安装android sdk

  • 下载并安装对应平台的SDK http://developer.android.com/sdk/index.html(注意win7上的系统选择xp sp3兼容模式)
  • .添加<android-sdk-path>/tools and <android-sdk-path>/platform-tools 到环境变量Path

安装android ndk

  • 下载并安装对应平台的ndk http://developer.android.com/tools/sdk/ndk/index.html
  • 添加<android-ndk-path>到环境变量Path

安装Apache Ant

  • 下载并安装对应平台的Ant http://ant.apache.org/manual/install.html
  • 添加<ant-path>/bin到环境变量Path

安装Android SDK 包(API 16)

  • 运行android sdk下的SDK Manager

配置编译目标

  • 查找当前android 目标api,执行命令 :android list targets
  • 它将会是类似这样
    • Available Android targets:
      ----------
      id: 1 or "android-16"
           Name: Android 4.1.2
           API level: 16
           Revision: 1
      ----------
      id: 2 or "android-21"
           Name: Android 5.0
           API level: 21
           Revision: 1
      ...

       

  • id: 1 就是表示选择”android-16″,执行命令:android update project -t 1 -p . -s

编译库和例子

  • 进入例子目录,执行命令:cd samples/browser/android
  • 执行命令:ant debug

包和安装

  • 进入例子目录,执行命令:cd samples/browser/android
  • 安装app,执行命令:ant debug install

疑难

  • 在进入2D例子的时候导致字体异常,解决是需要用master源码。
  • 无法产生so库,解决:修改jni的Android.mk文件。

地形图

gameplay3d-terrain

Gameplay3d游戏引擎vs2013搭建

简单介绍gameplay3d,然后给出windows编译。

gameplay3d概述

gameplay3d是黑莓出品的开源,跨平台,2D及3D游戏引擎框架。目的是给游戏开发人员独立创建桌面和手机游戏。

支持的平台

Linux、Windows、MacOSX、iOS、Android

框架

  • c++实现
  • Apache2.0授权
  • doxygen文档
  • 支持的工作平台:Visual Studio, XCode, QTCreator, Eclipse and CMake
  • 二进制打包工具,利于优化ttf字体 fbx资源。

特色

  • 完整的绘制渲染系统OpenGL (就是我们的PC,游戏主机等)OpenGL ES(移动设备)。
  • 基于材质系统的内置shader。
  • 支持灯光,场景摄像机,音频,物理和图片。
  • 陈述场景,动画,粒子,材质绑定。
  • 高层次地形和LOD。
  • 支持2D/3D的陈述ui系统
  • 可扩展的骨骼动画系统。
  • 易用的sprite, tileset 和text renderin。
  • 完整声音系统,支持wav ogg格式。
  • 全矢量数学库和二维/三维数学和可见性剔除。
  • 人工智能,状态机,消息
  • 全矢量2d/3d数学库和可见性剔除。
  • 支持输入:鼠标,键盘,触摸,手势和游戏手柄。
  • Lua脚本绑定,用户绑定生成器工具。

windows环境配置

gameplay3d源码

https://github.com/gameplay3d/GamePlay/releases

安装依赖库

  • 在开始之前,必须先下载依赖库。
  • 运行install.bat

安装Visual Studio 2013

  • 下载地址:http://www.microsoft.com/visualstudio/eng/downloads#d-2013-express
  • 安装路径随意,建议用英文路径

安装DirectX SDK – June 10

  • 下载地址:http://www.microsoft.com/en-ca/download/details.aspx?id=6812
  • 使用默认安装路径: C:Program Files (x86)Microsoft DirectX SDK (June 2010)

编译

  • 打开gameplay.sln
  • 选择Build > Build Solution (F7)

运行例子

  • 右击你想运行的例子
  • 设置为启动项目
  • 点击调试,开始调试 (F5)

赛车图

sample-racer

免费国外cdn网站提速推介

我空间在美国,在国内没备案,想让国内的访问快。国外的免费cdn网站加速incapsula,使用香港节点ping值110左右。当然国内也有个安全宝,它会给你提供日本的节点,但是及不稳定。

注册帐号

  • 登录https://www.incapsula.com/
  • 点击PRICING&SINGN UP,点击Free
  • 填入注册信息
    • First name:名字
    • Last name:姓
    • Email address:电子邮箱
    • Password:至少8位密码
    • Confirm password:重复至少8位密码
  • 到你的邮箱激活帐号。

添加网站

点击Add a website:填入你的域名。

incapsula自动扫描你的网站记录。点击Continue。

分配国外的ip节点给你。写着啥 iI completed th Dns chaanges,不管它。。

修改域名dns记录

把你的域名A 记录值改成45.64.64.200

上dnspod的dns修改图

dnspod

香港节点:45.64.64.0/24

全部CDN节点:http://bgp.he.net/AS19551#_prefixes

去除incapsula的小广告,点击Sites,点击域名,点Settings,点General,把Web Seal 的勾去掉,点Save.

写在后面

cdn服务商

  • 国内的cdn :百度云加速,腾讯云加速,360云加速 ,加速乐,新浪云加速,七牛云储存,安全宝(据说给百度已收购)。根据在网上的评论360云加速目前是好的选择。这里得说下网宿科技,相信看视频的朋友都可能留意到这个号称”中国最大的CDN及IDC综合服务提供商”。乱七八糟,都在抢占市场。
  • 国外的cdn :CloudFlare,Google PageSpeed Service

cnd好处

  1. 访问速度快,给你分配了最近的节点,这个技术是通过dns来智能识别。
  2. 抗攻击,真实的ip地址你是不知道。
  3. 对网站的seo不影响

osg3.2.1编译

openscenegraph3.2.1目前最新版 在windows7编译,支持vs2010 2012 VisualStudio 2013 RTM等

准备

最新openscenegraph稳定版源码http://www.openscenegraph.org/index.php/download-section/stable-releases

依赖库,选择相应的VisualStudio 版本:http://www.openscenegraph.org/index.php/download-section/dependencies

osg的data给例子资源OpenSceneGraph-Data-3.0.0:http://www.openscenegraph.org/index.php/download-section/data

赖人就下载已osg编译好的二进制文件:http://openscenegraph.alphapixel.com/osg/downloads/free-openscenegraph-binary-downloads

目录结构说明

OpenSceneGraph-3.2.1

  • 3rdParty:依赖库目录,注意对应vs版本,vs2013的可以下载我这的http://pan.baidu.com/s/1qW9WOES
  • build:cmake指定目录,生成sln文件
  • OpenSceneGraph:osg源码目录,这个目录下有CMakeLists.txt文件,给cmake用的

cmake生成VisualStudio工程文件

  1. 打开cmake
  2.   看cmake 的gui 分别填入
    1. source code: E:OpenSceneGraph-3.2.1 ,
    2. build the binaries:E:OpenSceneGraph-3.2.1build
  3. 点击configure,现在你要生成对应VisualStudio版本,然后点击Generate(如果你要例子需要把BUILD_OSG_EXAMPLES打勾)。
  4. build目录打开sln编译install,在C:Program Files (x86)目录看到相应osg库

运行例子

添加C:Program Files (x86)OpenSceneGraphbin到环境变量PATH。

新建环境变量OSG_FILE_PATH:E:OpenSceneGraph-Data-3.0.0;E:OpenSceneGraph-Data-3.0.0Images。

想看全屏的牛cmd运行命令:osgviewerd.exe E:OpenSceneGraph-Data-3.0.0cow.osg

四个版本说明

Debug:调试版

Release:发布版

MinSizeRel:最小发布版

RelWithDebInfo:可以调试的发布版