debug
文章平均质量分 70
图形跟班
we've got to find what we love.
展开
-
问题二十:C++全局debug “ray tracing图形”实例
紧接上文,漫射材料的球体颜色是不是太黑了呢?为什么会这么黑?接下来要debug啦!!! 第一步:取消“消锯齿”首先想到的是:应该减少光线条数。所以,将“消锯齿”的哪个ns系数设置为1先,原本的系数是100。简单算一下200*100的图片是2万个像素点,为了消锯齿,每个像素点采样100次然后求平均值,也就是一共采样200万次(by the way, 最后一次还真尝试打出了200万条l原创 2017-01-14 19:38:33 · 1658 阅读 · 8 评论 -
error: undefined reference to `PathTrace::PathTrace(World*)' (Codeblocks, C++)
error: undefined reference to `PathTrace::PathTrace(World*)' 说的是`PathTrace::PathTrace(World*)' 没有被“实现”。如果是“没有定义”,报的错应该是:no member;此处“undefined reference”说的是“没有实现”(只是类定义中声明了对应的成员方法,而没有具体实现该成员原创 2017-03-16 10:34:16 · 453 阅读 · 0 评论 -
【修正】问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)
“问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)”原文链接: http://blog.csdn.net/libing_zeng/article/details/54565443当时输出的图形,着实对不起观众。 如果直接根据patches数组中的数据到vertices数组中获取顶点数据,拿到的顶点数据其实是“错位的”。原创 2017-04-05 15:55:24 · 930 阅读 · 0 评论 -
Q104:怎么用ray tracing画基于磨边楔形的“花环(Rosette)”
0,引入在Q103中,咱了解了磨边的楔形物体。 接下来,咱用这种楔形物体来拼出一个“花环”。先看看,咱要画的花环是长什么样子: 从上图来看,我们需要完成两件事情: 1,用磨边楔形拼出“花环”的几何模型; 2,给“花环”中的每一个磨边楔形设置不同/随机的大理石纹理。1,花环的几何模型回忆一下磨边楔形的构造函数中的相关参数:BeveledWedge::BeveledWedge( const do原创 2017-04-16 12:09:09 · 789 阅读 · 0 评论 -
Linux下如何用GDB调试c++程序
文章转自:http://blog.csdn.net/wfdtxz/article/details/7368357 版权归原作者!一、理论GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短转载 2017-05-19 22:58:02 · 512 阅读 · 0 评论 -
Q107:Linux系统下GDB对PBRT-V3进行debug
——————-Notes for the first debug of pbrt——————-1.在pbrt-v3下新建一个名为build.debug的文件夹,定位打该文件夹; cd ~/pbrt-v3/build.debug/2.用cmake生成debug版本的makefile; cmake ../ -DCMAKE_BUILD_TYPE=Debug3.编译生成debug般的可执行文件p原创 2017-05-20 20:37:52 · 1486 阅读 · 0 评论 -
Q113:PBRT-V3分别在Linux和Mac下的编译与调试(汇总)
Linux系统下:Q106:Linux系统下安装编译PBRT-V3Q107:Linux系统下GDB对PBRT-V3进行debug另外,也可以直接用CodeBlocks: Q115:Linux系统下CodeBlocks对PBRT-V3进行编译和调试Mac系统下:Q106:Mac系统下安装编译PBRT-V3Q107:Mac系统下GDB对PBRT-V3进行debug当然,也可以直接使用Xcode:Q11原创 2017-06-13 13:39:02 · 2673 阅读 · 0 评论 -
GDB调试时的参数设置
若正常运行可执行文件pbrt.debug时带有参数,比如:pbrt.debug ~/pbrt/killeroos/killeroos-simple.pbrt那么,用GDB调试pbrt时应该这样:原创 2017-05-20 11:13:39 · 1605 阅读 · 0 评论 -
Linux下如何用GDB调试c++程序 [版本2]
文章转自:http://www.cnblogs.com/iyjhabc/p/3163649.html 版权归原作者。使用gdb可以在命令行方便地调试,并且能以命令程序的方式调试源代码。常用命令简写print-p,step-s,next-n进入gdb//方式一gdb test//test 为可执行文件,使用-g编译得到//方式二gdb -q //不显示版权信息file test //file转载 2017-05-20 20:22:25 · 646 阅读 · 0 评论 -
Q115:Linux系统下CodeBlocks对PBRT-V3进行编译和调试
我也是醉了,在各种环境下对PBRT-V3进行了编译和调试。 参考:Q113:PBRT-V3分别在Linux和Mac下的编译与调试(汇总)不过,小编对CodeBlocks“情有独钟”,所以,必须在CodeBlocks下完成这个事情。(注意是Linux系统)一、用cmake生成CodeBlocks的工程文件二、编译三、调试原创 2017-06-16 11:37:05 · 1260 阅读 · 0 评论 -
How To Use Google Logging Library (glog)
文章转自:http://www.cnblogs.com/lexus/archive/2012/10/29/2744595.html 版权归原作者。IntroductionGoogle glog is a library that implements application-level logging. This library provides logging APIs based on C++转载 2017-05-20 23:56:33 · 808 阅读 · 0 评论 -
mac OS X 10.9.2 gdb codesign
文章转自:http://blog.csdn.net/sinkary/article/details/24107993 版权归原作者。准备在mac下用gdb调试,出现:[plain] view plain copyStarting program: /x/y/foo Unable to find Mach task port for process-id 28885: (os/kern) fa转载 2017-06-10 18:55:30 · 464 阅读 · 0 评论 -
Q107:Mac系统下GDB对PBRT-V3进行debug
参考:Q107:Linux系统下GDB对PBRT-V3进行debugMac系统下GDB的使用和Linux下基本一样。主要发现两处不一样的地方。其一,有关文件路径Linux中类似于:/home/lbzeng/pbrt-v3/src/integrators/directlighting.cpp而Mac中是:/Users/lbzeng/pbrt-v3/src//integrators/directligh原创 2017-06-10 19:14:31 · 782 阅读 · 0 评论 -
Q112:用Xcode调试程序(以PBRT-V3中的pbrt为例)
Xcode版本8.3.3文章内容适合Xcode小白。咱用的程序是PBRT-V3中的pbrt。 怎么编译处PBRT-V3的Xcode版本,参考官网的user guide。现在默认的状态,已经能够在Xcode上对PBRT-V3进行正常编译(即编译成功)。接下来是Xcode小白调试时间。一、执行带参数的可执行文件二、调试带参数的可执行文件原创 2017-06-13 12:02:32 · 1295 阅读 · 0 评论 -
链接报错:ld: 1 duplicate symbol for architecture x86_64
ld: 1 duplicate symbol for architecture x86_64 出现错误的原因是:重复定义。一、问题原因完整的报错信息: ld: 1 duplicate symbol for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocat原创 2017-10-27 10:28:55 · 15064 阅读 · 4 评论 -
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.这句话的意思是: 第一个非内联虚函数(方法)成员没有定义(实现)。 即:虚函数没有被实现。那么什么是“虚函数”呢? 参考:问题十五:C++中抽象类,虚函数是什么鬼?怎么测试简单来说,“虚函数”是父原创 2017-10-26 10:23:59 · 11519 阅读 · 0 评论 -
Q146:PBRT-V3,对系统进行拓展(以添加一个新的Integrator为例)
本文的主要内容是:给PBRT-V3系统添加一个新的Integrator(比如,vcm),确保在编译PBRT-V3时能够编译到新添加的vcm文件,并能编译成功。 不含vcm的具体实现(必须实现的函数全部实现为空函数)。具体操作截图如下。一、新建文件二、添加相关代码三、debug确定运行程序是能够调用到vcm的render()原创 2017-10-26 12:12:35 · 646 阅读 · 0 评论 -
Q98:三角形网格细分Bezier曲面时,注意三角形顶点的顺序(确保其对应的法向量向外)
这一章节又是修正之前的错误。“Q97:怎么用三角形网格细分Bezier曲面——以Utah Teapot为例” (http://blog.csdn.net/libing_zeng/article/details/69360492)之前文章中的三角形的顶点是错误的,导致最终曲面是向里面的(而不是向外面的)。重复贴出之前的代码截图:根据Bezier曲面的“定义”(即两条Bezier曲线的张量积)。其中u原创 2017-04-06 23:17:11 · 2893 阅读 · 0 评论 -
《Ray Tracing from the Ground Up》中的坐标系是怎么确定的
之前一直是用《Ray Tracing In One Weekend》中对应的坐标系,在转到《Ray Tracing from the Ground Up》之后总感觉坐标系是乱的(相比之前)。可以调节哪些参数来改变《Ray Tracing from the Ground Up》中的坐标系呢?可以调节的参数:up、pp.x、pp.原创 2017-03-08 22:09:09 · 597 阅读 · 0 评论 -
C++, “包含类的头文件”还是“对类进行前置声明”?
有时候,明明已经包含了类的头文件,但是还是报错“has not been declared”或者“does not name a type”。这个时候,需要对类进行前置声明。有时候,我们对类进行了前置声明,对应的类也是完整的,但是还是报错“invalid use of incomplete type”。这个时候,需要将类的头文件包含进来。本人小白,遇到如上提到的三个原创 2017-02-26 14:01:43 · 2116 阅读 · 4 评论 -
问题二十二:C++中怎么添加log开关
说这问题的原因有二。其一,这两天在条程序时,如果在每条光线都会跑到的函数添加log,log的总量非常多(200*100的图片,每个像素点采样100次的话,一共就是1百万次采样,如果每次采样打一条log,就是1百万条。有一次在调试一张图片时,生成的log文件超过100Mkb)。其二,以前在公司时,和同事们一起解问题时,经常碰到说“帮忙开一下某个模块的log,然后帮忙抓一份完整的log”。原创 2017-01-14 20:29:08 · 1877 阅读 · 0 评论 -
问题二十三:C++中debug简单的运行死机问题
其实,“模拟不同材料颜色”章节中,刚添加完相关code之后,运行出现过死机。 将采样次数尽可能降低,简化过程,方便分析问题。在main()函数添几条log,为了判断死在main()中什么位置Log的最后位置是main()--2处,main()--3的log没有出来,说明死在了color()函数中。所以在color()函数中添加如下log。原创 2017-01-14 20:35:14 · 1698 阅读 · 0 评论 -
问题二十五:为什么有时候XnView无法显示PPM图片?
25.1 当前问题分析之前在“问题二”中说明过,有截图如下:文件显示不出来,原因肯定是文件格式不对。所有的文件都应包含如下文件头,该文件头的格式如下:P3200 100255没见显示不出来,可能的原因:1,RGB值个数未到200*100个2,RGB值个数刚好200*100个,但某个R值、G值或者B值缺失(也就是RGB值出现残疾)3,RGB值不在[原创 2017-01-14 21:02:05 · 1513 阅读 · 0 评论 -
问题三十八:C++中bad alloc问题(1)——分析问题
38.1 针对问题,解决问题内存泄漏问题在小程序中很难被发现,只有在内存用完后,导致分配内存出现“bad alloc”时才能被发现。如下是在“画六个圆环”时出现的“bad alloc”问题。(圆环的每个像素点都需要解一个一元四次方程,可能是在调用解方程函数时动态分配了太多的内存,然后忘了释放,然后内存全被用完了) 原因肯定是:动态分配的内存没有释放,导致内存泄漏。(ne原创 2017-01-15 16:41:47 · 5525 阅读 · 0 评论 -
问题三十八:C++中bad alloc问题(2)——使用“引用”避免该问题
38.2 数组引用(数组作为函数的输出参数)boolroots_quadratic_equation2(float a, float b, float c,float (&roots)[3]) { //the first element is thenumber of the real roots, and other elements are the real roots.原创 2017-01-15 16:50:33 · 722 阅读 · 0 评论 -
问题四十:对ray tracing圆环图形进行debug(1)
针对上一章节的最后输出图片,进行debug。中间那个白色夹杂着红色的圈是什么鬼???第一步:去掉绿圆环第二步:将单个像素点的采样次数改为1那个多余的白色夹杂着红色的圈的颜色之所以是白色偏红色,是因为:多次采样中可能一次出现红色而其他其次都是白色,所以作为最终像素点颜色的多次采样的平均值就是白色偏红色。之前单个像素点采样是100次。原创 2017-01-15 17:06:13 · 629 阅读 · 0 评论 -
问题四十:对ray tracing圆环图形进行debug(2)——C++,用“笛卡尔”方法解一元四次方程
第七步:用“笛卡尔”方法解一元四次方程 “笛卡尔”方法也就是“待定系数法” 通过“式子八”可以解出s(可能有0到3个实根,这里真的可以随便取一个大于等于0的实根,因为“式子四”是两个式子乘积等于0,而不像“费拉里”方法中参数y的选择);将s代入“式子七”得到k;将k代入“式子五”得到m、t;将k、m、t代入“式子四”得到两个一元二次方程,可以解出实根原创 2017-01-15 17:18:27 · 1737 阅读 · 0 评论 -
问题四十三:对ray tracing圆环图形中的细微问题进行修正
第一步:将上一章节最后一张图放大,看局部有两处问题:其一:蓝色圈内,出现多余的红色像素点其二:黄色圈内,出现多余的白色像素点(也就是原本应该出现的红色像素点没有出现) 第二步:去掉其它圆环和圆柱面,只留下红色圆环放大(16倍)看局部:由于图片像素少,所以没有出现白色的缝(小图中白色不足一次一个像素点,所以,白色的效果就是和红色叠加产生最后的颜原创 2017-01-15 19:09:52 · 459 阅读 · 0 评论 -
LNK2026 module unsafe for SAFESEH image
LNK2026 module unsafe for SAFESEH image解决方法如下方截图:原创 2017-02-16 20:52:41 · 1590 阅读 · 0 评论 -
error: 'vector' does not name a type
编译是出现这个错误:error: 'vector' does not name a type解决方式:在文件开头添加如下代码:#include using namespace std;原创 2017-02-18 16:57:54 · 21422 阅读 · 3 评论 -
error: 'NULL' was not declared in this scope
编译时出现这个错误:error: 'NULL' was not declared in this scope解决方式:在文件开头添加如下代码:#include 或者#include 或者#include原创 2017-02-18 17:01:17 · 17087 阅读 · 0 评论 -
error: invalid new-expression of abstract class type 'Rectangle'
class GeometricObject {…… virtual bool hit(const Ray& ray, double& t, ShadeRec& s) const = 0;……};class Rectangle: public GeometricObject {};Rectangle继承了GeometricObject,所以必须实现GeometricO原创 2017-02-27 22:50:10 · 1938 阅读 · 0 评论 -
error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)
关于“error: Program received signal SIGSEGV, Segmentation fault.”。之前多次遇到的情况都是:对空指针进行了操作。比如:material_ptr->shade(sr)若material_ptr为空指针(或者对应的指针并不是“指向某拥有shade()成员方法的对象”的指针),则可能报这个错误。但是,今天遇到一件诡异的事原创 2017-02-18 23:28:58 · 22883 阅读 · 0 评论 -
问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(3)——修正一个问题
前续:问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(2)我们在画“问题六十”的各种回旋体时,遇到这样的问题:当“基本曲线”的控制点为://8--meet some problems vec3 ctrl_points[6] = {vec3( 4.0, 4.0, 0.0), vec3( 2.0, 4.0, 0.0),原创 2017-01-19 20:09:38 · 646 阅读 · 0 评论 -
error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)(2)
之前,针对这个问题也总结过:“error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)”http://blog.csdn.net/libing_zeng/article/details/55684405之前的结论是:问题出现的原因是“对空指针进行了操作”。这个结论是着实不严谨。在这里,原创 2017-02-28 20:17:39 · 10398 阅读 · 0 评论 -
Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行——怎么将Unix/Mac系统下的文件转换到Windows系统下
先交代一下遇到的问题:本人用的是Windows系统。在学习Triangle Mesh时,想将bunny.ply等经典的PLY文件导入程序中。但是,文件被读入程序后,所有的内容变成了一行。从而,现成的文件解析程序(OpenSource)无法对读入的文件进行解析。问题的原因是:在网络上下载的经典.ply一般都是在Unix/Mac系统下生成的,而Unix/Mac系统和Windows系原创 2017-03-08 18:22:20 · 2929 阅读 · 0 评论 -
RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility.
RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. 导致这个错误的原因可能不止一个。 小编的处理方式是:pip uninstall -y scipy scikit-learnpip install --no-binary scipy,scikit-learn -I scipy s...原创 2018-08-20 08:16:28 · 636 阅读 · 0 评论