自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 资源 (5)
  • 论坛 (1)
  • 收藏
  • 关注

原创 opencv + vs通用配置方法

最近的作业用到了opencv,但是给的虚拟机我用不了,只能自己配置。因为以前配置过opengl的库,经历了各种艰难险阻,现在我已经可以自动屏蔽掉网上那些垃圾配置方案,这里并不会说具体版本的配置,但如果这样配置无论什么版本一定能用,并且不会像其他博客说的那样还要一步步配置项目属性恶心自己。这里我用的是vs2010,所以只能用vc10的,所以我下载的是OpenCV2.4.10。开始进行配置:(以我这个版本为例,其他类似)1.安装opencv;2.添加环境变量:opencv安装路径下\opencv\bu

2020-11-01 17:56:17 61

原创 unity中3D数学相关类、属性、方法、用途总结+超级综合的案例

主要涉及到的类:Vector3,Mathf,Quaternion,Transform1.三角函数其实关于三角函数的使用并不会很常见,因为unity已经给我们提供了很多方便计算向量夹角、角度范围的方法,可以直接调用,除非我们想自己去封装一些特殊的需求,否则用unity提供给我们的方法就很简便了。但是只有理解了原理才能够明白何时怎么用,所以还是要看看其中的数学原理。(1).角度的度量方式角度:弧长等于圆周长1/360时对应的角度为1°;弧度:弧长等于半径时为1弧度,比如π就是半圈,周长为2πr;角

2020-09-06 14:46:15 51

原创 unity检测周围物体的方法总结

