- 博客(448)
- 资源 (26)
- 问答 (1)
- 收藏
- 关注
原创 ☻C++ Q&A
函数指针的定义泛式与原理?联合(union)的原理是怎样的?联合类型对象的指针是什么意思?命名空间在.h和.cpp中怎么定义和使用,是什么原理?静态变量/函数在.h和.cpp中怎么定义和使用,与普通函数的区别是什么?宏的运行原理和在代码中的执行逻辑是什么?
2024-01-30 09:12:24
338
原创 ✺ch8——阴影
片元在光空间的 -1 到 1 的范围,假设光空间中的某顶点为 projCoords,因为来自深度贴图的深度在 0 到 1 的范围,我们也打算使用 projCoords 从深度贴图中去采样,所以我们将 NDC 坐标变换为 0 到 1 的范围:为了和深度贴图的深度相比较,z 分量需要变换到[0,1];在示例中使用的是初始窗口的宽高。将该检索的值(到最靠近光的物体的距离)与 z 进行比较,将产生“二元”结果,告诉我们我们正在渲染的像素是否比最接近光的物体离光更远(即像素是否处于阴影中)。
2023-12-25 03:52:00
1021
原创 ✺ch7——光照
它没有光源位置,无论场景中的对象在何处,用于显示对象的每个像素都有着相同的光照。由于聚光灯同时具有定向光和位置光的特性,因此这里就值得使用 C++的多继承能力,让 Spotlight 类同时继承于实现位置光和定向光的类。其实从最终的计算效果来看,因为颜色取值在[0,1]区间,所以乘法的值是向0这个方向靠近的,乘法产生的值一般都是偏小的,会相互抵消原先的一些颜色。因此我们只需要对模型中每个多边形的一个顶点进行光照计算, 然后以每个多边形或每个三角形为基础,将计算结果的光照值复制到相邻的像素中。
2023-12-20 08:59:29
1039
原创 ✺ch6——3D模型
我们使用传统的数组绘制(array drawing)方式绘制一个立方体时,可能每个面使用6个顶点(绘制两个三角形),其中2个顶点是共享的,重复了,那么一共需要制定36个顶点;由于每个索引值只是一个整型引用, 我们首先将索引数组复制到整型的 C++ vector中,然后使用 glBufferData() 将vector加载到新增的 VBO 中,指定 VBO 的类型为GL_ELEMENT_ARRAY_BUFFER,这就是告诉 OpenGL 这个 VBO 包含的是索引。
2023-12-18 14:24:55
1060
原创 ✺ch5——纹理贴图
因此,我们将设置两个缓冲区,一个用于顶点坐标(每个条目中有 3 个分量,即 x、 y 和 z),另一个用于相应的纹理坐标(每个条目中有两个分量,即 s 和 t)。多级渐远纹理贴图通过一种巧妙的机制来工作, 它在纹理图像中存储相同图像的连续的一系列较低分辨率的副本,所用的纹理图像比原始图像大 1/3,其中图像的 RGB 值分别存储在纹理图像空间的 3 个 1/4 区域中来实现的。因此,我们希望顶部的方块变小,底部的方块变大。在步骤(3)中,我们将步骤(1)中的图像文件数据关联到步骤(2)中创建的纹理对象。
2023-12-18 13:20:20
1036
原创 ✺ch4——管理3D图形数据
用于构建透视矩阵的近、远剪裁平面之间的距离越远,具有相似(但不相等)的实际深度的两个对象的点在深度缓冲区中的数值表示越可能相同。也就是说,地球的 MV 矩阵是通过将地球的变换结合到太阳的变换中而建立的。同样,月球的 MV 矩阵位于地球的 MV 矩阵之上, 并通过将月球的模型矩阵变换应用于紧邻其下方的地球的 MV 矩阵来构建。这种不自然的伪影称为。通常情况下,通过选择最接近相机的相应片段的颜色作为像素的颜色,这种方法可决定哪些物体的曲面可见并呈现到屏幕,而位于其他物体后面的曲面不应该被渲染。
2023-12-18 11:23:05
1055
原创 ✺ch3——数学基础
目录3D坐标系和点矩阵单位矩阵转置矩阵逆矩阵逆转置矩阵矩阵的运算矩阵加法(+)矩阵乘法(×)常用的变换矩阵平移矩阵缩放矩阵旋转矩阵透视矩阵正射投影矩阵LookAt矩阵向量加法和减法点积叉积局部空间和世界空间——模型矩阵M视觉空间和合成相机——模型-视图矩阵MV用GLSL函数构建变换矩阵3D坐标系和点3D 空间通常用 3 个坐标轴即 x、 y 和 z 来表示。OpenGL 中的坐标系大都是右手坐标系。3D 空间中的点可以通过使用形如(2, 8, −3)的符号列出 x、y、z 的值来表示。不过,如果用齐
2023-12-18 05:24:52
1030
原创 ✺ch2——OpenGL图像管线
符号常量 GL_POINTS 、 GL_LINE_STRIP 、 GL_LINE_LOOP 、 GL_LINES 、 GL_LINE_STRIP_ADJACENCY 、 GL_LINES_ADJACENCY 、接受 GL_TRIANGLE_STRIP 、 GL_TRIANGLE_FAN 、 GL_TRIANGLES 、 GL_TRIANGLE_STRIP_ADJACENCY 、 GL_TRIANGLES_ADJACENCY 和 GL_PATCHES。这包括窗口的大小,尤其是全屏窗口的大小。
2023-12-14 09:39:18
1140
原创 ℰ悟透Qt—布局类与widget接管
呀,没错,我们确实没有调用它,不过事情还是照常运转了。的派生类都可以使用布局来管理它们的孩子们,有读者说了,有时貌似没调用。方法可以把一个布局应用到一个。之后,这个布局就会作为。的顶层布局,无需再调用。也会返回你创建的那个。
2023-07-08 21:35:22
543
原创 ℰ悟透Qt—Http网络编程
网络访问 API 建立在一个对象之上,该对象保存了发送请求所需的公共配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号和可用于监视网络操作进度的回复信号。整个 Qt 应用程序只需要一个 QNetworkAccessManager 实例。由于 QNetworkAccessManager 基于 QObject,因此只能从它所属的线程中使用。创建了 QNetworkAccessManager 对象后,应用程序可以使用它来通过网络发送请求。提供了一组标准函数,这些函数接受请求和可选数据,并返回一个对象。
2023-06-30 00:44:11
1074
原创 ✎Qt-doc——尺寸调整策略(QSizePolicy)
小部件的尺寸策略是其愿意以各种方式调整大小的表达方式,并影响布局引擎对小部件的处理方式。每个小部件返回一个描述其在布局时首选的水平和垂直调整策略的。一个描述小部件的水平尺寸策略,另一个描述其垂直尺寸策略。它还包含一个标志,指示其首选尺寸的高度和宽度是否相关。如果此属性的值是无效的尺寸,则不建议使用任何尺寸。的默认实现返回无效的尺寸,否则返回布局的首选尺寸。函数返回指示尺寸提示依赖关系的标志的当前状态。函数检索当前的尺寸策略和拉伸因子。函数指示的更多空间,以及可以扩展的方向。属性来更改特定小部件的尺寸策略。
2023-06-16 21:09:14
2076
原创 Qt for Android环境配置(联合Android Studio)
根据以上官方文档,NDK r25b,即25.x.x.x.xxxx,后缀"b"指的是‘25’大版本下的第2次发布的版本。如上图设置后,Gradle同步一下,就下载了最新版的Gradle和Gradle plugin,供Qt环境使用。下图中,31.0.0是当前Qt必需的,33.0.2是为了编译API 33。
2023-06-03 08:37:19
1855
1
原创 DCMTK-dcmimage-压缩/解压缩库
此模块包含在DICOM图像对象的未压缩和JPEG压缩表示(传输语法)之间进行转换的类。支持无损和有损JPEG处理。此模块实现了一系列从类DcmCodec派生的编解码器,可以在模块dcmdata中维护的编解码器列表中注册。
2022-10-25 20:29:18
939
原创 DCMTK-dcmimage-向dcmigle添加对彩色图像的支持
该模块包含访问和渲染DICOM彩色图像的类。模块dcmigle支持单色图像。模块dcmjpeg提供了对JPEG压缩图像的支持。
2022-10-25 16:42:20
398
1
原创 DCMTK-dcmdata-数据编码/解码库
dcmdata一个数据编码/解码库和实用程序该模块包含用于管理DICOM数据结构和文件的类。它还支持DICOM存储介质所需的DICOMDIR文件。
2022-10-25 16:18:16
1043
原创 悟透Qt—求解画布经任意中心点旋转后相对旋转前坐标系的坐标
当angle=180时,公式满足(x,y)=(-x’,-y’),打印结果是QGenericMatrix(-12.34 -67.89),验证通过。当angle=90时,公式满足(x,y)=(-y’,x’),打印结果是QGenericMatrix(-67.89 12.34),验证通过。实际上,使用其他任何角度值,也都能通过验证。即,画布经顺时针旋转 α 角度后的坐标(x’,y’)在旋转前的坐标系下的坐标:(x,y)=[旋转矩阵]●(x’,y’)。
2022-10-17 18:55:06
1243
原创 ✎Qt-doc—QEvent事件系统
accept”标志是特定事件处理程序和event()之间的通信机制,而event()的bool返回值用于与QApplication::notify()通信。当调用过滤器对象的eventFilter()实现时,它可以接受或拒绝事件,并允许或拒绝对事件的进一步处理。在实现小部件时,重要的是要认识到事件可以在其生命周期的早期传送,因此,在其构造函数中,请确保在它可能接收到事件之前尽早初始化成员变量。然而,如果你只想扩展基类的功能,那么你可以实现你想要的,并调用基类来获得你不想处理的任何情况的默认行为。
2022-10-05 04:56:46
619
原创 ✎Qt-doc—QGraphics图形视图框架&坐标系统
由于Item的位置和变换相对于父Item,因此子Item的坐标不受父Item变换的影响,尽管父Item的变换隐式地变换子Item。但是,相对于场景,子对象将跟随父对象的变换和位置。如果缩放父对象(2x,2x),子对象的位置将位于场景坐标(20,0),其(10,0)点将与场景上的点(40,0)相对应。Items位于本地坐标系(local coordinate system)中,与QGraphicsView一样,它还提供了许多函数来映射Item和场景之间的坐标,以及Item与Item之间的坐标。
2022-10-05 03:37:11
1667
原创 ✎Qt-doc—QPainter绘图系统&坐标系统
默认情况下,世界变换矩阵是单位矩阵,“窗口”和视口设置与绘制设备的设置等效,即世界、“窗口”与设备坐标系等效,但正如我们所见,可以使用变换操作和窗口-视口转换来操纵系统。QPaint用于执行绘图操作,QPaintDevice是二维空间的抽象,可以使用QPainter在其上绘制,而QPaintEngine提供了QPainter用于在不同类型的设备上绘制的接口。但默认情况下,painter是走样的(aliased),这时的规则是:当使用1像素宽的笔进行渲染时,像素将被渲染到数学定义的点的右下方。
2022-10-04 23:50:29
2893
原创 ℱ悟透CMake┇Puzzle记录
东周列国志》第一百二回:“及秦使捧国书来,欲与魏息兵修好,叩其来意,都是敬慕信陵之语,又接得太子增家信,心中愈加疑惑。①《墨子·公孟》:“若大人行淫暴於国家,进而谏,则谓之不逊;因左右而献谏,则谓之言议,此君子之所疑惑也。②《后汉书·张衡传》:“亲履艰难者知下情,备经险易者达物伪。故能一贯万机,靡所疑惑,百揆允当,庶绩咸熙。④巴金《家》七:“剑云抬起头来看琴的脸,他的脸上现出疑惑的表情。③唐刘知几《史通·论赞》:“夫论者所以辩疑惑,释凝滞。迷惑,不理解,不明白,不清楚。
2022-09-08 06:25:02
125
原创 ℯ悟透OpenCV┇Puzzle记录
东周列国志》第一百二回:“及秦使捧国书来,欲与魏息兵修好,叩其来意,都是敬慕信陵之语,又接得太子增家信,心中愈加疑惑。①《墨子·公孟》:“若大人行淫暴於国家,进而谏,则谓之不逊;因左右而献谏,则谓之言议,此君子之所疑惑也。②《后汉书·张衡传》:“亲履艰难者知下情,备经险易者达物伪。故能一贯万机,靡所疑惑,百揆允当,庶绩咸熙。④巴金《家》七:“剑云抬起头来看琴的脸,他的脸上现出疑惑的表情。③唐刘知几《史通·论赞》:“夫论者所以辩疑惑,释凝滞。迷惑,不理解,不明白,不清楚。
2022-09-08 06:23:44
643
原创 ℰ悟透Qt┇Puzzle记录
东周列国志》第一百二回:“及秦使捧国书来,欲与魏息兵修好,叩其来意,都是敬慕信陵之语,又接得太子增家信,心中愈加疑惑。①《墨子·公孟》:“若大人行淫暴於国家,进而谏,则谓之不逊;因左右而献谏,则谓之言议,此君子之所疑惑也。②《后汉书·张衡传》:“亲履艰难者知下情,备经险易者达物伪。故能一贯万机,靡所疑惑,百揆允当,庶绩咸熙。④巴金《家》七:“剑云抬起头来看琴的脸,他的脸上现出疑惑的表情。③唐刘知几《史通·论赞》:“夫论者所以辩疑惑,释凝滞。迷惑,不理解,不明白,不清楚。
2022-09-08 06:22:16
278
原创 ℬ悟透C++┇Puzzle记录
东周列国志》第一百二回:“及秦使捧国书来,欲与魏息兵修好,叩其来意,都是敬慕信陵之语,又接得太子增家信,心中愈加疑惑。①《墨子·公孟》:“若大人行淫暴於国家,进而谏,则谓之不逊;因左右而献谏,则谓之言议,此君子之所疑惑也。②《后汉书·张衡传》:“亲履艰难者知下情,备经险易者达物伪。故能一贯万机,靡所疑惑,百揆允当,庶绩咸熙。④巴金《家》七:“剑云抬起头来看琴的脸,他的脸上现出疑惑的表情。③唐刘知几《史通·论赞》:“夫论者所以辩疑惑,释凝滞。迷惑,不理解,不明白,不清楚。
2022-09-08 06:19:20
767
原创 第16章-cpp string类和标准模板库
构造函数string(string&& str)类似于复制构造函数,导致新创建的string为str的副本。但与复制构造函数不同的是,它不保证将str视为const。构造函数string(initializer_list il)让您能够将列表初始化语法用于string类。是一个依赖于实现的整型,是在头文件string中定义的。,同时省略了与内存管理相关的参数(这将在本章后面和附录F中讨论)。定义为字符串的最大长度,通常为unsigned int的最大值。的一个typedef。
2022-08-19 17:36:38
424
原创 cpp各章节必知必会——问题集锦
第2章:开始学习C++1.源代码生成可执行代码的过程?2.编译指令与有何区别?3.与对应于C中的什么函数,要包含哪个头文件?4.与有何区别?5.函数返回的值是什么含义?是返回给程序其他部分还是操作系统?第3章:处理数据1.通过输出十进制、十六进制和八进制,分别用什么?2.程序将把1492存储为、还是其他整型呢?3.有原型:那么与有区别吗?4.什么是?它的用法类似于?通用字符名的表示有哪两种前缀,含义有何不同?后缀表示的那些位是字符的哪个国际标准的码点?例如:ö的国际标准码点为00F6,â的
2022-08-08 23:55:54
3521
原创 ✥2-GUI应用程序设计基础
Application->Qt Widget Application项目组织文件MyWidgets.pro,存储项目设置的文件。主程序入口文件main.cpp,实现main()函数的程序文件。窗体界面文件widget.ui,一个XML格式存储的窗体上的元件及其布局的文件。widget.h是所设计的窗体类的头文件,widget.cpp是widget.h里定义类的实现文件。在C++里,任何窗体或界面组件都是用类封装的,一个类一般有一个头文件和一个源程序文件。Hello.proQT
2022-05-08 03:59:03
601
原创 ✥1-认识Qt
Application->Qt Widget ApplicationBase Class有三种选择:QMainWindow:是主窗口类,主窗口具有主菜单栏、工具栏和状态栏,类似于一般的应用程序的主窗口;QWidget:是所有具有可视界面类的基类,选择QWidget创建的界面对各种界面组件都可以支持;QDialog:是对话框类,可建立一个基于对话框的界面。Hello.pro:是项目管理文件,包括一些对项目的设置项。Headers:mainwindowh是主窗口类的头文件。Source
2022-05-05 11:15:21
660
原创 ✿4-The Basics-Qt Quick and QML
Qt由两个不同的模块组成,用于开发图形用户界面(GUI)应用程序。第一种方法是使用Qt小部件和C++,这是我们在前一章中了解的。第二种方法是使用Qt Quick控件和Qt建模语言(Qt Modeling language:QML),我们将在本章中介绍。让我们熟悉QML类型系统和各种QML类型。QML文件中的类型可以来自不同的来源。QML文件中使用的不同类型概述如下:本地提供的QML基础类型,如int,bool,real和listJS类型,如var,Date和ArrayQML对象类型,如Item,R
2022-05-05 07:41:36
359
原创 ✿3-The Basics-GUI Design Using Qt Widgets
所有的小部件(widgets)都继承自QObject。QWidget是所有UI wdigets的父类,它包含绝大多数去描述一个小部件的属性,如geometry、color、mouse、keyboard、tooltips。所有继承自QObject的对象都有一个父子关系,这种关系让开发者更便利,如:当一个部件销毁时,所有它的子类都会被销毁。这避免了内存泄露。你可以查找一个给定的QWidget类,通过findChild()和findChildren。在一个QWidget里的子部件自动地包含于它的父部件
2022-05-03 22:27:52
929
原创 ✿3-The Basics-使用Qt Widgets进行GUI设计
目录介绍Qt widgets使用Qt Designer创建UI管理布局创建自定义部件介绍Qt widgetswidget(小部件)是GUI的基本元素,它也被称为UI控件。它从底层平台接受不同的用户事件,例如鼠标和键盘事件(以及其他事件)。我们使用不同的小部件创建UI。曾经有一段时间,所有GUI控件都是从头开始编写的。Qt小部件通过开发带有现成GUI控件的桌面GUI来减少时间,Qt广泛使用继承的概念。所有小部件都继承自QObject。QWidget是一个基本的小部件,是所有UI小部件的基类;它包含描述小部
2022-04-25 23:19:22
1178
原创 ♆1-OSG 概述
OSG组成模块OpenSceneGraph及其扩展位于系统的API一级,即系统的底层绘图硬件和相应的软件驱动程序之上封装了OpenGL,并对其余的底层图形显示方式予以支持,利用OpenSceneGraph可以轻松地开发其上层的应用程序。OSG层次结构图如下图所示:OSG主要包括4个库,下面分别进行介绍。...
2022-04-24 20:54:45
5452
原创 ◰GL-阴影贴图核心步骤
第一轮:在光源视角渲染场景1.创建自定义帧缓冲区glGenFramebuffers(1, &shadowBuffer);2.创建并绑定阴影纹理,设置阴影贴图及参数glGenTextures(1, &shadowTex);glBindTexture(GL_TEXTURE_2D, shadowTex);// specify a two-dimensional texture imageglTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONEN
2022-04-22 12:42:56
462
原创 ∑GL-透视投影矩阵的推导
计算机显示器是二维表面。由OpenGL渲染的3D场景必须作为2D图像投影到计算机屏幕上。投影矩阵用于此投影变换。首先,它将所有顶点数据从眼睛坐标转换为剪裁坐标。然后,通过与剪裁坐标的w分量相除,这些剪裁坐标也被转换为归一化设备坐标(NDC)。剪裁坐标:眼睛坐标现在与投影矩阵相乘,成为剪裁坐标。该投影矩阵定义了视锥体——顶点数据投影到屏幕上的方式(透视或正交)。之所以称为剪裁坐标,是因为变换后的顶点(x,y,z)是通过与±wclip进行比较来剪裁的。视锥体剔除(裁剪)操作是在剪裁坐标中执行的,正好在.
2022-04-22 11:23:15
1037
原创 ◰GL-着色器处理程序封装
#ifndef SHADER_H#define SHADER_H#include <fstream>#include <glm/glm.hpp>#include <iostream>#include <sstream>#include <string>class Shader { public: unsigned int ID; // constructor generates the shader on the fly
2022-04-22 07:55:09
164
原创 ✿2-The Basics-介绍Qt Creator
创建一个简单的Qt应用程序File->New->Application->Qt Widgets Application->Next->…->Finishmain.cpp#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(
2022-04-18 22:54:52
318
原创 ◮OpenGL-场景漫游(摄像机/键鼠控制)
目录摄像机/观察空间Look At自由移动移动速度视角移动欧拉角鼠标输入OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。本节我们将会讨论如何在OpenGL中配置一个摄像机,并且将会讨论FPS风格的摄像机,让你能够在3D场景中自由移动。我们也会讨论键盘和鼠标输入,最终完成一个自定义的摄像机类。摄像机/观察空间当我们讨论摄像机/观察空间(Camera/View Space)的时候,是在讨论以
2022-04-18 19:04:08
1973
原创 ◮OpenGL-文本渲染
目录经典文本渲染:位图字体现代文本渲染:FreeType更进一步使用像OpenGL这样的底层库来把文本渲染到屏幕上并不是一件简单的事情。如果你只需要绘制128种不同的字符(Character),那么事情可能会简单一些。但是如果你要绘制的字符有着不同的宽、高和边距,事情马上就复杂了。根据你使用语言的不同,你可能会需要多于128个字符。再者,如果你要绘制音乐符、数学符号这些特殊的符号;或者渲染竖排文本呢?一旦你把文本这些复杂的情况考虑进来,你就不会奇怪为什么OpenGL这样的底层API没有包含文本处理了。由
2022-04-17 10:21:02
1463
原创 ◮OpenGL-混合
目录混合概述丢弃片段混合渲染半透明纹理不要打乱顺序混合概述OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个有色玻璃窗是一个透明的物体,玻璃有它自己的颜色,但它最终的颜色还包含了玻璃之后所有物体的颜色。这也是混合这一名字的出处,我们混合(Blend)(不同物体的)多种颜色为一种颜色。所以透明度能让我们看穿物体。
2022-04-17 04:15:15
420
线性代数(同济大学 第6版) 高清 带书签
2018-08-04
高等数学(同济大学第7版)下册 高清 带书签
2018-08-04
HTML5 参考手册
2013-03-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人