位置: 编程技术 - 正文
推荐整理分享cocos2d::DrawPrimitives和DrawNode分别实现画板功能,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
才开始了解cocos2dx几天,只是觉得学习还是得边用边学,所以才想实现点什么,下面提到的有什么问题请指出,谢谢
我想实现简单的画板功能,就看了官方cpp_test的Node:Draw测试代码,遗憾的是我先看到的是DrawPrimitives,所以就研究了一下,简单的实现了我的功能,当我写的差不多的时候才发现DrawPrimitives应该尽量不再使用,而使用DrawNode来实现。
代码都写的差不多了,而且测试效果感觉还特别好,还是在这里留存一下吧:
之后代码统一换成DrawNode实现,代码竟然精简了如此之多,基本没有什么逻辑:
这里作一下对比,这里需要提到两个指标,GL Verts 和 GL Calls,概念的含义也是我朋友给我说的,前者是绘图的顶点数量,后者是opengl的调用次数,朋友还特意给我说了这两个都是越小越好。
当我使用DrawPrimitives实现画板的时候,我每画一个点,GL Verts 加1,GL Calls 加1,我每画一条线,GL Verts 加2(两个顶点),GL Calls 加1。
当我使用DrawNode实现的时候,我每画一个点,GL Verts 加1,我每画一条线,GL Verts 这个是一直累加的(每次累加),GL Calls 始终为1。
可能这里也就从一定层面上说明DrawNode早晚会取代DrawPrimitives的原因,DrawPrimitives迟早会被淘汰。
但是这里也有一个疑问是,当使用DrawNode的为什么GL Verts累加的时候每次累加呢,按我上面给出的参数我怎么想都想不到啊?
这里也再多说明一个问题,当使用DrawPrimitives的时候,我是在draw实现绘画功能的,但是draw函数我后来发现是被循环调用的,应该是和刷新频率有关,就像MFC程序一样界面每隔一段时间刷新一次,当然这个时间很短,也也就导致了我看到的GL Verts 和 GL Calls 的永远在我的计算当中,因为每次刷新这两个都应该会重新计算的吧。若是按照刷新次数去计算这两个,只会更大吧。
cocos2dx3.4 Label 创建一个空的Label,具体属性以后再设置staticLabel*create();使用系统API创建一个Label,参数包括一个初始字符串,字体(字体名称或字体文件),字体大小,在分维
[置顶] cocos2d-x 3.5版 关于Console模块 cocos2d-x引擎发展的日益完善,更新了很多小工具。这个Console模块是一个控制台调试工具,可以实现远程调试,用用还是蛮有意思的。看AppDelegate.cpp里面
CCEditBox实现原理 今天使用了EditBox,记录下几点重要的,可以说是CCEditBox实现原理1.CCEditBox继承CCControlButton,CCIMEDelegate2.CCEditBox实现了touchDownAction方法,并在CCEditBox::initWi
标签: cocos2d::DrawPrimitives和DrawNode分别实现画板功能
本文链接地址:https://www.jiuchutong.com/biancheng/368833.html 转载请保留说明!上一篇:cocos2dx切换场景如何释放内存(cocos2dx怎么用)
可以从图片上看到,执行查询后,得到二个表格,上面的表格显示了查询的结果,下面的表格显示了查询的执行过程。相比本文的第一张图片,这张图片可能在直观上不太友好,但是,它能反映更多的信息,而且尤其在比较复杂的查询时,可能看起来更容易,因为对于复杂的查询,【执行计划】的步骤太多,图形方式会造成图形过大,不容易观察。而且这张执行过程表格能反映2个很有价值的数据(前二列)。
还是来看看这个【执行过程表格】吧。我来挑几个重要的说一下。【Rows】:表示在一个执行步骤中,所产生的记录条数。(真实数据,非预期)【Executes】:表示某个执行步骤被执行的次数。(真实数据,非预期)【Stmt Text】:表示要执行的步骤的描述。【EstimateRows】:表示要预期返回多少行数据。
在这个【执行过程表格】中,对于优化查询来说,我认为前三列是比较重要的。对于前二列,我上面也解释了,意思也很清楚。前二列的数字也大致反映了那些步骤所花的成本,对于比较慢的查询中,应该留意它们。【Stmt Text】会告诉你每个步骤做了什么事情。对于这种表格,它所要表达的其实是一种树型信息(一行就表示在图形方式下的一个节点),所以,我建议从最内层开始去读它们。做为示例,我来解释一下这张表格它所表达的执行过程。
第5行:【Clustered Index Seek(OBJECT:([MyNorthwind].[dbo].[Customers].[PK_Customers]), SEEK:([MyNorthwind].[dbo].[Customers].[CustomerID]=[MyNorthwind].[dbo].[Orders].[CustomerID]) ORDERED FORWARD)】,意思是说,SQL Server在对表Customers做Seek操作,而且是按照【Clustered Index Seek】的方式,对应的索引是【PK_Customers】,seek的值来源于[Orders].[CustomerID]
第4行:【Clustered Index Scan(OBJECT:([MyNorthwind].[dbo].[Orders].[PK_Orders]), WHERE:([MyNorthwind].[dbo].[Orders].[OrderDate]>='-- ::." class="img-responsive" alt="教你如何看懂SQL Server查询计划(教你如何看懂标签)">
友情链接: 武汉网站建设