说明检测的方法会有很多,关键在于分析出什么时候用什么方法最合适(效果好,性能高)1.碰撞检测(1)碰撞检测的条件:二者均有碰撞组件,运动的物体具有刚体组件,且其中至少一个碰撞器附加非动力学刚体。(2)碰撞检测的方法:在这些方法中做想做的事即可,这些方法会在unity脚本生命周期中自动调用,不用我们操心。当前collider/rigidbody开始碰到另一个rigidbody/collider时OnCollisionEnter被调用。void OnCollisionEnter(Collis

2020-09-05 12:28:24 321

原创 unity中游戏对象的运动控制方法总结

1.使用unity中的Standard Assets包中的控制器这个资源在资源商店中搜Standard Assets就可以下载并导入,在其Characters文件夹中有第一人称和第三人称的控制器,在unity资源面板中找到其预制件拖入层次视图即可。涉及到的人物控制的内容很全并且也有源代码,如果想自己写玩家控制器这是一个很好的参照,我个人用起来还是自己写的控制器效果比较好。2.利用unity提供给我们的方法自己做一个:(1)首先来总结一下unity给我们提供常用的移动、旋转方法:Transfor

2020-09-04 14:36:24 106

原创 unity中计时功能的实现方法总结

计时功能在游戏中是最常见不过的了,比如联盟中技能冷却倒计时,枪战类游戏中手枪不能连发,炸弹爆炸的倒计时,我们需要根据不同的需要去编写不同情况下的计时代码。1.用Time类中的属性法1:Time.time描述:该帧开始的时间(只读)。此为自游戏启动以来的时间(以秒为单位)。 该值更倾向于提供游戏已经运行的时间,而不是每帧的时间。注意:在所有 Awake 函数都完成之后,Time.time 便会立即启动。在 Awake 函数期间,将取消定义 time 值。eg:每隔一秒做某件事。private

2020-09-04 13:11:31 126

原创 unity中查找游戏对象的方法总结

1.通过对象名称(1).transform.Find (string name)通过名字查找子对象并返回它,找不到返回null注意如果参数中只有对象名称那么仅能查找所有儿子中的对象看是否有相同名称的,而不能查找再后面的后代。但是如果参数中包含 ‘/’ 字符,将像路径一样穿越层次去查找相应名称的物体。 eg: Transform aFinger = transform.Find("LeftShoulder/Arm/Hand/Finger");然而很多情况下我们不知道对象层级(比如模型过于复杂或者想

2020-09-04 12:20:06 79

原创 游戏中常用的设计模式总结

Design Pattern Summary一、概述1.什么是设计模式?每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动(是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结)。2.什么时候使用设计模式?面对很多数据类型如何组织规划这些数据类型——设计模式:面对很多数据类型 组织规划二、创建型——关注对象创建的问题1.SINGLETON(单件,单例) 关键词:唯一(1)问题:如何保证一个类只创建

2020-08-25 13:43:53 114

原创 unity的一些特殊文件夹的使用说明

Resources文件夹可以创建在任何Assets的文件夹下并且可以不止一个,用Resources.Load加载资源时可以动态加载的是所有Resources文件夹下的内容。StreamingAssets文件夹配置文件常放在此文件夹下,在生成项目时这个文件夹不会被压缩,可通过 //构造配置文件的完整路径 string ConfigFile = Path.Combine(Application.streamingAssetsPath, 配置文件名); //安卓平台必须有file://才能读到,www

2020-08-24 15:43:26 34

原创 unity动态排行榜的实现

在做2048游戏的时候要实现排行榜的功能:1.超出显示范围可以通过滑动滚动条来上下查看2.动态插入行3.每次插入自动更新排名信息其实和滑页效果类似,只不过需要再加入排序的元素。1.超出显示范围可以通过滑动滚动条来上下查看滑页效果(也就是超出显示范围如何显示)见Unity实现滑动更换界面的效果排行榜的rank、Viewport、content同滑页中的组件配置。排行榜是由排名、名字、分数组成的。滚动条的滑动是每一行每一行形式的,所以给容器Content加水平布局组件和容器大小的自适应。

2020-08-11 12:44:43 127

原创 RuntimePlatform.WindowsWebPlayer、RuntimePlatform.OSXWebPlayer已过时

过时代码:static public bool fileAccess { get { return Application.platform != RuntimePlatform.WindowsWebPlayer && Application.platform != RuntimePlatform.OSXWebPlayer; } }bool isMac = ( rp == RuntimePlatform.OSXEditor || rp == R

2020-08-07 09:36:04 66

原创 unity根据名称递归查找子物体

按名称查找物体,尤其是GameObject.Find("名称"),是一件极其耗性能的做法,但是很多时候查找的物体父子关系太复杂,用标签可能还要为很多物体手动添加的情况下,可以用Transform.Find("子物体名称"),但它只能寻找第一层子物体,所以我们可以递归查找:private Transform FindChildInTransform(Transform parent,string child){ Transform childTF = parent.Find(child); if(ch

2020-08-05 00:29:59 145

原创 UGUI的Button组件如何用脚本获取按钮名称来处理大量按钮的响应事件

有时候UI界面中会涉及大量按钮,一个一个的添加onClick事件太麻烦了,我们可以利用代码为Button组件添加事件,此外当涉及大量按钮时,我们完全可以通过按钮名称来获取按下按钮是要响应什么事件,我这里做的是一个游戏中换装的界面,因为装备、武器、动画、皮肤很多,所以我把按钮组织成这样:把所有的按钮放在一个空物体下,直接用Transform.getchild(i);获取对应按钮即可。按钮的名称也对应着相应事件:Monster是角色种类,Costume是服饰,Action是动画,Weapon是武器,_后面就

2020-08-04 21:42:10 52

原创 Unity实现滑动更换界面的效果:根据滑动的幅度决定翻不翻页以及翻多少页

在做2048这个游戏时,因为菜单页面还能查看游戏规则,而这些规则又不在同一个页上,所以需要滑动页面实现页面切换,但是仅仅使用unity提供的组件做出的效果仅有一个切换的意思,交互感很差,所以在组件的基础上又写了一个控制页面切换的类。而界面切换就是实现一个滚动的视图。在unity编辑器中实现滚动视图的基本操作:需要用Scroll Rect组件首先可以看看官方用户手册中关于Scroll Rect组件的讲解,说的很明白。最精辟的描述就是用于使子 RectTransform 滚动的组件。滚动视图中的重要元素包

2020-08-01 17:20:20 166

原创 刷PAT甲级的各题思路、细节以及遇到的问题记录

1006 Sign In and Sign Out (25分)像类似于题目中时间HH:MM:SS这种特殊格式,完全可以用scanf("d%:%d:%d:".....)的格式以整型数据输入时间,而不是用字符串输入再去麻烦的转换。此外,比较时间也不必时分秒逐个比,直接统一成秒比较即可。...

2020-07-31 16:25:22 2087 1

原创 1047 Student List for Course (25分)最后一个测试点超时的问题

第一提交最后一个测试点超时了,然后去百度上搜,搜来搜去说string会超时,所以用char,scanf和printf比cin和cout高效,但是经过尝试把输出名字时的cin改成printf就足以通过了。printf("%s\n",Class[i][j].c_str());#include <iostream>#include <algorithm>#include <vector>#include <string>#define MAXN 40000

2020-07-06 10:13:23 72

原创 学习unity后再用OpenGL去做坦克大战

因为在学完GitHub上的learnOpenGL之后一直没有再写过比较综合性的程序,正好前一阵用unity实现了一个比较完整的坦克大战,现在再用OpenGL从底层开始做一个。做之前觉得So easy,做的过程才知道引擎真香还有之前学的渲染都忘光了。有关游戏的总结:1.我希望的游戏功能:开始页面:选择关卡、开始游戏、读取以前存档、退出暂停页面:重新开始本关卡、存档、退出游戏中:移动、射击、催回和被摧毁、分数,还有一些被摧毁后产生的道具(细节很多,后面一一记录)2.遇到的一些细节的问题:(1)

2020-07-05 21:51:18 104 4

原创 运行时出现abort() has been called(1001 A+B Format (20分))

问题说明:程序可以成功生成但是在运行时出现abort() has been called,在百度上查了查,可以说原因是没有在使用容器前判断是否会越界。不同情况可能有不同的解决方法(只是细节的不同)我是在做pat甲级的题的时候遇上的这个问题,这是1001 A+B Format (20分),题库中的第一道题,看着简单,但是果然不一般,连最简单的题也要在细节处考察你。题目:Calculate a+b and output the sum in standard format – that is, the

2020-06-23 09:19:22 146

原创 error C2471: 无法更新程序数据库

有时候重新打开mfc的项目时会遇上无法更新数据库的情况,写的具体错误是无法打开debug中的pdb文件,看了百度上的方法,重新生成解决方案或者删除debug文件夹重新编译,重新生成解决方案后可以看到debug文件夹中的所有文件都消失了,所以看来都可以。...

2020-06-15 19:40:16 66

原创 mfc不可识别的数据库格式mdb,怎么解决

在mfc的项目中,我用vs2010连接Access2016会出现不可识别的数据库格式mdb,我在Access的文件中把2016的另存为了2000的版本,不仅不需要授权(因为一开始也没设置密码),而且也不会出现不可识别的数据库格式mdb。...

2020-06-12 14:48:02 318

原创 GUIText is obsolete The tyoe or namespace name。。。does not exist

这应该是新版本unity使用Standard Assets的一个bug,原来SimpleActivatorMenu.cs的GUITexture应该修改为UnityEngine.UI.Text,ForcedReset.cs的GUITexture应该修改为UnityEngine.UI.Image,此外还有可能出现The tyoe or namespace name “…” does not exist in the namespace “UnityStandardAssets”,可以先保存当前的场景和脚本,再

2020-06-10 20:12:21 262

原创 任意多边形的三角剖分可视化实现(先划分成单调多边形,再在单调多边形中做三角剖分)

多边形三角剖分是计算几何( Computational Geometry)中的经典问题,起源于一个有趣的艺术画廊问题。目前有很多不同的算法实现了对多边形的三角剖分,三角化算法所追求的目标主要有两个:形状匀称和计算速度快,这也决定了多边形三角剖分的两个不同的应用方向。在形状匀称方面,人们对三角化的性质、 形状最优准则及算法进行了深入研究 ,采用较多的是 Delaunay 准则。这些算法在保证形状匀称的前提下,也尽可能考虑了提高计算速度。在有限元分析等许多应用场合三角形匀称是必须的,对单元质量是有一定要求的。但

2020-06-09 14:39:22 477

原创 对平衡二叉搜索树Balance Binary Search Tree所有功能的实现的头文件

最近在学计算几何,经常要用到BBST去储存一些数据,正是因为BBST查找效率极高O(logn)并且占用的空间仍是线性的,而其构造的时间需要O(nlogn),是可以接受的。所以在这里总结了BBST插入、删除、查找的功能到一个头文件中:具体实现的原理可见https://blog.csdn.net/derbi123123/article/details/104204220头文件:#include <math.h>#include <iostream>using namespace

2020-06-08 21:46:06 58

原创 error C2951: 模板 声明只能在全局、命名空间或类范围内使用 error C2598: 链接规范必须在全局范围内

检查代码中哪里多打或少打了括号,尤其是if else语句

2020-06-08 20:16:27 321

原创 error: C1189: #error: OpenGL header already included, remove this include, glad already provides it

在使用OpenGL时,用到glad头文件时可能会遇到这种错误:error: C1189: #error: OpenGL header already included, remove this include, glad already provides it.原因是#include <glad/glad.h>位置不当。#include <glad/glad.h>必须放在所有头文件之前,不管在哪里,不管在.h还是.cpp;...

2020-06-05 21:30:50 767 1

原创 计算几何——n条线段求交Bentley-Ottmann算法可视化实现

算法原理:我们对所有左右端点进行X坐标的排序,放入priority queue(优先队列)结构的事件队列中,每个端点的结构体:每个

2020-06-04 14:18:17 323

原创 计算几何——求简单多边形的重心可视化实现

这里首先给出一个公式:平面多边形 X 可以被剖分为 n个有限的简单图形 X1,X2,…Xn,这些简单图形的重心为 Ci,面积为 Ai,那么这个平面多边形的重心点坐标为 (Cx,Cy):一般来说我们可以给多边形进行三角剖分,而n个三角形的面积Ai之和即为多边形的总面积,那么这个公式可以理解为:多边形重心横坐标 = 多边形剖分的每一个三角形重心的横坐标 * 该三角形的面积之和 / 多边形总面积多边形重心纵坐标 = 多边形剖分的每一个三角形重心的纵坐标 * 该三角形的面积之和 / 多边形总面积对于一个

2020-05-28 21:56:41 204

原创 计算几何——凸包问题(上下凸包法)原理及可视化实现

引言:利用归并排序实现凸包算法merge sort:看了这个图一定能回忆起归并排序分而治之的思想,我们为什么不把点集也进行均匀划分去求每一个小的凸包,进而去逐步合成大的凸包呢?说起来容易做起来不要忽略难点和细节:如何由两个子凸包合成一个凸包呢?这里我们主要实现这个步骤。原理(1)既然要把点集进行均匀划分去求每一个小的凸包,进而去逐步合成大的凸包,所以我们有必要去进行一个排序,这里我们采取的是x轴正方向排序:bool cmp(Point a, Point b){ if (a.x == b

2020-05-27 20:53:18 212

原创 计算几何——关于凸包的graham算法的实现并将其可视化,以及一个问题希望大神能解答

graham算法是先要对顶点进行预处理:首先通过找到起始点LTL,然后其他点按照与起始点间极角的大小排序。然后我们利用两个堆栈来对点集中的点进行操作,先是初始化:之后我们会对T逐个元素的扫描看其是否为极点,每次扫描后都会让问题的规模线性减少,也就是必然有一个堆栈中的一个元素被剔除(判断为非极点),最终栈S中剩下的元素就是逆时针排放好的极点集合。代码实现:#include <iostream>#include <vector>#include <map>

2020-05-27 10:54:54 208

原创 计算几何——线段和平面的交点的实现

原理:我们用向量sv0点乘法向量N,向量se点乘法向量N,二者相除再乘以向量se,我们就可以得到sv0在法向量上的投影比上se在法向量上的投影,根据相似三角形再乘以向量se即可得到s与线段和平面交点的向量,再加上s坐标即为交点坐标。#include <iostream>#include <math.h>using namespace std;struct Point{ double x; // x坐标 double y; // y坐标

2020-05-26 17:39:59 420

原创 计算几何——点到线的投影点的实现

原理:先用L的单位向量和w点乘得到投影长度|bP0|,L的单位向量乘以投影长度|bP0|即为向量P0b=b-P0,再加上向量P0即为投影点b。#include <iostream>#include <math.h>using namespace std;struct Point{ double x; // x坐标 double y; // y坐标 double z; // z坐标(默认为0,如果需要三维点则给z赋值)

2020-05-26 17:00:06 594

原创 计算几何——点到线的距离的实现

原理:利用向量点乘求出P到L上的投影长度PP0,再利用勾股定理求d的程度即可。#include <iostream>#include <math.h>using namespace std;struct Point{ double x; // x坐标 double y; // y坐标 double z; // z坐标(默认为0,如果需要三维点则给z赋值) Point(double a = 0, double b =

2020-05-26 16:47:25 293

原创 使用IrrKlang音频库在OpenGL的工程中实现音乐的播放

最近学完learnOpenGL后在做一些小游戏,但OpenGL的API本身并未提供音乐的接口函数,所以我们采用一个外部的IrrKlang音频库。下载地址:选择一个最新的版本下载即可。简介:IrrKlang是一个可以播放WAV,MP3,OGG和FLAC文件的高级二维和三维(Windows,Mac OS X,Linux)声音引擎和音频库。它还有一些可以自由调整的音频效果,如混响、延迟和失真。3D音频意味着音频源可以有一个3D位置,然后根据相机到音频源的位置衰减音量,使其在一个3D世界里显得自然(想想3D

2020-05-26 11:10:05 204

转载 计算几何中基础几何问题的总结和实现(c/c++)

最近在学计算几何,在博客园里看到一篇对于计算几何中比较常见的基础的数据结构和问题的实现代码的集合,但是并没有目录,转载到博客中为各节标题加上目录并加上我个人的一些补充方便日后使用。原文地址https://www.cnblogs.com/zutterhao/p/11694367.html会涉及到一些基本的向量、线性代数、图形学中的知识,都是比较基础的,随着学习还会进行不断的补充。1.包含的头文件#include <iostream>#include <vector>#inc

2020-05-24 22:18:11 183

原创 通过消砖块的游戏对OpenGL(glfw)、图形学、游戏编程的一个小的总结

对GitHub上的learnOpenGL教程的学习已经接近尾声了,可以说这个教程完美的衔接了平时教学中一直用的旧OpenGL渲染的方式和现在流行的OpenGL,这个消砖块游戏也是教程最后的一个实战,内容很简洁但是包含了OpenGL几乎所有最基础的内容,下面也会逐一提及到,这里主要就是对这些最基础内容的总结和回顾。用到的素材和全部代码我都上传到了我的资源中:源码及素材(在审核中)这是几个不同地图的效果:下面我们来看看几个关键的地方:游戏中涉及到OpenGL渲染中最基础的地方游戏中精灵的加载:显

2020-05-23 21:50:49 435

原创 凸包问题算法总结并将算法过程可视化

什么是凸包?百度百科上是这样说的:凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,…Xn)的凸组合来构造.老师是用一个形象的例子来解释的:在板子上钉钉子,钉了一定数量后用一个橡皮筋撑大到足以包括所有钉子,然后松手,橡皮筋所包围的最外一侧钉子形成的多边形就是这一堆钉子的凸包。这些外侧的钉子称为极点,他们形成的边称为极边。凸包问题正是计算几何的核心,也是开头的第一课,下面总

2020-05-11 23:01:53 221

原创 如何用TextOut输出非字符串型变量

这是一次课后作业,其中的一项要求是输出鼠标的位置,也就是用:case WM_MOUSEMOVE: X=LOWORD(lParam); Y=HIWORD(lParam); if(flag){ InvalidateRect(hWnd,NULL,TRUE); } break;因为X,Y都是WORD类型的变量,找到WORD的定义:typedef unsigned short WORD;...

2020-05-07 20:05:30 236

原创 没有与参数列表匹配的重载函数ATL CStringT BaseType, StringTraits Format

标题盛不下,先给出完整的错误:IntelliSense: 没有与参数列表匹配的 重载函数 “ATL::CStringT<BaseType, StringTraits>::Format [其中 BaseType=wchar_t, StringTraits=ATL::StrTraitATL<wchar_t, ATL::ChTraitsCRT<wchar_t>>]”...

2020-05-07 20:00:01 262

原创 error MSB6006: "rc.exe"已退出,代码为 1.

又是windows编程中遇到的问题,rc就是资源文件出现了问题,这个错误是因为你的资源文件名字里有中文字符,改成英文和数字的就好了

2020-05-06 21:34:34 125

原创 error RC1004: unexpected end of file found

在学windows编程时创建菜单项时遇到的问题,因为要把所有的菜单项ID的定义放到一个头文件中,结果就出现了这个错误,百度了一下原来是因为头文件最后一行需要一个回车...

2020-05-05 17:33:36 63

原创 vc++面向对象与可视化程序设计——万花筒的绘制

就是把圆分成若干份对应若干个+1个点,每个点和他后面的每个点都连线,思路很简单,主要是对近几章学的Windows API函数进行一下复习。#include <Windows.h>#include <tchar.h>#include <time.h>#include <stdio.h>#include <math.h>#def...

2020-04-29 21:53:39 195

OpenGL(glfw)实现的一个消砖块的游戏

对GitHub上的learnOpenGL教程的学习已经接近尾声了,可以说这个教程完美的衔接了平时教学中一直用的旧OpenGL渲染的方式和现在流行的OpenGL,这个消砖块游戏也是教程最后的一个实战,内容很简洁但是包含了OpenGL几乎所有最基础的内容。

2020-05-23

Assimp.rar

这是用来加载外部模型的函数库,具体的配置方式可见https://blog.csdn.net/derbi123123/article/details/105783048

2020-05-04

NateRobinTutors-win32.rar

关于OpenGL中很多基本变换、光照、纹理等函数的演示demo,有助于理解图形学、绘制、图形硬件的工作过程及原理

2020-04-07

glfw-glad-Cmake.rar

里面有官网上下的3.3.2的glfw、glad、Cmake的源文件或安装文件,下载后具体配置可以看https://editor.csdn.net/md/?articleId=104350624,这里面有完整的配置过程

2020-03-26

适用于vs2010、2015freeglut、glew编译好的.h、lib、dll文件以及测试程序.rar

这里面是适用于vs2010、2015freeglut、glew编译好的.h、lib、dll文件以及测试程序,大家就不用去官网下载后再编译了,那样太慢了,只需要按照网上配置的方法把对应文件放到vs的安装目录下再在vs中链接即可

2020-03-26

c++函数模板什么时候用指针参数

发表于 2020-01-29 最后回复 2020-01-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除