自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 Day 4

1.像素转屏幕坐标系物理坐标转为屏幕坐标系//x取值范围是0-1920 x=0是result.x=1.0f, x=1920时 result.x=1.0f//y取值范围是0-1080 y同理//将他们转到-1到1之间void PixelToScreenSpace(Vector2& result, Vector2& PixelCoord, Vector2& ScreenSpace){ result.x=2 * PixelCoord.x/ScreenSpace.width

2022-03-14 20:29:08 127

原创 Day 3

1.画家算法和Z-BUFFER渲染①:画家算法是:将场景中的物体进行远近排序,按照由远到近的顺序进行绘制,将不可见的部分覆盖。缺点:每个物体都完整的绘制,没有考虑到最终是不会显示到屏幕上的像素,过多的浪费资源。无法实现相互重叠的效果②:Z-BUFFER算法是:定义一个帧缓冲数组FBO(x,y)存放这个像素的颜色。定义一个深度缓冲 DBO (x,y)存放这个像素的深度。z轴扫描线穿透xoy平面,与多边体相交于若干的点,比较相交点的Z值,z值越大距离观察点越近,将z值最大的点的颜色和深度分别写入F

2022-03-10 20:29:56 308

原创 Day 2

1.规整物体的简单包围盒实现void computeBound(){ Vector3 min, max, v; int vertexNum = Mesh->GetVertexCount() ; for(int i = 0;i < vertexNum ;i++) {//拿到mesh中各轴最大值和最小值 Mesh->GetVertexPosition(i, v)//获取顶点坐标 GetMin(min, v); GetMax(max, v); } //包围盒中心坐标

2022-03-09 20:15:26 402

原创 Day 1

一、debug模式下不能执行断点解决方法这种情况可能是因为切换release和debug后vs默认做了些设置造成的。在工具->选项->调试->常规->要求源文件与原始版本完全匹配(Require source files to exactly mathch the original version),把这个的前面的勾取消就可以。转载于http://blog.csdn.net/wushuang443/article/details/42803945二、没有适当的复制构造函数三

2022-03-08 20:21:52 797

原创 OSG编译流程

编译OSG需要的软件:一、下载的OSG源码二、vs三、CMake首先将下载的OSG引擎解压完毕出现三个文件夹打开OSG(中间那个)文件夹,新建一个为Build的文件夹。打开CMake,1.选择Where is the source code的目录和where to build the binaries 的目录。2.点击 Configure 弹出对话框,选择自己下载的vs版本。Finish3.出现下图,勾选BUILD_OSG_EXAMPLES4.再次Configure,成功后点击Ge

2022-03-03 19:13:48 1200

原创 C++内存对齐

内存对齐的意义:计算机无法随机访问内存,每次以机器字长的长度访问内存。内存对齐可以加快CPU访问内存的速度以32位编译环境为例,一次取4字节数据。内存对齐原则:1.每个数据成员存储的起始位置要从该成员大小或者成员子大小的整数倍开始。例如int要从4的整数倍开始存放2.总大小应该是成员中某个最大的数据类型大小的整数倍`struct A{ int a; char b; float c; int e; char d;};//4+1(+3)+4+4+1(+3)=20struct B{

2021-12-28 16:42:44 223

原创 设计模式之工厂模式

//简单工厂模式enum CTYPE{COREA,COREB};class SingleCore{public: virtual void Show() = 0;};class SingleCoreA :public SingleCore{public: void Show() { cout << "A product" << endl; }};class SingleCoreB :public SingleCore{public: vo

2021-12-15 20:14:04 52

原创 UE4中SCheckBox小记

需求背景:父级菜单中复选框与子级菜单联动展示,就是选中父级菜单的复选框,子级中的菜单的复选框全部被勾选中,在全部被勾选的复选框中选中一个取消勾选,父级的复选框变为待定状态。需求分析:父级复选框有三种状态,选中,未选中和待定状态。子级复选框只有两种状态,选中和未选中。SCheckBoxType有两种类型:一种是传统的复选框一种是切换按钮SCheckBoxState有三种状态一种是未选中状态一种是选中状态一种是待定状态(待定状态可用于子级菜单未全选中时,父级SCheckBox状态为待定状态)

2021-10-29 12:22:36 644

原创 大小驼峰命名

小驼峰命名:变量中第一个单词首字母小写后面的单词首字母大写。例如:myStudentClass大驼峰命名:变量每个单词的首字母都大写。例如:MyStudentClass、MyStudentInfo。通常用于类名、函数名、属性名等...

2021-10-27 17:42:04 131

原创 计算机图形学入门1

计算机图形学入门1基本概念:点乘:a·b=||a||*||b||*cosθ用处:1.计算光照时的夹角2.计算一个向量投影到另一个向量的向量3.告诉我们两个向量的夹角是锐角,直角还是钝角叉乘:a✖️b 几何意义为计算出垂直于由a向量与b向量组成的的平面的向量此向量方向的判断:右手螺旋,4指指向由a到b的方向,拇指方向就是叉乘后向量的方向。作用:1.判断一个向量在另一个向量的左边还是右边2.判断某一像素是否在三角形内部矩阵:(M✖️N)(N✖️P)=(M✖️P)矩阵没有交换律矩阵有

2021-04-22 11:04:10 125

原创 OpenGL光照

光照模型主要由三个分量组成:环境光,漫反射,镜面反射。环境光:环境光与物体颜色混合后,片元颜色=环境光颜色*物体表面颜色注:片元颜色是4维向量,颜色是三维向量,所有要将结果转为4维向量漫反射:计算漫反射需要得知:片元的法向量和光线的方向向量。光线的方向向量=光源的坐标-顶点的坐标由法向量点乘光线方向向量并将其标准化,得到图中夹角的余弦cosθ漫反射=光源的颜色×cosθ加入漫反射后:片元颜色=(环境光+漫反射)*物体顶点颜色镜面反射镜面反射实现的是物体表面出现光斑的效果反射颜色=

2021-03-24 15:16:43 92

原创 OpenGL变换

点乘:两个向量的点乘等于它们的数乘结果乘以两个向量之间夹角的余弦值。用于判断两个向量是否正交或者平行叉乘:生成一个垂直于两个输入向量的第三个向量矩阵和向量相乘:如果矩阵的列数等于向量的维数,他们就可以相乘,与矩阵间的乘法规则相同。M×N的矩阵乘N乘X的矩阵=M乘X的矩阵平移缩放旋转采用w齐次坐标的用途:齐次坐标是1,代表这是个方向向量可以进行位移齐次坐标是0,代表这是个坐标,不能进行位移矩阵的组合当平移旋转缩放组合使用时,要先进行缩放,后旋转,然后位移。例如:若先位移再缩放

2021-03-23 17:46:02 59

原创 OpenGL中为模型贴纹理

2021-03-23 15:23:48 341

原创 opengl导入纹理库stb_image.h

库资源https://pan.baidu.com/s/1aM0meYdxJj0C5W0JB3v1IA密码:xxd6

2021-03-21 14:57:16 403 1

原创 glm-0.9.8.5百度网盘下载

https://pan.baidu.com/s/1DjFE7Oh3mXhp-Hm5hJNewQ提取密码:4dj2测试代码:#include<iostream>#include <glm/glm.hpp>#include <glm/gtc/matrix_transform.hpp>#include <glm/gtc/type_ptr.hpp>int main(){ glm::vec4 vec (1.0f, 0, 0, 1.0f); glm::

2021-03-21 13:54:14 1364

原创 vs快捷键

ctrl+k+c批量加注释ctrl+k+u批量解注释alt+上下键可以交换上下代码顺序

2021-03-20 15:54:10 44

原创 glVertexAttribPointer 顶点数据解析方式

glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);第一个参数指定从索引0开始,与顶点着色器中layout=0对应第二个参数指定顶点属性的大小是3第三个参数是数值的类型第四个参数是是否需要归一化第五参数是步长,连续顶点之间的间隔第六个参数是offest偏移量...

2021-03-20 01:34:25 216

原创 OpenGL绘制三角形流程

创建VBO->绑定VBO缓存->向VBO中写入顶点数据GLuint VBO; glGenBuffers(1,&VBO); glBindBuffer(GL_ARRAY_BUFFER,VBO); //写入数据 glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);创建VAO->绑定VAO GLuint VAO; glGenVertexArrays(1,&VAO); glB

2021-03-19 21:58:08 131

原创 opengl项目添加依赖

D:\计算机图形学涉及的库\OPENGLlearnResources\include;KaTeX parse error: Undefined control sequence: \计 at position 17: …IncludePath)D:\̲计̲算机图形学涉及的库\OPENG…(LibraryPath)openGL32.lib;glfw3.lib;glew32s.lib;%(AdditionalDependencies)然后新建项目即可...

2021-03-19 14:54:04 181

原创 输入某年某月某日,判断这一天是这一年的第几天

//输入某年某月某日,判断这一天是这一年的第几天int main(){ bool isRun; int year,month,day,HowManyDay; printf("输入年份"); scanf("%d",&year); printf("输入月份"); scanf("%d",&month); printf("输入日"); scanf("%d",&day); //判断是不是闰年 if(year%4==0&&year%100!=0&&

2021-03-17 16:33:44 145

原创 一个整数他加上100后是一个完全平方数,在加上168又是一个完全平方数

//一个整数他加上100后是一个完全平方数,在加上168又是一个完全平方数int main(){ int i,j,k; //从1-10000之间找,因为100的平方是10000 for(i=1;i<10000;i++) { //k,j是两个完全平方数 for(j=0;j<100;j++) for(k=0;k<100;k++) if(j*j==i+100&&k*k==i+168) printf("%d\n",i); } retu

2021-03-17 16:07:34 156

原创 有1、2、3、4个数字,能组成多少互不相同且不重复的3位数

int main(int argc, char* argv[]){ int a[100]={0},n=0; for(int i=1;i<=4;i++) { for(int j=1;j<=4;j++) { for(int k=1;k<=4;k++) { if(i!=j&&j!=k&&i!=k) { a[n]=i*100+j*10+k; n++; } } } } for(int

2021-03-17 15:22:15 62

原创 统计输入字符串各字符出现的次数

//统计字符频率#include <stdio.h>void main(){ //计数数组 //设为128的原因是ASCII有128个 int cnt[128]={0}; //存放字符串 char str[200]; int i; gets(str); for(i=0;str[i]!='\0';i++) { //str[i]为字符型强转为int //如果A出现了两次 //即cnt[65]++两次 cnt[str[i]]++; } for(i=0;i&l

2021-03-17 00:33:17 208

原创 选择排序

template<class T>void mySwap(T&a, T&b){ T temp; temp = b; b = a; a = temp;}template<class T>void mySort(T &arr, int len){ for (int i = 0; i < len; i++) { int max = i;//假定当前下标为最大的值 for (int j = i + 1; j < len; j

2021-03-11 16:02:19 37

原创 C++创建对象new与不new的区别

C++新建对象的两种方式Date *t = new Date(1996,5,13);//使用newDate f(1996,5,13);//不使用new 错误的新建方式//错误的新建对象方式Person m = new Person(1,1,1);C++的内存四区分为:代码区、全局区、栈区、堆区。全局区的数据在程序结束后自动释放。栈区的数据由编译器自动释放堆区的数据要由程序员分配释放,如果不释放,在程序结束后由操作系统回收这两种创建对象的方式区别在于:(1)使用new创建对象放在堆区

2021-03-08 17:32:51 294

原创 随机生成10个100以内不重复的数字

#include <stdlib.h>#include<stdio.h>#include<time.h>int exist(int r[],int n){ int i; for(i=0;i<10;i++) { if(n==r[i]) return 1; } return 0;}void main(){ int num[10]; int i,temp; srand((int )time(0)); for(i=0;i<10

2021-03-07 22:29:17 1047

原创 利用一维数组打印杨辉三角

//利用一维数组打印杨辉三角void main(){ int A[MAX]={1};//A[0]=1 其他都为0 int N;//杨辉三角层数 int n,i,space; printf("请指定杨辉三角的层数"); scanf("%d",&N); for(n=1;n<=N;n++) { for(space=N-n;space>0;space--) { printf(" "); } for(i=n-1;i>0;i--)//计算杨辉三角数字

2021-03-05 23:01:15 161

原创 砝码称重

//砝码称重void main(){ int w1=1,w2=2,w3=3,w4=5,w5=10,w6=20; int n1=5,n2=3,n3=2,n4=2,n5=1,n6=1; int sum=0,count=0; for(int i=0;i<=n1;i++) { for(int j=0;j<=n2;j++) { for(int k=0;k<=n3;k++) { for(int q=0;q<=n4;q++) { for.

2021-03-05 22:22:51 231

原创 十进制转二进制

//十进制转二进制long convertDecimalToBinary(int n){ long binaryNumber = 0; int remainder, i = 1, step = 1; //模2打印余数 while (n!=0) { remainder = n%2; printf("Step %d: %d/2, 余数 = %d, 商 = %d\n", step++, n, remainder, n/2);

2021-03-05 21:36:46 58

原创 因式分解

输入:90输出:90=233*5``//因式分解void main(){ int num; printf("请输入一个正整数"); scanf("%d",&num); printf("%d=",num); for(int i=2;i<=num;i++) { while(num%i==0) { num=num/i; if(num!=1) printf("%d*",i); else printf("%d\n",i); } }

2021-03-05 20:53:03 39

原创 输出5位以内的对称素数

bool isPrime(int x){ bool isPrime=true; for(int i=2;i<x;i++) { if(x%i==0) { isPrime=false; break; } } return isPrime;}bool isSym(int x){ bool isSym=true; int temp1,temp2=0; temp1=x; if(x<100) { return false; } while(x)

2021-03-04 23:51:05 303 1

原创 求两个整数的最大公约数和最小公倍数

#include<stdio.h>//求两个整数的最大公约数和最小公倍数int num_gcd(int x,int y){ int temp; if(x<y)//确保x>y { temp=x; x=y; y=temp; } //辗转相除法 while(y!=0) { temp=x%y; x=y; y=temp; } return x;}int num_lcm(int x,int y){ int lcm=x*y/num_gcd(x

2021-03-04 23:13:34 176 1

原创 水仙花数

读入文件number.in数字每行一个,以0输入结束。判断是否是水仙花数,并输入到number.out文件中#include<stdio.h>bool isNarci(int num){ bool isNarci; if(num>=100&&num<1000) { int hundred,ten,one,sum=0; hundred=num/100; one=num%10; ten=(num/10)%10; sum=hundred*h

2021-03-04 22:54:59 96 1

原创 求分数序列问题

求分数序列2/1,3/2,5/3,8/5,13/8,21/13…前20项的和void main(){ //设置第一个分子 int fenzi=2; //设置第一个分母 int fenmu=1; //设置总和变量 double sum=0.0; for(int i=1;i<=20;i++) { int temp; printf("%d/%d,",fenzi,fenmu); //求和 sum+=fenzi/fenmu; //暂存分子的值 temp=fenzi;

2021-03-03 16:41:06 245 1

原创 C语言乒乓球比赛抽签问题

C语言乒乓球比赛抽签问题题目描述:两个乒乓球队进行比赛,各出三人。甲队为a, b, c三人,乙队为x, y, z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比。请编程找出三对赛手的对阵名单。新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章

2021-03-03 16:30:47 828 1

原创 关于Textview中的图片抗锯齿化问题

最近一个app项目引用图片时在手机上显示有毛边,查阅了好多资料都没解决问题,其中一个资料是将资源文件转为drawable文件夹中bitmap文件,这样可以在bitmap文件中设置抗锯齿等等属性,后来我试了试还是不行,最后发现是自己的图片文件有问,我从网上下载完图标后用电脑自带的图片编辑软件给图片一键上色,应该在下载图标时使用下载的网站的更改颜色的方法。下面是将资源图片文件转为bitmap文件的方法...

2019-08-21 15:58:32 304

原创 关于adapter.notifyDataSetChanged()刷新数据不起作用

关于adapter.notifyDataSetChanged()刷新数据不起作用查了好多博客都没有完全解决问题,最后发现了一个宝藏博客。分享给大家分享链接我在Fragment中更新GridView中内容,需要在Fragment中开辟UI线程,要确保把更新数据的放在UI线程中,也就是把adapter.notifyDataSetChanged()放在UI线程中,这样Fragment中的GridVi...

2019-07-29 11:20:02 690

空空如也

空空如也

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

TA关注的人

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