Raspberry Pi

默认的http://mirrordirector.raspbian.org源太慢了,在http://www.raspbian.org/RaspbianMirrors找一个快的

$ sudo vim /etc/apt/sources.list

OpenGL

今天做了一个可以移动的三角形,并且有碰撞检测功能,不可以移出窗口外

#include 
#include 

#include <glut/glut.h>

#include 

GLBatch triangleBatch;
GLShaderManager shaderManager;

GLfloat blockSize = 0.5f;
GLfloat vVerts[] = { -blockSize, 0.0f, 0.0f,
                      blockSize, 0.0f, 0.0f,
                      0.0f, blockSize * 2, 0.0f };

void ChangeSize(int w, int h)
{
    glViewport(0, 0, w, h);
}

void SpecialKeys(int key, int x, int y)
{
    GLfloat stepSize = 0.025f;
    
    GLfloat blockX = vVerts[0];
    GLfloat blockY = vVerts[1];
   
    // 按键 
    switch (key)
    {
        case GLUT_KEY_UP:
            blockY += stepSize;
            break;
        case GLUT_KEY_DOWN:
            blockY -= stepSize;
            break;
        case GLUT_KEY_LEFT:
            blockX -= stepSize;
            break;
        case GLUT_KEY_RIGHT:
            blockX += stepSize;
            break;
        default:
            break;
    }
    
    // 与边界碰撞检测
    blockX = std::max(blockX, -1.0f);
    blockX = std::min(blockX, 1.0f - blockSize * 2);
    blockY = std::max(blockY, -1.0f);
    blockY = std::min(blockY, 1.0f - blockSize * 2);
   
    // 改变左下角的xy坐标 
    vVerts[0] = blockX;
    vVerts[1] = blockY;
    
    // 改变右下角的xy坐标 
    vVerts[3] = blockX + blockSize * 2;
    vVerts[4] = blockY;
    
    // 改变顶角的xy坐标 
    vVerts[6] = blockX + blockSize;
    vVerts[7] = blockY + blockSize * 2;
    
    triangleBatch.CopyVertexData3f(vVerts);
    
    glutPostRedisplay();
}

void SetupRC()
{
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
    
    shaderManager.InitializeStockShaders();
    
    triangleBatch.Begin(GL_TRIANGLES, 3);
    triangleBatch.CopyVertexData3f(vVerts);
    triangleBatch.End();
}

void RenderScene()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    
    GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
    triangleBatch.Draw();
    
    glutSwapBuffers();
}

int main(int argc, char *argv[])
{
    gltSetWorkingDirectory(argv[0]);
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
    glutInitWindowSize(800, 600);
    glutCreateWindow("三角形");
    glutReshapeFunc(ChangeSize);
    glutDisplayFunc(RenderScene);
    glutSpecialFunc(SpecialKeys);
    
    GLenum err = glewInit();
    if (GLEW_OK != err) {
        return 1;
    }
    
    SetupRC();
    
    glutMainLoop();
    
    return 0;
}
</pre>
</section>

OpenGL

最近开始有点想学习OpenGL,第一个OpenGL程序,记录一下

在看OpenGL蓝皮书,第一个程序就是显示一个三角形。

需要GLTools这个库的支持

在OS X 10.9系统下glut很多接口都已经过时了

#include 
#include 

#include <glut/glut.h>

GLBatch triangleBatch;
GLShaderManager shaderManager;

void ChangeSize(int w, int h)
{
    glViewport(0, 0, w, h);
}

void SetupRC()
{
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
    
    shaderManager.InitializeStockShaders();
    
    GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
                          0.5f, 0.0f, 0.0f,
                          0.0f, 0.5f, 0.0f };
    triangleBatch.Begin(GL_TRIANGLES, 3);
    triangleBatch.CopyVertexData3f(vVerts);
    triangleBatch.End();
}

void RenderScene()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    
    GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
    triangleBatch.Draw();
    
    glutSwapBuffers();
}

