﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C大调如歌的行板-随笔分类-C++</title><link>http://www.cppblog.com/jedi-CY/category/11026.html</link><description>我也来发明山楂车轮</description><language>zh-cn</language><lastBuildDate>Sun, 19 Dec 2010 08:41:18 GMT</lastBuildDate><pubDate>Sun, 19 Dec 2010 08:41:18 GMT</pubDate><ttl>60</ttl><item><title>多点触摸的GUI？</title><link>http://www.cppblog.com/jedi-CY/archive/2010/12/17/136813.html</link><dc:creator>陈昱(CY)</dc:creator><author>陈昱(CY)</author><pubDate>Fri, 17 Dec 2010 15:26:00 GMT</pubDate><guid>http://www.cppblog.com/jedi-CY/archive/2010/12/17/136813.html</guid><wfw:comment>http://www.cppblog.com/jedi-CY/comments/136813.html</wfw:comment><comments>http://www.cppblog.com/jedi-CY/archive/2010/12/17/136813.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/jedi-CY/comments/commentRss/136813.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jedi-CY/services/trackbacks/136813.html</trackback:ping><description><![CDATA[<div>又好久没有更新blog了，这段时间仍然是造那个车轮，是一个用opengl es1.0 + 一些平台相关的工具函数，实现的2d游戏gui引擎，还造得破破烂烂不堪入目的那种。结果却拿去做移植一个以gui表现为主的游戏。。。。。一开始还好，只是各种消息焦点、对象Capture引发的问题，直到后来的多点触摸。。。。。</div><div><br></div><div><br></div><div><br></div><div><br></div><div>刚开始虽然没有多点触摸的需求，但也是留有一个多点触摸的接口的，就是各种TouchDown、TouchMove、TouchUp里面都有传递一个TouchID，后来确定了使用多点触摸，于是原来的地方就出现了问题：</div><div><br></div><div>1、第一个手指点下某个对象A（比如按钮），这时A就记住了被某个TouchID点下的状态，保持点下状态，同时另外一个手指点击另一个对象B按钮，B按钮响应点击弹出一个界面，这个界面就把A挡在后面了，这时第一个手指才弹起来，这时的UI控件树第一个遍历到的是上面那个界面，于是A响应不到弹起的事件了。。。。</div><div><br></div><div>2、正常的UI消息传递都是父对象先把touch消息传给各个子对象，发现没有子对象响应时，才考虑父对象自己的响应。但如今要模仿iphone的那个滚动列表，滚动列表容器里面放了很多子对象，一开始，滚动容器处于静止状态，按下和弹起时，确实子对象先响应，但按下并移动到一个阈值，滚动容器进入滚动状态，于是让子对象响应失去消息，后面的移动就都是响应滚动了，直到弹起并再次点击，才响应停止滚动，进入正常状态。这样就有一个问题：无法嵌套多个滚动对象？，另外，也出现了各种响应不正常的bug</div><div><br></div><div>3、这个问题从上面扩展开来。一个项目做了一半，又要加入多点触摸进行放大缩小的功能，再加上上面的滚动列表功能，为了保持原来的功能不变，滚动列表的代码不改，于是设计了一个多点触摸对象作为父对象，初始化时确定最大支持的触控数量值，响应触摸时，响应回调函数来处理各种功能，另外回调函数还可以决定是否把触摸消息传给子对象。这样假设初始化一个2点触摸对象，回调函数判断只有一个触摸时，传递给滚动列表子对象，有两个触摸时，让滚动列表子对象失去消息，并再不传递给它，照理来说应该不会有什么隐患，不过测试多次，也是会出现响应不正常的bug。</div><div><br></div><div>解决方案：UI控件对象保存自己被哪个Touch对象响应到 是有缺陷的，应该是实现一系列Touch对象，让Touch对象保存响应的UI对象。这样貌似整个框架要重构？</div><img src ="http://www.cppblog.com/jedi-CY/aggbug/136813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jedi-CY/" target="_blank">陈昱(CY)</a> 2010-12-17 23:26 <a href="http://www.cppblog.com/jedi-CY/archive/2010/12/17/136813.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第二次地形实践 GeoMipMap 动态地形块渲染</title><link>http://www.cppblog.com/jedi-CY/archive/2010/02/09/107615.html</link><dc:creator>陈昱(CY)</dc:creator><author>陈昱(CY)</author><pubDate>Tue, 09 Feb 2010 11:24:00 GMT</pubDate><guid>http://www.cppblog.com/jedi-CY/archive/2010/02/09/107615.html</guid><wfw:comment>http://www.cppblog.com/jedi-CY/comments/107615.html</wfw:comment><comments>http://www.cppblog.com/jedi-CY/archive/2010/02/09/107615.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jedi-CY/comments/commentRss/107615.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jedi-CY/services/trackbacks/107615.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 之前的一篇文章实现的是完全基于四叉树的动态地形渲染，虽然感觉那种方案是最优美的方案，假设CPU和GPU速度上没有差别的话，那种方案应该是最佳的了。但是现实中CPU速度还是比GPU慢不少的，因此，参考了这篇文章：http://nvidia.e-works.net.cn/document/200908/article8938_2.htm&nbsp;并按其思路实现了分块的地形LOD算法，整体思路感觉比之...&nbsp;&nbsp;<a href='http://www.cppblog.com/jedi-CY/archive/2010/02/09/107615.html'>阅读全文</a><img src ="http://www.cppblog.com/jedi-CY/aggbug/107615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jedi-CY/" target="_blank">陈昱(CY)</a> 2010-02-09 19:24 <a href="http://www.cppblog.com/jedi-CY/archive/2010/02/09/107615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>升C小调前奏曲---完成3dsmax 插件iGame XML 导出的mesh部分</title><link>http://www.cppblog.com/jedi-CY/archive/2010/01/08/105198.html</link><dc:creator>陈昱(CY)</dc:creator><author>陈昱(CY)</author><pubDate>Fri, 08 Jan 2010 12:50:00 GMT</pubDate><guid>http://www.cppblog.com/jedi-CY/archive/2010/01/08/105198.html</guid><wfw:comment>http://www.cppblog.com/jedi-CY/comments/105198.html</wfw:comment><comments>http://www.cppblog.com/jedi-CY/archive/2010/01/08/105198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jedi-CY/comments/commentRss/105198.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jedi-CY/services/trackbacks/105198.html</trackback:ping><description><![CDATA[为了方便获得带骨骼蒙皮、带关键帧动画的模型文件，为今后的自定义模型格式做准备，需要有一个3dmax模型导出的工具，由于懒得学习max script，下载了3dmax sdk也发现内容好多，技术资料也很少，感到自己写插件导出是比较费时了。不过无意间发现3ds max SDK自带有的iGame Export的工程，编译生成了一下，发现在自己的3dmax中可以使用，生成的xml也挺容易看懂，于是决定使用这个工具做为导出工具了。<br><br>下面就是这个插件，其c++源文件我修改了一点内容，修改的是对每一组顶点/面属性的值后面加了一个空格，方便对字符串用空格进行split。其c++源文件，可以在网上下载3dsmax SDK中得到。<br><a title="IGameExporter插件下载（已确认在3dmax 9中可使用用）" href="http://www.cppblog.com/Files/jedi-CY/IGameExporter.rar">IGameExporter插件下载（已确认在3dmax 9中可使用用）</a><br><br><br>目前只是完成了其中&lt;mesh&gt;标签部分的导出<br><br>在3dmax中的一个物体：<br><img height=518 alt="" src="http://www.cppblog.com/images/cppblog_com/jedi-cy/3dmax.jpg" width=614 border=0><br>导出的xml文件：<br><img height=477 alt="" src="http://www.cppblog.com/images/cppblog_com/jedi-cy/xml.jpg" width=585 border=0><br>&lt;mesh&gt;标签部分导入测试：<br><img height=631 alt="" src="http://www.cppblog.com/images/cppblog_com/jedi-cy/import.jpg" width=807 border=0><br><br>xml的其它标签还要继续研究，主要是Modifiers的顶点蒙皮权重，TMController的矩阵变换，材质标签准备忽略了....<br>
<img src ="http://www.cppblog.com/jedi-CY/aggbug/105198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jedi-CY/" target="_blank">陈昱(CY)</a> 2010-01-08 20:50 <a href="http://www.cppblog.com/jedi-CY/archive/2010/01/08/105198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现事件的封装（类似C#的 delegate）</title><link>http://www.cppblog.com/jedi-CY/archive/2009/07/25/91120.html</link><dc:creator>陈昱(CY)</dc:creator><author>陈昱(CY)</author><pubDate>Sat, 25 Jul 2009 06:40:00 GMT</pubDate><guid>http://www.cppblog.com/jedi-CY/archive/2009/07/25/91120.html</guid><wfw:comment>http://www.cppblog.com/jedi-CY/comments/91120.html</wfw:comment><comments>http://www.cppblog.com/jedi-CY/archive/2009/07/25/91120.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/jedi-CY/comments/commentRss/91120.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jedi-CY/services/trackbacks/91120.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 写这个程序前，参考过vczh的VL_Data_Event，也看过何咏的，写的目的：第一主要是想熟练c++的模板；第二是重复发明车轮，也拥有自己的事件类了~~。上大学开始接触编程，一开始便学习C++，但是教科书对模板的介绍都比较少，当时连比较基础的C++都学得一塌糊涂，更不用说模板了。现在工作任务完成，有点空闲时间看《C++templates》，看到现在终于能写点像样的C++模板了。目前事件类的封装...&nbsp;&nbsp;<a href='http://www.cppblog.com/jedi-CY/archive/2009/07/25/91120.html'>阅读全文</a><img src ="http://www.cppblog.com/jedi-CY/aggbug/91120.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jedi-CY/" target="_blank">陈昱(CY)</a> 2009-07-25 14:40 <a href="http://www.cppblog.com/jedi-CY/archive/2009/07/25/91120.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>