自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GuoSheng的博客

学习图形学是认真的

  • 博客(20)
  • 问答 (1)
  • 收藏
  • 关注

原创 【22.05.14】native thread exiting without having called DetachCurrentThread

5月搞出来的bug

2022-05-14 12:03:45 841

原创 MoreEffectiveC++笔记 8杂项

MoreEffectiveC++笔记 8杂项未来时态开发程序将非尾端类设计为抽象类3如何在同一程序中混合使用C++和C名变换静态初始化动态分配内存数据结构的兼容性让自己习惯使用标准C++语言未来时态开发程序用C++语言来表达要求的约束条件,例如不能继承、必须在堆/栈上构造。判断函数是否应当是虚函数。拷贝赋值是否设置为私有。重载操作符要与内建数据一致。只要是能被人做的,就有人这么做(莫菲法则)。他们会抛异常;会用自己给自己赋值;在没有赋初值前就使用对象;给对象赋了值而没有使用;会赋过大的值、过小

2020-12-08 13:02:25 191

原创 MoreEffectiveC++笔记 7技巧

MoreEffectiveC++笔记 7技巧1构造函数和非成员函数虚拟化2限制某个类能产生的对象数目3要求或禁止在堆上生成对象4灵巧指针(智能指针)1构造函数和非成员函数虚拟化虚拟构造函数不是指把构造函数用virtual修饰。对象没有构造完成,不会产生多态的效果。这里是说构造函数调用一个工厂函数,产生的对象会作为这个类的成员,工厂函数会根据输入参数的不同动态生成不同的子类(因为能生成不同类型子类对象所以书里面叫他虚拟构造函数)。类似的可以定义虚函数clone作为虚拟拷贝构造函数完成多态复制。虚拟化非成

2020-12-07 15:53:14 206

原创 MoreEffectiveC++笔记 6效率

MoreEffectiveC++笔记 4效率1 牢记80-20准则2 lazy evaluation3分期摊还期望计算4理解临时对象的来源5协助完成返回值优化通过重载函数避免隐式类型转换1 牢记80-20准则胡乱提高一部分程序效率难有很大帮助;使用profiler程序识别其中20%的部分;用尽可能多的数据进行profiler测试。2 lazy evaluation延迟计算工作到系统需要这些计算的结果,如果不需要那么将不进行计算。引用计数例如一个变量s1赋值给s2,在s1s2未发生变化之前,我们可

2020-12-05 12:09:31 174

原创 MoreEffectiveC++笔记 5异常