int main(int argc, char *argv[])
{
    gltSetWorkingDirectory(argv[0]);
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
    glutInitWindowSize(800, 600);
    glutCreateWindow("三角形");
    glutReshapeFunc(ChangeSize);
    glutDisplayFunc(RenderScene);
    
    GLenum err = glewInit();
    if (GLEW_OK != err) {
        return 1;
    }
    
    SetupRC();
    
    glutMainLoop();
    
    return 0;
}
</pre>
</section>

Unity 2014

今天有幸去参加了Unity2014亚洲开发者大会,早早就在闹铃声中起床了,然后接着吃早餐坐地铁前往国家会议中心

9点20分钟左右到,一进门,被吓到了,排队签到的人好多,起码有10条队伍,排了差不多10来分钟才到我,还发生扫码时我的手机竟然扫不出来,问我电话我说的还没有,有可能用的是旧的号码登记的,不过最后还好是扫成功,才拿到了参会嘉宾证。

上次来参加Cocos2d-x开发者大会也是在这里,不过当时人不多,签到根本不用排队。签到完了就上楼,发现有几个展台,就好奇去看看了,全是也Unity有关的,作为一名Cocos2d-x的开发者,看到那3D效果切实很牛B,有点心动想学习Unity了,在高通那个展台,是一个老外在那里,突然一个中国女孩,用一口流利的英文跟高通那老外聊起来,突然感觉会说英语的女孩好美啊,虽然那女孩确实长得也是个美女,哈哈。现在工作后才后悔当年在学校的时候怎么就不好好学习英语呢,有点气人啊。接着就往里走了,有小米互娱、360手机助手、三星等的展台,最后被一个虚拟现实的展台吸引住了,看那设备,不就是Facebook 20亿美刀收购的,太好了,终于有机会体验一下了,然后就排队了,人好多了,排了也差不多20来分钟,中间设备还出现两次故障,最后终于到我了,带上设备后,里面的场景是一间鬼屋里,第一人称视角,手里拿着灯笼,然后下面有一条黑色的指引线,工作人员告诉我,沿着这条线走就行了,在带上设备之前,已经看到在我前面的人的反应了,最后都被吓到大喊一声,我对这个最怕了,胆很小,然后全程我都是低着头,然后把眼睛半眯着,然后一睁一睁地走到最后,然后最后那个东西就出来,小吓了一跳,还好是半眯眼睛,要不吓死,总体感觉效果很不错,不过分辨率好像有点低,看不大清楚,跟我近视也有原因,算是体验过虚拟现实是什么东西了。然后就是进主会场听演讲了,整个上午好像没有特别的东西,中午就出去吃饭了,下午回来2点10分开场,下午主要是听了目前国内几个大游戏公司的制作人在说目前以及未来国内游戏的一些动态,最后还有一个吸引我的就是动作捕捉技术,感觉超级超级牛B,17个传感器就能够把一个人的全部动作捕捉起来。

最后就是对比Cocos2d-x开发者大会,这次Unity亚洲开发者大会首先要想听好内容就是要收钱的,我今天是免费去的,就只拿一参会证,啥也没有,交钱的就东西比较多,不过这两个引擎没什么好比的,一个是开源,别一个是商业的,不过在参会人数来看,Unity人多一点,主是要亚洲这两个字,像台湾、韩国都有企业过来参会的。

最后,感觉自己还是要学习一下Unity,毕竟多一门技术不会坏事。

Mac vagrant ubuntu

由于需要在mac下使用ubuntu环境,如果要建一个虚拟机太费事了,还费内存,现在使用vagrant非常简单,这里记录一下

首先安装 https://github.com/phinze/homebrew-cask,这个brew的一个扩展命名,能够通过命令行安装dmg的应用

$ brew tap phinze/cask
$ brew install brew-cask

安装vagrant与virtualbox

$ brew cask install vagrant
$ brew cask install virtualbox

下载ubuntu的box

$ mkdir ubuntu
$ cd ubuntu
$ wget http://files.vagrantup.com/precise32.box

创建与初始化ubuntu box

$ vagrant box add ubuntu ./precise32.box
$ vagrant init ubuntu

接下来就可以使用ssh登录了

$ vagrant up
$ vagrant ssh

参考:http://blog.segmentfault.com/fenbox/1190000000264347