学习笔记
hh96581
这个作者很懒,什么都没留下…
展开
-
QT使用openg离屏渲染到纹理并存到opencv的mat中
负责opengl绘制的控件是openglwidget,不能把FBO和其附件的设置放在initalizeGL函数里执行,只能在里面gen,配置需要放在paintGL函数中。另外opengl的纹理有4字节对齐的,直接从FBO的纹理附件读取数据到mat时会导致图像有奇怪的歪斜和灰度。解决这个问题的方法是在调用glGetTexImage之前使用glPixelStorei(GL_PACK_ALIGNMENT,1)进行设置。...原创 2021-09-30 10:35:57 · 416 阅读 · 0 评论 -
opengl问题记录
使用顶点属性(调用完glEnableVertexAttribArray函数)之后一定要记得释放(在glDraw*命令后要调用glDisableVertexAttribArray释放对应的属性),否则的话绘制别的顶点时,如果后面绘制的数据量很大,会出现前后数据的内存交叠导致访问越界而崩溃。这有可能是opengl内部机制,猜测是前面顶点和后续顶点是在GPU的同一个位置,如果前面顶点占据的缓存如果不disable,后面顶点还是在相同位置进行访问,当后面顶点数远大于前面顶点数时,相同位置没有开辟足够的缓存,导致原创 2021-07-29 10:59:11 · 141 阅读 · 1 评论 -
VAO的使用注意事项
VAO,VBO,EBO必须gen、bind放在一起,不能在一个函数里gen,在另一个函数里bind数据。可以在初始化的时候bind无效的数据,当想要渲染的数据获得的时候再重新bind而不用gen了,但是首次的gen后面必须紧跟bind设置数据。...原创 2021-07-05 11:21:28 · 645 阅读 · 1 评论 -
QT中使用原生opengl函数
跟着learnopengl网站学习的opengl,其使用的是glfw创建上下文,glad提供gl函数的地址。想在QT中仍然使用这一套流程,只是用QT的openglwidget代替glfw创建上下文,然后用glew提供gl函数的地址。在重写openglwidget类及initialize\paint\resize时,一开始是把glew的初始化和调用的gl函数(glbindvertex、gldrawelemnts等)直接写在这三个函数中了,界面都启动不起来,直接崩溃。后来在网上找了一堆资料,忘了在哪看的了,就抱原创 2021-06-23 21:57:24 · 965 阅读 · 1 评论 -
Eigen库使用记录
Eigen库提供动态大小的矩阵,但是如果后续想要对矩阵进行赋值运行时会崩溃,解决办法是在矩阵定义时使用如下方式对其初始化。Eigen::MatrixXd C=Eigen::MatrixXd::Random(m,n);矩阵C为m行n列,后续赋值不会崩溃...原创 2019-04-27 10:10:18 · 223 阅读 · 0 评论 -
SLAM十四讲里的问题
系统:ubuntu18.04 LTS问题:先编译了g2o,后来意识到libsuitesparse没装,于是sudo apt-get install libsuitesparse但是在ch7里的程序make过程中出错——undefined reference to `g2o::csparse_extension::cs_cholsolsymb(cs_di_sparse const*, dou...原创 2018-09-15 23:33:34 · 2196 阅读 · 0 评论 -
QT无标题栏最大化按钮
用ismaximized函数判断有问题,在底部缩放了窗口后需要点两次最大化按钮才能最大化。经过网上搜索解决了问题,感谢广大网友,代码记录如下:QDesktopWidget *desktopWidget=QApplication::desktop();QRect desktop=desktopWidget->availableGeometry();if(this->geome...原创 2018-09-01 11:09:04 · 666 阅读 · 0 评论 -
QT+VS2017问题
在VS2017下编译好QT项目后,运行时程序crashed,ig9icd64.dll访问0xFFFF...位置出错。经过网上搜索,该dll为英特尔核显驱动,遂更新之,亲测成功。原创 2018-08-20 15:58:20 · 1308 阅读 · 0 评论 -
C++condition_variable与unique_lock的使用体会
std::mutex mt;std::condition_variable cv;int shareData = 0;bool ready = false;bool ismain = false;int main(){ auto thread1 = [](int a) { std::unique_lock<std::mutex> lk(mt)...原创 2018-08-10 19:31:30 · 1758 阅读 · 0 评论 -
QT 信号槽
使用C++11的bind对函数进行包装,可在非QT派生类中使用QT的方法和信号槽机制。但是如果被包装的函数在子线程中发射信号的话,对应的connect函数第五个参数设成阻塞的队列模式,在我遇到的问题中是可用的。...原创 2018-08-01 14:44:25 · 220 阅读 · 1 评论 -
QT--opengl
编译环境VS2017+QT使用glutSolidSphere函数在QOpenglWidget里绘制球体会出错,目前只是弃用glut函数,改用纯opengl的三角形画的球。原创 2018-08-03 19:50:06 · 375 阅读 · 0 评论 -
C++学习笔记(1)
指针的阴影在学习C语言时,教师在课堂上讲的指针知识基本忘完,唯一记住的一点就是指针是一个危险的东东,好了,从此就对指针产生了心理阴影,到现在在使用指针时心里还犯嘀咕,时常感到无从下手,特别是在使用函数时,传递指针与传递值的联系与区别还有一些模糊。通过阅读《Effective C++》,现有如下体会,不仅是指针,还包括引用、函数形参等理解:1.在调用函数时,实参与形参之间执行了类似“原创 2016-02-25 21:39:36 · 232 阅读 · 0 评论