MoreEffectiveC++笔记 3异常1使用析构函数防止资源泄露2构造函数中防止资源泄露3禁止异常传递到析构函数外面4抛出异常、传递参数、调用虚函数三者的差异5通过引用捕获异常6审慎使用异常规格7了解异常处理的系统开销普通的代码在异常出现的时候,出现一般考虑不到的致命错误。1使用析构函数防止资源泄露当我们使用指针时要时刻记得使用delete释放资源,但是当异常发生,程序末尾的delete语句可能并未被执行。所以必须使用try语句来对可能异常的语句进行捕获。while(dataSource){

2020-12-04 13:05:53 165

原创 MoreEffectiveC++笔记 4操作符

MoreEffectiveC++笔记 2操作符1谨慎定义类型转换函数2自增自减操作符的前后缀形式的区别3不要重载&& || 或 ,4理解不同含义的new和delete1谨慎定义类型转换函数类型转换函数无非包括两种,一个是至多有一个参数没有缺省的构造函数;另一种是类型转换操作符的重载。class Name{ public: Name(string name):_name(name){//一个参数 这时string类型可以隐转为Name } string _name;};cla

2020-12-01 16:18:12 123

原创 MoreEffectiveC++笔记 3基础议题

MoreEffectiveC++笔记 1基础议题1指针和引用的区别2尽量使用C++风格转换3不用对数组使用多态4避免无用的缺省构造函数1指针和引用的区别指针可以指向空值,引用必须绑定到另一个变量。int main(){ int *p = NULL; int &ref = *p;//尝试设置一个绑定到空的引用 cout<<ref;//g++下编译通过 运行时提示段错误 return 0;}引用必须被初始化,但是指针未初始化是合法的。int main(){ i

2020-11-30 18:11:06 205

翻译 实时渲染(RealTimeRendering-4thEdition)笔记——5着色基础(下)

实现半透明物体并允许光线穿过他们有很多方法可以实现。对于渲染算法,这一过程可以分为基于光线和基于视线的效果。基于光线的效果可以让穿过的光线减弱或变相,进而导致场景中的其他物体被不同的方式被照亮;基于视线的效果是考虑如何视线半透明物体本身被渲染的方法。这一章节讨论基于视线的最简单的形式实现透明效果,半透明物体会显示成它背面物体颜色削弱后的效果。

2020-09-23 15:02:20 345

原创 直线光栅化

使用python分别实现Bresenham算法以及wu反锯齿算法的直线光栅化。

2020-09-22 10:43:53 989

翻译 实时渲染(RealTimeRendering-4thEdition)笔记——5着色基础(上)

当我们渲染三维对象的时候,模型不止是一个几何的形状,它也应该有所需要的视觉外观。根据应用场景可以要求结果是更写实的或者是更风格化的。

2020-09-20 14:49:18 525

原创 STL链表归并排序

STL链表归并排序stl链表归并思路第一次见到这种思路来源于《stl源码剖析》一书。#include <iostream>#include<vector>using namespace std;struct Node { int i; Node* next; Node(int ii):i(ii),next(nullptr) { }};Node* merge(Node* l, Node* r) { Node* ret = new Node(0); Node*

2020-08-11 22:37:17 207

原创 基于FFmpeg实现实时反向播放(ffmpeg+SDL2+vs2017)

FFmpeg实现实时反向播放(ffmpeg+sdl+vs2017)在某些场合下需要实现视频的倒放效果,实现倒放有很多种思路。比如直接用libavfilter下提供的reverse命令行输出一个反转过来的视频;或者比较直接的想法是把所有frame缓存起来,然后再反向逐个输出到屏幕。如果我们需要实时的在屏幕预览,那命令行的方法大概是不行了,而第二种方法需要在播放前预先加载所有需要播放的帧,这一方面增加了耗时,另一方面占用了大量的内存空间。所以基于第二种方法的倒放必须要进行优化。本文使用的思路是基于av_s

2020-08-09 17:35:33 1367

原创 运行性能监控工具Minitrace使用方法

trace是chrome中的开源运行性能测试工具

2020-08-02 18:06:34 909

原创 ubuntu下c++ select与epoll函数

select和epoll概念selectepoll概念select和epoll都归属于IO多路复用是一种代替多线程实现服务器并发的方案。举个例子,假设小明要来8公寓找小果,但是不知道他在哪个寝室,但是每个寝室都分配了一个女仆阿姨,小果的阿姨一眼看到了小明,就把他叫到小果那里了;过了一阵子学校没钱了,只雇佣了一个阿姨,小明找不到小果,阿姨就挨个屋子问小果在哪里直到找到小果或者查无此人来错公寓嘞您...

2020-04-02 21:33:39 318

原创 opengl模仿portal传送门效果

opengl模仿portal传送门效果portal大体思路虚拟相机模板测试斜视锥体结果最近了解了下计算机图形学和opengl的使用。CG方向本身比较有意思,相信未来随着VR和AR新设备的发展热度一定能够上升。可惜我接触时间不长,对于即将到来的应聘面试恐怕很难有机会上岸,所以用这个项目作为最后的记录,结束我的CG学习阶段。portalportal是我玩过的优秀解密游戏之一,其中最为人称道的就...

2020-03-30 14:30:02 597 1

翻译 实时渲染(RealTimeRendering-4thEdition)笔记——4变换(下)

变换(下)顶点混合(vertex blender)渐变(Morphing)Geometry Cache Playback投影(Projections)透视投影顶点混合(vertex blender)现在我们想象要完成一个手臂的活动动画,它包括上臂和小臂,通过设置两个模型的刚体变换(旋转+位移)我们确实能够完成它的屈肘动作,但这一定无法达到与实际类似。这是因为两个分离的部分我们使用了两个模型,在...

2019-10-20 16:44:34 420

翻译 实时渲染(RealTimeRendering-4thEdition)笔记——4变换(上)

实时渲染(RealTimeRendering-4thEdition)笔记——4变换变换(transform)变换是对例如点和向量这类实体进行转换的某种操作,对于计算机图形学的实践者来说这是极为重要的一项内容。通过变换,程序员可以对对象移动位置、放缩尺寸,对模型光源相机附加动画效果。线性变换(linear transform) 是一种完成向量加法和数乘的操作,设操作表示为f ,其性质如下公式所...

2019-10-19 13:59:15 775

原创 OpenGL的环境搭建(cmake+glfw+glew+vs2017)

OpenGL的环境搭建材料准备glfw和glew的编译下载材料准备1、visual studio 2012版本以上的一种,本篇教程依靠源码编译,不受vs版本影响,装自己方便的一种。2、cmake,百度cmake官网下载安装,感到困难的先百度个cmake安装教程。3、解压的软件……glfw和glew的编译第一步我们要得到这两个库的.h文件和.lib文件。下载glfw官网glew打...

2019-10-19 11:21:52 1705

翻译 实时渲染(RealTimeRendering-4thEdition)笔记——2图形渲染管线

图形渲染管线(the graphic rendering pipeline)图形渲染管线(the graphic rendering pipeline)可以理解为:给定输入的3D图形、光线、虚拟相机位置以及更多信息,就可以生成或者说渲染(render)相应2D的图片的一系列算法。可以说图形渲染管线是实时渲染的基础工具。如上图所示,通过输入的3D数据可以产生一张对应2D图片。输出图片中的形状及...

2019-10-13 15:47:34 608

翻译 实时渲染(RealTimeRendering-4thEdition)笔记——1综述

《实时渲染》计算机图形学的经典书籍,第四版更新填补大量现代CG使用的技术,是计算机图形学程序员入门提升的不二教材。

2019-10-13 13:11:01 965

空空如也

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

TA关注的人

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