<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[smsmn的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/smsmn</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; smsmn]]></copyright><item><title><![CDATA[关于 骨骼动画之理解蒙皮算法]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/53870334</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/53870334</guid><author>smsmn</author><pubDate>Sun, 25 Dec 2016 16:08:39 +0800</pubDate><description><![CDATA[把三维骨骼顶点联系至骨骼的位置的过程，称为蒙皮。
蒙皮用的网格是通过顶点联系上骨骼，每个顶点可以绑定一个或者多个骨骼（一般最多允许4根骨骼）。若某顶点只绑定至一根骨骼，它就会完全跟随该骨骼移动。若绑定至多个骨骼，该顶点的位置就等于把它逐一绑定绑定个别骨骼，在通过权重加权平均。
能把网格顶点从原来位置（绑定姿势）变换至骨骼的当前姿势的矩阵称为蒙皮矩阵。
蒙皮矩阵不是基变更变换（change o]]></description><category></category></item><item><title><![CDATA[读《More Effective C++35个改善编程与设计的有效方法》之条款3：绝对不要以多态方式处理数组]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/51416063</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/51416063</guid><author>smsmn</author><pubDate>Sun, 15 May 2016 10:44:04 +0800</pubDate><description><![CDATA[有以下程序：
class Base
{
public:
	Base(int n = 0) : _b(n) {}
	int _b;
};

class Devide : public Base
{
public:
	Devide(int n = 0, int m = 0) : Base(n), _d(m) {}
	int _d;
	int _d1;
};

void print(std::ostr]]></description><category></category></item><item><title><![CDATA[读《深度探索C++对象模型》之对象成员的效率]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/51345451</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/51345451</guid><author>smsmn</author><pubDate>Sun, 08 May 2016 14:50:09 +0800</pubDate><description><![CDATA[测试平台：华硕N53S（五年前的老机子）
编译环境：VS2010
接下来我将会有多个测试，在多个不同环境下的所消耗的时间比较：
五个测试分别为：个别的局部变量、局部数组、struct之的Public、class 之中的inline Get函数、 class之中的inline Get & Set函数：
代码片段如下：
struct Point
{
	Point(float mx, floa]]></description><category></category></item><item><title><![CDATA[读《深度探索C++对象模型》之分层继承对于内存布局的影响]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/51344441</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/51344441</guid><author>smsmn</author><pubDate>Sun, 08 May 2016 14:03:05 +0800</pubDate><description><![CDATA[请看以下代码：
class Concrete
{
public:
private:
	int val;
	char c1;
	char c2;
	char c3;
};我在我的电脑上运行，求得的类Concrete的大小为8byte，我想还是符合我们的预期（val：4byte, c1 : 1byte, c2 : 1byte, c3: 1byte），在加上字节对齐的一个字节，刚好是8byte。
那]]></description><category></category></item><item><title><![CDATA[读《深度探索C++对象模型》之成员初始化列表作用]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/51338083</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/51338083</guid><author>smsmn</author><pubDate>Sat, 07 May 2016 15:22:47 +0800</pubDate><description><![CDATA[很多时候，我们在定义构造函数时，有人会选择将成员初始化放在函数里，有人会放在成员初始化列表中，这两种有什么区别呢，先运行以下代码：
class test
{
	friend test foo(double);
public:
	test()
	{
		memset(array, 0, 100 * sizeof(double));
	}
	inline test(const test &t)
	{]]></description><category></category></item><item><title><![CDATA[读《深度探索C++对象模型》之拷贝构造函数是否有必要明确定义？]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/51337989</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/51337989</guid><author>smsmn</author><pubDate>Sat, 07 May 2016 15:06:05 +0800</pubDate><description><![CDATA[我想，对于大部分程序员来说，一般的类都会定义构造函数/虚构函数/拷贝构造函数/赋值函数等，但是真的有必要吗，难道让编译器默认替我们定义一个不好吗，请看以下例子：
class Point
{
public:
	Point(float x, float y, float z)
	{
		_x = x;
		_y = y;
		_z = z;
	}
private:
	float _x, _y, _z]]></description><category></category></item><item><title><![CDATA[读《深度探索C++对象模型》有感]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/51336492</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/51336492</guid><author>smsmn</author><pubDate>Sat, 07 May 2016 10:27:18 +0800</pubDate><description><![CDATA[我想有看过不少C++的书籍，都会有以下的表述：
在Class中，如果我们没有声明构造函数，编译器都会给我们默认构造一个构造函数，也就是Default Construct，但是真的是如此吗，请看以下的example：
lass AA
{
public:
	int x;
	AA *next;
};

int main()
{
	AA a;
	std::cout << a.x << std::end]]></description><category></category></item><item><title><![CDATA[Effective C++ 改善程序与设计的55个具体做法之条款37]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/51325779</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/51325779</guid><author>smsmn</author><pubDate>Thu, 05 May 2016 20:05:59 +0800</pubDate><description><![CDATA[本条款：绝不重新定义继承而来的缺省参数值
直接上以下代码：
#include 

class Shape{
public:
	enum ShapeColor {Red, Green, Blue};
	virtual void draw(ShapeColor color = Red) const = 0;
};

class Rectangle : public Shape
{
public:
]]></description><category></category></item><item><title><![CDATA[Effective C++ 改善程序与设计的55个具体做法之条款33]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/51325503</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/51325503</guid><author>smsmn</author><pubDate>Thu, 05 May 2016 19:26:45 +0800</pubDate><description><![CDATA[本条款：避免遮掩继承而来的名称。
我们在C++中经常会用到继承，会用到多态，会重载函数等，以下主要讲解遇到的一个会很容易犯错的点：
先给测试代码：
#include 

class Base
{
private:
	int x;
public:
	virtual void mf1() = 0;
	virtual void mf1(int) {}
	virtual void mf2(){}
	]]></description><category></category></item><item><title><![CDATA[OpenGL矩阵的那些事-1]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/49406591</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/49406591</guid><author>smsmn</author><pubDate>Sun, 25 Oct 2015 21:02:15 +0800</pubDate><description><![CDATA[我想做过三维的人都知道OpenGL，它也算是最基础的三维底层库之一（另外一个是DX），好吧，这一篇文章并不是讲解如何使用OpenGL，我接下来将会讲讲我认识的OpenGL矩阵部分的知识。
在OpenGpu里面有一个测试题，问的是OpenGL用的是行Or列矩阵？用的是行OR列存储，这一篇链接如下：这部分的介绍我还是引用那位大神的介绍：
http://www.opengpu.org/forum.p]]></description><category></category></item><item><title><![CDATA[OGRE动画系统--骨骼动画]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/49402375</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/49402375</guid><author>smsmn</author><pubDate>Sun, 25 Oct 2015 11:36:24 +0800</pubDate><description><![CDATA[在骨骼动画中，模型具有互相连接的“骨骼”组成的骨架结构，通过改变骨骼的朝向和位置来为模型生成动画。
在骨骼动画，有一个过程叫做蒙皮，它的过程就是如何将模型的顶点与骨骼联系起来，比如说肩膀这个骨头有受到手臂这个骨骼影响也有受到肩膀这个骨骼想影响，它们都有一个影响值，那么在OGRE中，我们需要做一个限定，我们这边是限定每个顶点最多受到四个骨骼的影响，如果我们发现每个顶点超过四个骨骼，那么我们需要截取]]></description><category></category></item><item><title><![CDATA[OGRE动画系统--OGRE中的mesh文件和skeleton文件解析]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/48812313</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/48812313</guid><author>smsmn</author><pubDate>Tue, 29 Sep 2015 22:00:18 +0800</pubDate><description><![CDATA[Ogre中的Mesh文件主要包含：共享的顶点信息、subMesh部分、skeleton链接文件、骨骼和顶点索引和权重信息、LOD信息、包围盒信息、subMesh名字列表、边缘信息、Pose动画信息、Extreams信息和Pose动画关键帧信息。
Ogre中的skeleton文件包含：骨骼混合模式、骨骼绑定信息、骨骼层次信息、骨骼动画信息以及骨骼链接信息（可以链接到新skeleton文件）
Og]]></description><category></category></item><item><title><![CDATA[Ogre动画系统连载-Ogre中的数据格式]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/48595421</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/48595421</guid><author>smsmn</author><pubDate>Sun, 20 Sep 2015 11:08:51 +0800</pubDate><description><![CDATA[OGRE动画系统
突然想到以前对于Ogre都是太肤浅的认识，经过这段时间的学习以及深入研究，对于Ogre的动画系统总算是有所眉目，不过还只是冰山一角而已。再次验证了，还是要在一个公司好好待个几年才会有好的积累，希望能在本公司至少待满3年吧。
接下来的这段时间，我会不断的写一些我所理解的Ogre动画系统，也许我写的不够好，或者有错误，希望大家积极指出，谢谢。
 
Ogre动画系统连载-Ogr]]></description><category></category></item><item><title><![CDATA[urho3D编译文档工程出现的BUG]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/48464785</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/48464785</guid><author>smsmn</author><pubDate>Tue, 15 Sep 2015 11:09:24 +0800</pubDate><description><![CDATA[在编译Urho3D的doc项目时sh: dot: command not found，后面经过网上查询发现需要下载Graphvis这个软件才能找到dot命令。]]></description><category></category></item><item><title><![CDATA[欢迎使用优快云-markdown编辑器]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/48464749</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/48464749</guid><author>smsmn</author><pubDate>Tue, 15 Sep 2015 11:05:24 +0800</pubDate><description><![CDATA[欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来，用它写博客，将会带来全新的体验哦：
Markdown和扩展Markdown简洁的语法
代码块高亮
图片链接和图片上传
LaTex数学公式
UML序列图和流程图
离线写博客
导入导出Markdown文件
丰富的快捷键
快捷键
加粗    Ctrl + B 
斜体    Ctrl + I 
引用    Ctrl]]></description><category></category></item><item><title><![CDATA[OpenGL Performance Optimization]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/24406301</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/24406301</guid><author>smsmn</author><pubDate>Thu, 24 Apr 2014 13:05:38 +0800</pubDate><description><![CDATA[转载于:http://www.opengpu.org/forum.php?mod=viewthread&tid=392
可能这篇文章有点老，但是对于]]></description><category></category></item><item><title><![CDATA[【翻译】【西川善司】GPU和Shader技术的基础知识 （一共有99回，翻译中）]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/19158919</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/19158919</guid><author>smsmn</author><pubDate>Thu, 13 Feb 2014 13:42:44 +0800</pubDate><description><![CDATA[from: http://www.opengpu.org/forum.php?mod=viewthread&tid=7376&extra=page%3D1
本连载的主要目的，是介绍最新的PC和GAME所使用的最新3D图形技术的发展趋势。

暂时的方针是，首先是考虑介绍比较新的PC Game和PS3，XBOX360等新时代游戏机的游戏所采用的技术。

那么首先，想回顾一下近年来的3D图形技]]></description><category></category></item><item><title><![CDATA[西川善司的3D图形技术概念和渲染管线的处理]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/19158673</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/19158673</guid><author>smsmn</author><pubDate>Thu, 13 Feb 2014 13:33:29 +0800</pubDate><description><![CDATA[from: http://psv.tgbus.com/news/ynzx/201305/20130528094843.shtml

 

3D图形技术概念和渲染管线的处理

一：3D图形的概念

图1是3D图形的流程模型。这个虽然是对应DirectX 10/SM4的GPU流程模型，不过部分流程会根据GPU的不同，有时会有更细致的处理，有时也会做一些简略，这点敬请谅解。

　　首]]></description><category></category></item><item><title><![CDATA[2014技术目标]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/18013829</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/18013829</guid><author>smsmn</author><pubDate>Wed, 08 Jan 2014 22:43:05 +0800</pubDate><description><![CDATA[引擎层次：
从代码级别上熟练掌握wildMagic引擎的架构、代码的组织以及引擎各方面效果的实现。（1,3,5,7）
从项目级别上熟悉ogre的使用方法；（工作时间，2, 6)
从项目级别上熟悉coco2d的使用方法；( 2, 3, 6)
渲染效果：
（半个月一个效果）
shadow mapping算法（csm, vsm, pcf等阴影算法总结）；
hdr;
dof（Depth_o]]></description><category></category></item><item><title><![CDATA[[译]CSAA (覆盖取样抗锯齿)]]></title><link>https://blog.youkuaiyun.com/smsmn/article/details/17490999</link><guid>https://blog.youkuaiyun.com/smsmn/article/details/17490999</guid><author>smsmn</author><pubDate>Sun, 22 Dec 2013 22:43:01 +0800</pubDate><description><![CDATA[转载于：http://getix.blog.163.com/blog/static/116992306200962510481030/
原文于：https://developer.nvidia.com/csaa-coverage-sampling-antialiasing


声明：本文原文由Peter Young撰写，由GeTiX翻译。本文仅供学习交流之用。
如需转载，请注明作者及出处]]></description><category></category></item></channel></rss>