- 博客(53)
- 资源 (1)
- 收藏
- 关注
原创 使用OpenGL底层实现游戏引擎中的摄像机
摄像机/观察空间当我们讨论摄像机/观察空间(Camera/View Space)的时候,是我们在讨论以摄像机的透视图作为场景原点时场景中所有可见顶点坐标。观察矩阵把所有的世界坐标变换到观察坐标,这些新坐标是相对于摄像机的位置和方向的。定义一个摄像机,我们需要一个摄像机在世界空间中的位置、观察的方向、一个指向它的右测的向量以及一个指向它上方的向量。细心的读者可能已经注意到我们实际上创建了一个三个单位轴相互垂直的、以摄像机的位置为原点的坐标系。1. 摄像机位置获取摄像机位置很简单。摄像机位置简.
2021-09-24 09:22:19
917
原创 Mipmap详解(有无Mipmap区别、原理、优点、缺点、优化)
一、先了解纹理过滤想要了解为什么要使用Mipmap,首先要知道纹理过滤是什么。当你在玩吃鸡的时候可能会发现一个现象,一个人在距离你5米的地方,可以观察到敌人的一举一动,包括身上的装备等等,但当你拿到98k时,你会蹲在远处狙击别人,这时不开镜的你看500米远处的敌人只能看到一个黑点,这其中远近看到的区别就有应用到纹理过滤。游戏中A物体的游戏设计纹理贴图是400*400Texel(纹理像素)1.当你(摄像机)跟A物体的距离为0时,在你屏幕上显示的像素就是400*400,跟贴图的纹理像素大小相同,
2021-07-17 20:33:17
66763
22
原创 LearnOpenGL(二) 自己写一个从文件流读取顶点和片段着色器并创建Shader Program的类
头文件(Shader.h)#ifndef SHADER_H#define SHADER_H#include <string>#include <fstream>#include <sstream>#include <iostream>#include <GL/glew.h>class Shader{public: // 程序ID GLuint Program; // 构造器读取并构建着色器 Shader(cons
2021-01-07 14:07:31
588
原创 LearnOpenGL(一) 渐变三角形
花一天的时间初探了OpenGL。最终的目标是完全理解OpenGL操作GPU的原理,以及shader编程的熟练运用。并最终做出一个3d物品的的视角,以及光照等的高级效果。// GLEW#define GLEW_STATIC#include <GL/glew.h>// GLFW#include <GLFW/glfw3.h> #include <iostream>#include <string>using namespace std;int
2020-12-31 09:39:05
680
1
转载 cocos2dx 资源缓存
Cocos中有三种缓存类:(1):纹理缓存:TextureCache(2):精灵帧缓存:SpriteFrameCache(3):动画缓存:AnimationCache游戏最要重要的就是流畅度,如果我们的游戏经常因为加载资源出现卡顿的情况,那么这个游戏就没有很好地游戏体验。所以,为了解决这个问题,缓存就应运而生了。缓存的目的就是:现将所需资源加载到内存中,之后再次使用该资源的时候...
2020-01-04 20:22:21
461
原创 SHA-1 到底是什么?(介绍和用法)
参考:blog.sina.com.cn/s/blog_a42c4c6c0102woq9.html安全哈希算法(Secure Hash Algorithm) SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘...
2019-12-27 19:30:19
22132
原创 lua 多重继承
在游戏开发中,写新手引导时架构了一个新手引导管理类,其中运用了lua多重继承,使用了单例模式进行开发,关于新手引导的开发可移步cocos2dx lua 专栏查看function search(classes,key) print("~~~~~~~~~~~~~~~~~") for i = 1, #classes,1 do if classes[i][key...
2019-12-23 21:40:41
291
原创 cocos2dx lua 界面入场动作的封装(可以直接拿去用)
--放大动作 有回弹function CommonFunc.scaleAction(node, startScale, time, cb) local p = 1 startScale = startScale or 0.4 time = time or 0.2 node:setScale(startScale) node:runAction(cc.Se...
2019-12-23 21:21:34
327
原创 cocos 层级渲染与管理
今天踩了一个坑,我在设置层级时,同一层Node中将一个Node;Node1有需求设置为了99999(原本为0),也就是显示为最高层,随后需求完成后设置为0,返还回去,发现效果没有变,最后发现cocos的层级管理有点东西,为避免后人采坑,作下文:cococ渲染是树状结构,同级的节点层级是和同级的相比的,就像Node1.Node2.Node3.Node4.Node5,调整Node1的节点,也只会改...
2019-11-01 09:43:03
2093
原创 板栗说算法 之 PAT 乙级 1019 数字黑洞(全方面解析)
一.题目 1019数字黑洞(20分)给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇...
2019-08-25 21:09:15
432
原创 cocos lua游戏开发详细流程
1.创建cocos2dx lua项目2.使用cocos creator开发游戏的ui界面3.导出ui界面fire文件的配置信息成json文件(node的坐标,资源文件,名称等等)4.使用lua读取json文件转成table5.读取表内信息创建cocos的node控件6.使用lua进行二次封装cocos api7.之后使用getChildViewById(自己写的)拿到场景内...
2019-07-29 09:40:37
2981
1
原创 cocos2d-x开发 之 地图拖动
先看看效果在cocos2d-x引擎中,层有以下的虚函数触摸响应函数 //触摸开始(也就是人们第一次触摸屏幕的点) virtual bool onTouchBegan(Touch * touch, Event * unused_envent); //触摸过程中(移动过程中的触摸点) virtual void onTouchMoved(Touch * tou...
2019-07-14 17:30:28
385
原创 板栗说算法 之 PAT 乙级 1016 部分A+B
一、题目正整数A的“DA(为 1 位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A=3862767,DA=6,则A的“6 部分”PA是 66,因为A中有 2 个 6。现给定A、DA、B、DB,请编写程序计算PA+PB。输入格式:输入在一行中依次给出A、DA、B、DB,中...
2019-07-02 19:52:19
130
原创 板栗说算法 之 PAT 乙级 1015 德才论(解决超时、234测试点错误、格式错误)
一、题目宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第一行给出 3 个正整数,分别为:N(≤105),即考生总数;L(≥60),为录取最低分数线,即德分和才...
2019-07-02 18:17:42
991
1
原创 板栗说算法 之 PAT 乙级 1014 福尔摩斯的约会(全方面解析)
一、题目大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母D,代表星期四;第 2 对相同的字符是E,那是第 5 个...
2019-07-02 15:49:32
293
原创 使用秦九韶算法和普通循环算法之间的效率差距究竟有多大?
我使用c/c++中的时钟点clock()函数(获取当前时间点)和clock_t变量(容纳clock返回值)和CLK_TCK常量(1秒钟有多少时钟点)进行效率计算。问题:使用秦九韶 算法思路一般地,一元n次多项式的求值需要经过(n+1)*n/2次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法。在人工计算时,一次大大简化了运算过程。把一个n次多项式改写成如下形式:...
2019-06-29 11:52:22
1706
转载 C++输出格式控制大全
有时希望按照一定的格式进行输出,如按十六进制输出整数,输出浮点数时保留小数点后面两位,输出整数时按 6 个数字的宽度输出,宽度不足时左边补 0,等等。C语言中的 printf() 函数使用以%开头的格式控制符,例如 %X、%.2f、%6d 等;C++中的 cout 对象则使用流操作算子(你也可以叫做格式控制符)或者成员函数进行控制。使用流操作算子C++ 中常用的输出流操纵算子如表 1 所...
2019-06-29 11:04:44
7586
原创 解决Xcode运行cocos2d-x项目出现unavailable function 'system': not available on iOS xcode
一、使用xcode搜索#include <dirent.h>找到CCFileUtils.cpp二、替换成以下代码即可(将鼠标移至代码块右上角会出现复制按钮)/****************************************************************************Copyright (c) 2010-2013 cocos2...
2019-06-29 10:57:16
979
原创 板栗说算法 之 PAT 乙级 1013 数素数(全方面解析)
一、题目令Pi表示第i个素数。现任给两个正整数M≤N≤104,请输出PM到PN的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM到PN的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 13 17 ...
2019-06-18 13:39:35
133
原创 板栗说算法 之 PAT 乙级 1012 数字分类(测试点问题未解决)
一、题目给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A1= 能被 5 整除的数字中所有偶数的和; A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n1−n2+n3−n4⋯; A3= 被 5 除后余 2 的数字的个数; A4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;...
2019-06-18 12:52:43
442
原创 STL中常用的算法(寻找最大值,最小值,索引,区间内查找算法等等)
STL中有很多算法,这些算法可以用到一个或多个STL容器(因为STL的一个设计思想是将算法和容器进行分离),也可以用到非容器序列比如数组中。众多算法中,查找算法是应用最为普遍的一类。使用STL的Vector时,利用函数 max_element,min_element,distance可以获取Vector中最大、最小值的值和位置索引:代码如下:#include <algorith...
2019-06-18 10:29:36
9979
原创 板栗说算法 之 PAT 乙级 1011 A+B 和 C((全方面解析))
一、题目给定区间 [−231,231] 内的 3 个整数A、B和C,请判断A+B是否大于C。输入格式:输入第 1 行给出正整数T(≤10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出Case #X: true如果A+B>C,否则输出Case ...
2019-06-17 16:16:19
167
原创 板栗说算法 之 PAT 乙级 1009 说反话(全方面解析)
一、题目给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello Wor...
2019-06-16 15:10:04
143
原创 板栗说算法 之 PAT 乙级 1008 数组元素循环右移问题(全方面解析)
一、题目一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,...
2019-06-16 14:14:05
164
原创 板栗说算法 之 PAT 乙级 1007 素数对猜想(解决超时问题)(全方面解析)
一、题目让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素...
2019-06-16 12:21:59
338
原创 板栗说算法 之 PAT 乙级 1006 换个格式输出整数(全方面解析)
一、题目让我们用字母B来表示“百”、字母S表示“十”,用12...n来表示不为零的个位数字n(<10),换个格式来输出任一个不超过 3 位的正整数。例如234应该被输出为BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数n(<1000)。输出格式:每个测试用例的输出占...
2019-06-16 00:27:55
198
原创 板栗说算法 之 PAT 乙级 1005 继续(3n+1)猜想 (全方面解析)
一、题目卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我...
2019-06-15 22:55:16
304
原创 板栗说算法 之 PAT 乙级 1004 成绩排名(全方面解析)
一、题目读入n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个...
2019-06-13 22:25:50
143
原创 板栗说算法 之 PAT 乙级 1003 我要通过!(全方面解析)
一、题目“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P、A、T这三种字符,不可以包含其它字符; 任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字...
2019-06-13 13:01:20
224
原创 板栗说算法 之 PAT 乙级 1002 写出这个数(全方面解析)
一、题目读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。输入样例:1234567890987654321123456789输...
2019-06-12 21:57:16
161
原创 板栗说算法 之 PAT 乙级 1001 害死人不偿命的(3n+1)猜想(全方面解析)
一、题目卡拉兹(Callatz)猜想:对任何一个正整数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是...
2019-06-12 13:00:24
152
原创 算法笔记 之 欧几得算法(求最大公约数)
一.最大公约数的定义 两个不全为0的非负整数m和n的最大公约数即为gcd(m,n),代表着能够被m和n整除(即余数为0)的最大正整数。二.关于欧几得算法 古希腊数学家、亚历山大港的欧几里得(公元前3世纪)所著的《几何原本》,以系统论述几何学而著称,在其中的一卷里,他简要的描述了最大公约数算法。用现代数学的术语来表示,欧几得算法(Euclid’s algorithm)采用的方法是重复...
2019-06-11 16:43:16
762
原创 算法笔记 之 埃拉托色尼筛选法(筛选质数)
一.思路 此筛选法用于计算n以下的质数1.初始化一个2~n的连续整数数列;2.从2开始循环遍历(如果为0则跳过)假设为x;3.x与后面的数y进行循环遍历取模(如果为0则跳过);4.如果取模为0就将y设置为0;(此环节设置为0也是为了2和3环节的跳过,以节省时间和空间)其中有个问题,就是要循环到几次就可以将质数筛选出来呢,我进行试验发现(x-1)x ,包括(x-1)之前被...
2019-06-11 13:14:48
1906
原创 cocos2dx开发 之 使用UserDefault信息储存
UserDefault。引擎提供的UserDefault可以简单地储存游戏中的信息,例如背景音乐音效的开关状态,用户名等等。UserDefault是一个单例对象,可以用getInstance方法来获得。如果是第一次调用UserDefault::getInstance(),则会自动生成一个UserDefault.xml文件,目录在工程目录的proj.win32\Debug.win32中,...
2019-06-10 20:50:58
838
原创 cocos2d-x开发 之 使用CheckBox、UserDefault、CocosDenshion做声音开关。
在日常游戏开发当中,每个游戏都会有游戏开关的选项。接下来我会使用CheckBox和UserDefault做声音开关。一.关于UserDefault。引擎提供的UserDefault可以简单地储存游戏中的信息,例如背景音乐音效的开关状态,用户名等等。UserDefault是一个单例对象,可以用getInstance方法来获得。如果是第一次调用UserDefault::getI...
2019-06-10 20:41:43
231
原创 cocos2dx开发 之 使用复选框CheckBox做性别选择
1.关于CheckBoxauto checkbox = CheckBox::create("check_box_normal.png", "check_box_normal_press.png", "check_box_active.png", ...
2019-06-10 20:15:33
952
原创 cocos2d-x开发 之 场景切换方式与特效
cocos2d-x中有三种常用的场景切换方式:replaceScene,pushScene,popScene当然还有一些其他的方式:runWithScene(Scene* scene)。该函数可以运行场景。只能在启动第一个场景时候调用该函数。如果已经有一个场景运行情况下则不能调用该函数。replaceScene(Scene* scene)。切换到下一个场景。用一个新的场景替...
2019-06-06 00:12:31
596
原创 cocos2d-x开发 之 声音引擎SimpleAudioEngine
SimpleAudioEngine是cocos2d-x中的声音引擎,它控制着在游戏中的声音。而且它是一个全局静态类,至始至终只会有一个且全局能访问。话不多说我们来介绍一下吧要使用SimpleAudioEngine引擎当然得手动添加头文件啦#include "simpleAudioEngine.h"using namespace CocosDenshion;因为它是一个单例模...
2019-06-04 23:54:19
982
原创 cocos2d-x开发 之 使用schedule调度器做旋转动画
效果如图代码如下(头文件):#ifndef scene_h#define scene_h#include "cocos2d.h"using namespace cocos2d;#include "ui/CocosGUI.h"using namespace ui;class scene:public Scene{public: static Scene ...
2019-06-02 20:37:18
256
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人