定点数开根号的性能问题
开根号有两种比较常见的方式:牛顿迭代法和二分法。
二分法
public static double SqrtBinary(double value)
{
/**二分法实现开方
需要注意的是:
1.初始上界是A+0.25,而不是A
2.double型的精度DBL_EPSILON,不能随意指定
*/
double a = 0.0, b = value + 0.25, m; // b = A 是错误的上届
// while(b - a > 2*DBL_EPSILON){ //sometimes dead cycle when m == a or m == b.
for (;;)
{
m =...
Unity的GetComponent非空问题
基本的原因
Unity对部分内置的Component(如rigidbody、animator等),在GetComponent时,如果组件不存在,Unity不会返回null,而是返回一个会判断为null的object(类似一个gameObject被Destroy后,会判断为null一样,可以参考这篇文章:Custom == operator, should we keep it?。这是因为Unity重载了UnityEngine.Object的==运算符。
// 假设gameObject没有Rigidbody组件
var com = gameObject.GetComponent<Rigidbody>();
if (com == null) {
// ok,因为Un...
Lua中的代码效率注意事项
在项目开发的实际过程中,可能由于各种原因而导致lua代码在执行效率上出现了瓶颈。那么就必须要在代码书写上就要注意代码的实际执行效率了!
luajit的效率
luajit 在不同平台下的表现
传送门
luajit 的jit 模式
JIT模式在iOS以及其他有权限管制的平台(例如PS4,XBox)都不能使用。
luajit 的interpreter模式
interpreter模式就和原生的lua没啥区别了。
luajit 的编译方式(trace compiler)
trace compiler的不稳定性,还有jit在平台上编译转换的时候,很多时候都是失败的
luajit高效代码注意事项
官方优化指导link
以下是个人译文(错误指出(Conerlius))
This i...
本站的github pages搭建
前提说明
此搭建方式是基于github pages来搭建的,而github pages就是搭建了jekyll,所以这里仅仅只是简单的搭建,如果有大佬要自己写样式,请忽略本文!
Blog模板
在知乎上有不少这样的问答,本文用的就是林安亚的博客
搭建
模板上行
本文没有使用git的fork,因为我是从黄玄大佬的blog样式换成这个样式的。这里就简单说说github pages的创建;
github pages创建
打开github,然后创建一个名为XXX.github.io的仓
https://github.com/XXX?tab=repositories这里的XXX要和XXX.github.io一样,否则你所创建的pages生成的link就会带有其他的前缀了!
...
opengl基础学习(3)
目前的工程放置在github上Link
继上章
在上一个章节里,我们定义了监听主动关闭窗口的while循环,现在我们需要在每次循环里绘制一个简单的三角形
while (!glfwWindowShouldClose(window))
{
// m_curSession = new OpenGL_Session1();
m_curSession->drawView();
glfwPollEvents();
glfwSwapBuffers(window);
}
通过一个对象OpenGL_Session1来绘制这个三角形,同时也是为了以后方便进行其他的内容;
首先创建一个OpenGL_Session1的C++对象,添加器公开方法drawView,我们在while...
git代码版本管理
git代码版本管理
git的各种分支定义
划分主干分支(master)
开发分支(dev)
开发的feature/xxx分支
release分支
Hotfix
Tag
主干分支master
经过测试QA验收的内容版本,其中囊括所有的地区版本,渠道版本的内容;
也可以不使用该分支,具体可以按项目怎么定义master的含义;
开发分支develop
该分支要是经过一定测试的内容,其中囊括所有的地区版本,渠道版本的内容;
因为功能具有耦合性,所以此分支还是有可能产生bug,没有master稳定
如果需要修复该分支上的bug,可以根据具体项目定义,另起Hotfix或Bug分支都行,建议Bug分支
开发的feature
具体单一一个功能一...
opengl基础学习(2)
目前的工程放置在github上Link
启动项目
空的项目里,我们需要在main.cpp加上自己的逻辑
// 创建一个程序实例
ApplicationStart* application = new ApplicationStart();
int result = application->Start();
return result;
在这里,ApplicationStart是我们以后要使用的所有的Opengl课程的的启动文件;
在前面一节文章里,我们已经知道,为了能更好地使用opengl,我们接入了GLFW
那么我们修改一下ApplicationStart::Start的方法
// 启动
int ApplicationStart::Start()
{
initGLF...
159 post articles, 20 pages.