<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[killallpigs的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/killallpigs</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; killallpigs]]></copyright><item><title><![CDATA[byte 和char 数据类型]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/68062807</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/68062807</guid><author>killallpigs</author><pubDate>Wed, 29 Mar 2017 12:43:36 +0800</pubDate><description><![CDATA[一、C++
参考：《C++ primer plus》第六版，第三章



c++中没有byte数据类型，只有char。char数据类型分char、unsigned char 和 signed char三种。
char 本身既不是有符号的，也不是无符号的，是否有符号由C++实现决定，由开发人员将这种类型与硬件属性匹配起来。
unsigned char，取值范围[0, 255]。
si]]></description><category></category></item><item><title><![CDATA[cocos2d小型工程的代码组织结构]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/61195271</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/61195271</guid><author>killallpigs</author><pubDate>Fri, 10 Mar 2017 11:47:54 +0800</pubDate><description><![CDATA[一、小型工程通常只有一个Scene，所有的弹窗都在这一个Scene中弹出；

比如：从主菜单界面进入选关界面，点选关卡进入游戏，只是删除一个layer，加载了另一个layer，并没有多个Scene 
 replace。

代码管理上，Scene中只负责弹出各种弹窗，不负责游戏逻辑。游戏逻辑在主游戏场景的Layer中实现。




二、所有子窗口或弹窗，初始化后就不再销毁，或re]]></description><category></category></item><item><title><![CDATA[Blinn-Phong 光照]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/60962567</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/60962567</guid><author>killallpigs</author><pubDate>Thu, 09 Mar 2017 16:39:26 +0800</pubDate><description><![CDATA[LearnOpenGL




Phong光照很棒，而且性能较高，但是它的镜面反射在某些条件下会失效，特别是当发光值属性低的时候，对应一个非常大的粗糙的镜面区域。下面的图片展示了，当我们使用镜面的发光值为1.0时，一个带纹理地板的效果：





你可以看到，镜面区域边缘迅速减弱并截止。出现这个问题的原因是在视线向量和反射向量的角度不允许大于90度。如果大于90度的话，点乘的]]></description><category></category></item><item><title><![CDATA[立方体贴图]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/55095870</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/55095870</guid><author>killallpigs</author><pubDate>Tue, 14 Feb 2017 11:12:33 +0800</pubDate><description><![CDATA[Learn Opengl


立方体贴图包含6个2D纹理，这每个2D纹理是一个立方体（cube）的一个面，也就是说它是一个有贴图的立方体。



从立方体贴图上使用橘黄色向量采样一个纹理值看起来和下图有点像：



方向向量的大小无关紧要。一旦提供了方向，OpenGL就会获取方向向量触碰到立方体表面上的相应的纹理像素（texel），这样就返回了正确的纹理采样值。]]></description><category></category></item><item><title><![CDATA[帧缓冲 Framebuffer]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/55046932</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/55046932</guid><author>killallpigs</author><pubDate>Mon, 13 Feb 2017 12:34:15 +0800</pubDate><description><![CDATA[Learn Opengl




到目前为止，我们使用了几种不同类型的屏幕缓冲：用于写入颜色值的颜色缓冲，用于写入深度信息的深度缓冲，以及允许我们基于一些条件丢弃指定片段的模板缓冲。把这几种缓冲结合起来叫做帧缓冲(Framebuffer)，它被储存于内存中。OpenGL给了我们自己定义帧缓冲的自由，我们可以选择性的定义自己的颜色缓冲、深度和模板缓冲。

我们目前所做的渲染操作都是是在]]></description><category></category></item><item><title><![CDATA[面剔除 Face Culling]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/54944415</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/54944415</guid><author>killallpigs</author><pubDate>Thu, 09 Feb 2017 10:42:49 +0800</pubDate><description><![CDATA[高级opengl


尝试在头脑中想象一下有一个3D立方体，你从任何一个方向去看它，最多可以同时看到多少个面？你最终最多能数出来的面是3个。你可以从一个立方体的任意位置和方向上去看它，但是你永远不能看到多于3个面。所以我们为何还要去绘制那三个不会显示出来的3个面呢。如果我们可以以某种方式丢弃它们，我们会提高片段着色器超过50%的性能！



我们如何知道某个面在观察者的视野中不会出现]]></description><category></category></item><item><title><![CDATA[混合]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/54926227</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/54926227</guid><author>killallpigs</author><pubDate>Wed, 08 Feb 2017 14:23:49 +0800</pubDate><description><![CDATA[Learn Opengl

       在OpenGL中，物体透明技术通常被叫做混合(Blending)。一个物体的透明度，被定义为它的颜色的alpha值。alpha颜色值是一个颜色向量的第四个元素。


 
      我们之前所使用的纹理都是由3个颜色元素组成的：红、绿、蓝，但是有些纹理同样有一个内嵌的aloha通道，它为每个纹理像素(Texel)包含着一个alpha值。这个al]]></description><category></category></item><item><title><![CDATA[模板测试]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/54863064</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/54863064</guid><author>killallpigs</author><pubDate>Sat, 04 Feb 2017 15:08:19 +0800</pubDate><description><![CDATA[当片段着色器处理完片段之后，模板测试(Stencil Test) 就开始执行了，和深度测试一样，它能丢弃一些片段。仍然保留下来的片段进入深度测试阶段，深度测试可能丢弃更多。模板测试基于模板缓冲(Stencil Buffer)。

模板缓冲中的模板值(Stencil Value)通常是8位的，因此每个片段/像素共有256种不同的模板值（译注：8位就是1字节大小，因此和char的容量一样是256个]]></description><category></category></item><item><title><![CDATA[几种光源]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/54314756</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/54314756</guid><author>killallpigs</author><pubDate>Wed, 11 Jan 2017 11:51:38 +0800</pubDate><description><![CDATA[Learn Opengl学习笔记


定向光(Directional Light)





当一个光源很远的时候，来自光源的每条光线接近于平行。这看起来就像所有的光线来自于同一个方向，无论物体和观察者在哪儿。当一个光源被设置为无限远时，它被称为定向光(Directional Light)，因为所有的光线都有着同一个方向；它会独立于光源的位置。

我们知道的定向光源的一个好例]]></description><category></category></item><item><title><![CDATA[光照贴图]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/54313468</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/54313468</guid><author>killallpigs</author><pubDate>Tue, 10 Jan 2017 14:33:45 +0800</pubDate><description><![CDATA[漫反射贴图(Diffuse texture)
我们希望通过某种方式对每个原始像素独立设置diffuse颜色。它基本就是一个纹理：使用一张图片覆盖住物体，以便我们为每个原始像素索引独立颜色值。在光照场景中，通过纹理来呈现一个物体的diffuse颜色，这个做法被称做漫反射贴图(Diffuse
 texture)。



贴图：





在片段着色器中，我们创建一个结构体(St]]></description><category></category></item><item><title><![CDATA[光照基础]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/54134954</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/54134954</guid><author>killallpigs</author><pubDate>Mon, 09 Jan 2017 12:03:39 +0800</pubDate><description><![CDATA[Learn Opengl


颜色


我们在现实生活中看到某一物体的颜色并不是这个物体的真实颜色，而是它所反射(Reflected)的颜色。换句话说，那些不能被物体吸收(Absorb)的颜色(被反射的颜色)就是我们能够感知到的物体的颜色。例如,太阳光被认为是由许多不同的颜色组合成的白色光(如下图所示)。如果我们将白光照在一个蓝色的玩具上，这个蓝色的玩具会吸收白光中除了蓝色以外的所有颜]]></description><category></category></item><item><title><![CDATA[摄像机]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/54089759</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/54089759</guid><author>killallpigs</author><pubDate>Thu, 05 Jan 2017 12:56:06 +0800</pubDate><description><![CDATA[learn opengl



本节讨论如何在OpenGL中配置一个FPS风格的摄像机，让你能够在3D场景中自由移动。
摄像机/观察空间(Camera/View
 Space)
摄像机/观察空间(Camera/View
 Space)是指以摄像机的视角作为场景原点时场景中的所有顶点坐标：观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机，我们需要它在世]]></description><category></category></item><item><title><![CDATA[Opengl 坐标]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/53941138</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/53941138</guid><author>killallpigs</author><pubDate>Fri, 30 Dec 2016 13:57:18 +0800</pubDate><description><![CDATA[继续 Learn Opengl


在流水线(Pipe line)中，物体的顶点在最终转化为屏幕坐标之前还会被变换到多个坐标系统。下图展示了整个流程:



局部空间
局部空间是指物体所在的坐标空间，即对象最开始所在的地方。想象你在一个建模软件中创建了一个立方体。你创建的立方体的原点有可能位于(0, 0, 0)，即便它有可能最后在程序中处于完全不同的位置。你的模型的所有顶点都是在局]]></description><category></category></item><item><title><![CDATA[矩阵、向量的变换]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/53924597</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/53924597</guid><author>killallpigs</author><pubDate>Thu, 29 Dec 2016 10:59:57 +0800</pubDate><description><![CDATA[继续  Learn Opengl


向量相乘

点乘


两个向量的点乘等于它们的数乘结果乘以两个向量之间夹角的余弦值。公式：



v¯⋅k¯=||v¯||⋅||k¯||⋅cosθ




如果v¯和k¯都是单位向量，它们的长度会等于1。这样公式会有效简化成：



v¯⋅k¯=1⋅1⋅cosθ=cosθ



我们使用点乘（dot produ]]></description><category></category></item><item><title><![CDATA[纹理]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/53764472</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/53764472</guid><author>killallpigs</author><pubDate>Tue, 20 Dec 2016 16:42:26 +0800</pubDate><description><![CDATA[继续 LearnOpenGL


纹理(Texture)。纹理是一个2D图片（甚至也有1D和3D的纹理），它可以用来添加物体的细节；你可以想象纹理是一张绘有砖块的纸，无缝折叠贴合到你的3D的房子上，这样你的房子看起来就像有砖墙外表了。因为我们可以在一张图片上插入非常多的细节，这样就可以让物体非常精细而不用指定额外的顶点。

纹理坐标


为了能够把纹理映射(Map)到三角形上，我们]]></description><category></category></item><item><title><![CDATA[shader 输入输出]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/53741068</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/53741068</guid><author>killallpigs</author><pubDate>Mon, 19 Dec 2016 16:08:33 +0800</pubDate><description><![CDATA[opengl es的shader 有3种类型修饰：uniform，attribute，varying，区别见：http://blog.youkuaiyun.com/renai2008/article/details/7844495



向量


GLSL中的向量是一个可以包含有1、2、3或者4个分量的容器，分量的类型可以是前面默认基础类型的任意一个。它们可以是下面的形式（n代表分量的数量）：]]></description><category></category></item><item><title><![CDATA[opengl 画三角形]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/53694898</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/53694898</guid><author>killallpigs</author><pubDate>Fri, 16 Dec 2016 17:32:09 +0800</pubDate><description><![CDATA[LearnOpenGL 学习笔记
使用环境：mac10.12, xocde, cocos2d-x 3.13


顶点输入
要渲染一个三角形，需指定三个顶点，每个顶点都有一个3D位置。我们会将它们以标准化设备坐标的形式（OpenGL的可见区域）定义为一个GLfloat数组。

GLfloat vertices[] = {
    -0.5f, -0.5f, 0.0f,
     0.5]]></description><category></category></item><item><title><![CDATA[opengl 简介]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/53669096</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/53669096</guid><author>killallpigs</author><pubDate>Thu, 15 Dec 2016 13:42:58 +0800</pubDate><description><![CDATA[转自：LearnOpenGL
opengl 学习笔记
OpenGL到底是什么？
OpenGL本身并不是一个API，它仅仅是一个由Khronos组织制定并维护的规范(Specification)。OpenGL库的开发者通常是显卡的生产商，故当
产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL。



状态机
OpenGL自身是一个]]></description><category></category></item><item><title><![CDATA[(二) shader 简介]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/53485588</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/53485588</guid><author>killallpigs</author><pubDate>Tue, 06 Dec 2016 12:41:36 +0800</pubDate><description><![CDATA[shader language
被定位为高级语言，如，GLSL
的全称是“High Level ShadingLanguage”，Cg
语言的全称为“C for Graphic”， 不过高级语言的一个重要特性是“独立于硬件”，在这一方面
shader language
暂时还做不到，shader language
完全依赖于 GPU
构架 。Shader language
目前主要]]></description><category></category></item><item><title><![CDATA[（一）GPU图形绘制管线]]></title><link>https://blog.youkuaiyun.com/killallpigs/article/details/53484622</link><guid>https://blog.youkuaiyun.com/killallpigs/article/details/53484622</guid><author>killallpigs</author><pubDate>Tue, 06 Dec 2016 12:07:57 +0800</pubDate><description><![CDATA[《GPU
编程与 CG
语言之阳春白雪下里巴人 》读书笔记


图形绘制管线描述
GPU 
渲染流程，即“给定视点、三维物体、光源、照明模式，和纹理等元素，如何绘制一幅二维图像”。 




图形绘制管线分为三个主要阶段: 






（一）应用程序阶段，使用高级编程语言(C、C++、JAVA
等)进行开发，主要和CPU、内存打交道，诸如碰撞检测、场景图建]]></description><category></category></item></channel></rss>