自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(605)
  • 资源 (195)
  • 收藏
  • 关注

原创 windows下编译boost1.84.0库

在windows下Boost库编译

2024-03-06 11:37:33 485

原创 unreal engine5.1中设置convex decomposition凸包分解

unreal engine5.1中设置convex decomposition凸包分解

2024-02-16 15:27:14 463

原创 CMake Error at XXXCMakeLists.txt:3 (project): No CMAKE_CXX_COMPILER could be found. Tell CMake whe

严重性 代码 说明 项目 文件 行 禁止显示状态错误 CMake Error at E:\exercise\qtExercise\painterSelf\CMakeLists.txt:3 (project): No CMAKE_CXX_COMPILER could be found. Tell CMake where to find the compiler by setting either the environment variable "CXX" or the CMake cach

2024-01-27 09:51:50 683

原创 Qt5.15.2中加入图片资源

以前用的Qt5.15.2之前的版本,QtCreator默认的工程文件是*.pro,现在用5.15.2创建工程默认的工程文件是CMameList.txt,当然在创建项目时,仍然可以使用pro工程文件用QtCreator打开CMakeList.txt以前用习惯了pro文件,现在改成CMakeList很不习惯,现在我们在CMakeList.txt中加入资源文件。

2024-01-20 21:58:33 739

原创 c5060:out can‘t be used with used with non-varying visibility

GLSL language integration插件报错,c5060:out can't be used with used with non-varying visibility

2024-01-15 19:55:23 825

原创 法线制作神器crazybump 和 Normal Map Generator

一个免费在线法线贴图生成器(Normal Map Generator)和crazybump

2023-11-29 09:09:09 1484

原创 LogProperty:Error:FStructProperty::Serialize Loading:Property‘StructProperty/‘ Unknown structure

ue4打包错误

2023-10-23 15:55:06 510

原创 UE4中无法保存项目问题

UE4中无法保存项目问题

2023-10-13 17:07:59 1000

原创 在UE4虚幻引擎中加入导航网格体边界体积后丧尸不能移动和发现玩家

最近使用ue4做第一人称视角射击游戏发现问题,加入导航网格体边界体积后丧尸不能移动和发现玩家。下图是出现的问题图片。

2023-09-08 19:15:55 1105

原创 UE4拾取物品高亮显示

UE4拾取物品高亮显示

2023-08-14 20:15:21 769

原创 在Qt中使用LoadLibrary无法加载DLL

在Qt中使用LoadLibrary无法加载DLL

2023-08-11 16:40:09 1515

原创 武器换弹系统这节课出现的bug,角色不能正确掏枪了,只有换完弹夹以后才能正常掏枪了

在学习武器换弹系统这节课出现的bug,角色不能正确掏枪了,只有换完弹夹以后才能正常掏枪了,就是添加了换弹之后才影响了持枪功能,在换弹了以后持枪又变正常了。下面使用图片显示错误情况。

2023-08-10 20:21:32 191

原创 QtCreator5.15.2新建工程没有pro文件

QtCreator5.15.2新建工程没有pro文件

2023-08-08 14:31:19 1425

原创 UE4中创建的瞄准偏移或者混合空间无法拖入动画

UE4中创建的瞄准偏移或者混合空间无法拖入动画

2023-07-04 21:17:50 710

原创 Qt中使用QXmlStreamReader读取xml文件中遇到的问题

if(!while(!break;上面是第一段是xml文本,第二段是读取xml文件内容的代码简介, 对于 XML 的内容,通常情况下,我们只关心 XML 元素的解析。这时,可以通过 QXmlStreamReader 中的便利函数 readNextStartElement() 来实现。简述 详细介绍 使用 更多参考 详细介绍 之前使用的方式主要使用 readNext() 来读取下一个标记,并返回对应的类型。//获取XML编码,如果XML声明中未指定,则返回NULL。

2023-06-29 12:22:52 783 1

原创 Qt中QVector 、QList、QSet、QMap比较

QVector、QList、QSet、QMap 和 QQueue 是 Qt 框架中常用的容器类,它们在存储和组织数据上有一些区别。

2023-06-16 13:03:08 2497

原创 Qt下面窗口嵌套,嵌套窗口中包含:QGraphicsView、QGraphicsScene、QGraphicsIte

Qt下面窗口嵌套,嵌套窗口中包含:QGraphicsView、QGraphicsScene、QGraphicsIte

2023-06-13 22:56:13 2784 1

原创 QT 中使用QFile如何识别txt文件的编码格式:utf-8 ANSI

QT 中使用QFile如何识别txt文件的编码格式:utf-8 ANSI

2023-06-09 10:27:57 2111 1

原创 Qt中QFile类读取ansi编码格式txt文件,在QTextEdit控件中显示乱码

Qt中QFile类读取ansi编码格式txt文件,在QTextEdit控件中显示乱码

2023-06-08 15:56:32 2071

原创 在visual studio 2019调试模式下查看QTreeWidget、QTreeWidgetItem类型的变量的值

使用visual studio2019调试代码时,遇到QTreeWidget、QTreeWidgetItem类型的变量,如何查看节点和子节点的值呢,我在visual studio2019调试代码时,监视窗口显示如下:上图中cameraNode是一个QTreeWidgetItem类型的变量,我知道能看到这个cameraNode节点有三个子节点,但我不能看到她的子节点的名称等属性。于是我视图添加新的监视变量:cameraNode->text(0) 代表cameraNode的第一个子节点。

2023-05-30 15:20:43 461

原创 .vcxproj : error : 文件 E:\work\ImageManageSys\images\boat.png 包含在 None 和 None 项组中。项目项不允许这样做,它只能属于一个项

我使用visual studio 2019 打开QtCreator5,15,2创建的项目ImageManageSys,编译器拨错:ImageManageSys.vcxproj : error : 文件 E:\work\ImageManageSys\images\boat.png 包含在 None 和 None 项组中。项目项不允许这样做,它只能属于一个项组。

2023-05-30 10:15:03 368

原创 Qt中QSplitter使QWidget改变屏占比

Qt中QSplitter使QWidget改变屏占比

2023-05-19 10:44:11 1640

原创 error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl

2023-05-12 22:15:40 1051

原创 Qt使用QVBoxLayout布局器失效

Qt使用QVBoxLayout布局器失效

2023-05-11 17:10:22 1043

原创 系统错误 无法启动此程序,因为计算机中丢失MSVCP140_1.dll。尝试重新安装该程序已解决此问题

我在windows10系统,使用Qt5.15.2 打包命令:windeployqt.exe ImageManageSys.exe ,把ImageManageSys.exe 拷贝到windows7系统下,报错:ImageManageSys.exe - 系统错误 无法启动此程序,因为计算机中丢失MSVCP140_1.dll。尝试重新安装该程序已解决此问题。

2023-04-26 22:14:07 1821

原创 Project file already exist. ImageManageSys.vcxproj already exists.Select ‘OK‘ to regenerate the file

我已经安装了Qt visual studio tools插件,当我用visual studio 2019 导入Qt工程中的ImageManageSys.pro文件时,遇到提示: Project file already exist. ImageManageSys.vcxproj already exists.Select ‘OK’ to regenerate the file or ‘Cancel’ to quit importing the project.

2023-04-26 14:44:54 315

原创 c++STL标准库排序函数std::sort使用

else {在使用c++STL标准库排序函数std::sort编译器报错:1.E:\work\ImageManageSys\MainFramework.cpp:586: error: C3867: “MainFramework::sortStrips”: 非标准语法;请使用 “&” 来创建指向成员的指针。

2023-04-26 10:33:16 1951

原创 ProjectWin.obj:-1: error: LNK2001: 无法解析的外部符号 “private: static class ProjectWin * ProjectWin::m_pInst

今天写了一个单例模式,报错如下ProjectWin.obj👎 error: LNK2001: 无法解析的外部符号 “private: static class ProjectWin * ProjectWin::m_pInstance” (?debug\ImageManageSys.exe👎 error: LNK1120: 1 个无法解析的外部命令例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2023-04-24 15:09:25 306

原创 windows下安装emscripten

由于Web端需要处理大量图像,大量图片的分辨率8k*8k,使用Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。当加载到10张以上的图片时,在Canvas上放大到3倍以上时,不管CPU、GPU如何强悍,但是性能依然达不到要求。只好使用Qt C++中的Graphics来处理,这要就涉及到Web JavaScript调用Qt,就需要用到Emscripten SDK(emsdk)。

2023-04-23 11:31:45 1714 2

原创 QTreeWidget中MainWindow窗体中布局器不起作用

QTreeWidget中MainWindow窗体中布局器不起作用

2023-04-17 20:00:12 260

原创 krita源码提供了Tarball 和KDE Repository两套源码的区别

krita源码提供了Tarball 和KDE Repository两套源码的区别

2023-04-15 09:45:24 525

原创 windows10下使用minGW64 编译krita源码报错

windows10下使用minGW64 编译krita源码报错[plugins\color\lcms2engine\CMakeFiles\kritalcmsengine.dir\build.make:614: bin/kritalcmsengine.dll] Error 1mingw32-make[1]: *** [CMakeFiles\Makefile2:27046: plugins/color/lcms2engine/CMake

2023-04-14 14:37:59 1084

原创 我在windows10下,使用CMake gui 编译krita源码,CMake gui报错:LibMyPaint_DIR-NOTFOUND

我在windows10下,使用CMake gui 编译krita源码,CMake gui报错:LibMyPaint_DIR-NOTFOUND

2023-04-14 11:32:09 594

原创 我在windows10下,使用CMake gui 编译krita源码

我在windows10下,使用CMake gui 编译krita源码。

2023-04-13 16:41:44 686

原创 mingw32-make -j$(nproc) 命令含义

mingw32-make -j$(nproc) 命令含义

2023-04-13 10:39:18 1623

原创 我在windows10下,使用msys64 mingw64终端

我在windows10下,使用msys64 mingw64终端

2023-04-13 07:35:04 2001

原创 Bandizip已管理员身份运行

Bandizip已管理员身份运行

2023-04-13 07:16:13 580

原创 CMake GUI工具使用 MinGW 64构建工程

CMake GUI工具使用 MinGW 64构建工程

2023-04-11 21:08:15 1461

原创 Windows 10 上使用 CMake GUI 编译 Krita 源代码并使用 MinGW 64 作为构建工具

Windows 10 上使用 CMake GUI 编译 Krita 源代码并使用 MinGW 64 作为构建工具

2023-04-11 19:47:06 926

原创 QT5.15.2 在线安装下载速度慢的解决办法

QT5.15.2 在线安装下载速度慢的解决办法

2023-04-11 18:42:53 5726 6

使用openGL、glad、glfw、stb-image创建鼠标和键盘wsad控制窗口内的视口,并加载纹理

使用openGL、glad、glfw创建鼠标和键盘wsad控制窗口内的视口,并加载纹理,封装了openGL中的相机、矩阵变换、纹理处理,窗口键盘鼠标事件响应,参考learn openGL

2024-03-20

QGraphicsItem、QGraphicsView、QGraphicsScene封装

QGraphicsItem、QGraphicsView、QGraphicsScene封装自定义

2023-04-02

Qt QListWidget传入多张图片

Qt QListWidget传入多张图片,QListWidget样式设置,QListWidget是继承QListView,QListView是基于Model的,需要自己来建模(如建立QStringListModel,QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定的了解,而QListWidget是一个升级版本的QListView,它已经为我们建立了一个数据存储模型QListWidgetItem,操作方便,直接调用addItem即可添加Item项。

2023-03-20

Qt中QMap和QMultimap使用

QMap 是Qt的通用容器类之一。它存储(键,值) 对,并提供与键相关联的值的快速查找。其实就是一个键值对的集合,经常使用的。具体更详细还得看看帮助文档 QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快。QMap中的数据都是成对出现的,第一个称为key(键),第二个称value(键值)。

2023-03-19

QT使用QListWidget显示多张图片

使用了QListWidget,QDockWidget QListWidget类提供了一个基于项目的列表小部件 QListWidget是一个方便的类,它提供了一个列表视图,类似于QListView提供的列表视图,但是具有一个用于添加和删除项的经典基于项的接口。QListWidget使用一个内部模型来管理列表中的每个QListWidgetItem。要获得更灵活的列表视图小部件,请使用带有标准模型的QListView类。列表小部件的构造方法与其他小部件相同。QListWidget与QListView类似,都可以显示一列Item,区别在于前者可以往其中增删Item。 QListWidget确定可以同时选择列表中的多少项,以及是否可以创建复杂的项选择。这可以使用函数设置

2023-03-10

Qt QDockWidget、QtreeWidget界面实现

Qt QDockWidget、QtreeWidget界面实现 ,QDockWidget提供了dock widget的概念,也称为工具面板或实用工具窗口

2023-03-09

openCV加载jpg图片完整代码

openCV加载jpg图片完整代码,包含完整头文件、lib、dll无需安装和配置opencv就可以运行

2023-02-23

QTreeWidgetItem的setData(int column,int role,QVariant& data)等,

Qt中QVariant是多种类型的联合,QVariant类中有个SetValue(T& value)方法,将自定义 T 类型的数据保存到QVariant对象中,可以理解为是自定义类型被封装成了QVariant的形式,这样,我们自定义的T类型的对象就能够通过所有参数和返回值为QVarian类型传递。比如QTableWidgetItem的setData(int column,QVariant& data)和QTreeWidgetItem的setData(int column,int role,QVariant& data)等,通过setData函数我们可以为每个单元格保存自己想绑定的数据及为每个树节点保存想绑定的自定义类型的数据。   但是,QVariant中的setValue方法的使用有个前提,就是我们自定义的类型要能被Qt所识别。那该怎样识别呢?   这就要用到宏定义Q_DECLARE_METATYPE了,通过这个宏定义可以将自定义的类型注册到Qt的元类型中,从而被Qt识别,通常在自定义类型定义之后使用。

2022-09-16

QStackedWidget 控件使用详解

QStackedWidget 控件相当于一个容器,提供一个空间来存放一系列的控件,并且每次只能有一个控件是可见的,即被设置为当前的控件。QStackedWidget可用于创建类似于QTabWidget提供的用户界面。它是一个构建在QStackedLayout类之上的方便布局小部件。与QStackedLayout一样,QStacked Widget可以构建并填充许多子Widget(“页面”):

2022-09-07

QTreeWidget类是一个方便的类,它提供了一个标准tree小部件与一个典型的基于项目所使用的接口类似QListView

QTreeWidget类是一个方便的类,它提供了一个标准tree小部件与一个典型的基于项目所使用的接口类似QListView Qt 3类。这个类是基于Qt的模型/视图的体系结构,使用一个默认的模型项目,每一个都是一个QTreeWidgetItem。      开发人员不需要模型/视图框架的灵活性可以使用这个类来创建简单的分层列表。更灵活的方法是结合QTreeView标准项目模型。这允许存储的数据是与它的表示分离。 在其最简单的形式,一个tree小部件可以构建在以下方式

2022-09-02

QTreeWidget用法并解决中文乱码问题 QTreeWidgetItem

QTreeWidget用法并解决中文乱码问题 Qt中实现树形结构可以使用QTreeWidget类,QTreeWidgetItem,也可以使用QTreeView类,QTreeWidget继承自QTreeView类。

2022-08-31

openSceneGraph3.5.1编译

osg3.5.1_windows_lib_dll_debug_release,openSceneGraph3.5.1编译 OpenSceneGraph3.5.1在windows10、visual studio2019编译的动态库和静态库

2022-08-23

Movie To GIF 主要特点 将视频转换为动画 GIF 将 AVI,MPEG,MKV,MP4,WMV,MOV 和 RM 等

Movie To GIF 主要特点 将视频转换为动画 GIF 将 AVI,MPEG,MKV,MP4,WMV,MOV 和 RM 等视频文件转换为动画 GIF 文件,同时保持原始播放速率和分辨率。 调整 将输出图像文件的分辨率保持为原始分辨率,或根据需要设置新大小。 帧率 用户可以更改输出帧速率的值(每秒多少图片)来控制剪辑的速度。 颜色 用户可以选择 GIF 的颜色。 支持运行平台: NT/2000/XP/Vista/Win7/8/10 支持语言: English/German/Spanish/Italian/French/Chinese/Japanese Movie to GIF 提供了在 GIF 文件中播放视频片段的选项。 您可以每秒设置更多帧,因此输出 GIF 显示为原始视频,或者为较小的动画GIF文件设置较少的帧数。 GIF 的宽度和高度也可调节。 Movie To GIF 许可证 免费软件

2022-08-22

今天在windows7下安装qt-opensource-windows-x86-5.12.9报错: gdb.exe -系统错误

今天在windows7下安装qt-opensource-windows-x86-5.12.9报错: gdb.exe -系统错误 无法启动此程序,因为计算机中丢失api-ms-win-core-path-l1-1-0.dll。尝试重新安装该程序以解决此问题

2022-08-17

ofstream,ifstream,fstream读写文件

在编程总经常会用到读写文件,基本都是使用ofstream,ifstream,fstream

2022-08-01

QTreeWidget是实现树形结构的类,在很多软件中都可以看到类似树形结构的界面

QTreeWidget是实现树形结构的类,在很多软件中都可以看到类似树形结构的界面 1.QTreeWidget树上添加图片 2.QTreeWidget动态加载,双击书上每个子节点,树会自动添加子节点

2022-07-22

vtk加载stl格式三维模型,完整代码包括所有的头文件,lib库和dll库

vtk加载stl格式三维模型,完整代码包括所有的头文件,lib库和dll库,解析STL文件

2022-07-17

Qt不同类进行信号与槽建立,并传递参数

Qt不同类进行信号与槽建立,并传递参数,Qt不同类之间槽函数连接

2022-07-05

Qt中使用QDomDocument和QDomnode来读取xml

Qt中使用QDomDocument和QDomnode来读取xml 内容简介:一.对QDomDocument和QDomnode的理解QDom前缀的都是代表节点类型。所以有,QDomElement代表一个Element节点,而QDomText代表一个Text节点。QDomNode类可以存储任意类型的节点。如果想进一步处理一个节点,首先必须把它转化为正确的数据类型。QDomNode调用toElement()以把它转化成QDomElement,然后调用tagName()来获得元素的标签名称。如果节点不是Element类型,那么toElement()函数就返回一个空QDomElement对

2022-06-29

opengl实现骨骼动画,用到glaux,glut

opengl实现骨骼动画,用到glaux,glut,包含身体各个部分:头文小腿,大腿,自定义运动角度

2022-06-15

osg(OpenSceneGraph)多窗口渲染

osg(OpenSceneGraph)多窗口渲染 在不同的窗口渲染不同的场景

2022-06-14

osg(OpenSceneGraph)添加纹理

osg(OpenSceneGraph)添加纹理 OSG为模型添加纹理图片共分为两种方式,一种是自动方式,一种自定义顶点方式设置纹理坐标。

2022-06-14

openGL曲面细分地形、高度图的细分

,在顶点着色器中执行高度贴图可能会遇到顶点数量不足以用来渲染所需的细 节的情况。现在我们有了生成大量顶点的方法,让我们回到Hastings-Trew 的月球表面纹理 贴图[HT16]并将其用作高度贴图,提升曲面细分顶点来生成月球表面细节。正如我们将看到 的,这具有一些优点,可以让顶点的几何形状更好地匹配月亮图像,并且提升轮廓(边缘) 细节。

2022-05-02

opengl贝塞尔曲面细分,win7+VS017,win10+vs2019版本

opengl贝塞尔曲面细分,win7+VS017,win10+vs2019版本 现在让我们扩展我们的程序,使它将我们简单的矩形网格转换为贝塞尔曲面。细分网格 应该为我们提供了足够的顶点来对曲面进行采样(如果我们想要更多的话,我们可以增加 内部/外部细分级别)。我们现在需要的是通过管线发送控制点,然后使用这些控制点执行计 算以将细分网格转换为我们所需的贝塞尔曲面。

2022-04-25

opengl贝塞尔曲面细分

现在让我们扩展我们的程序,使它将我们简单的矩形网格转换为贝塞尔曲面。细分网格 应该为我们提供了足够的顶点来对曲面进行采样(如果我们想要更多的话,我们可以增加 内部/外部细分级别)。我们现在需要的是通过管线发送控制点,然后使用这些控制点执行计 算以将细分网格转换为我们所需的贝塞尔曲面。 假设我们希望建立一个立方体贝塞尔曲面,我们将需要16 个控制点。我们可以通过VBO 从C++端发送它们,或者我们可以在顶点着色器中硬编码写死它们。 现在是更准确地解释曲面细分控制着色器(TCS)如何工作的好时机。与顶点着色器类 似,TCS 对每个传入顶点执行一次。另外,回想一下第2 章,OpenGL 提供了一个名为 gl_VertexID 的内置变量,它保存一个计数器,指示顶点着色器当前正在执行哪次调用。曲 面细分控制着色器中存在一个类似的内置变量gl_InvocationID。 曲面细分的一个强大功能是TCS(以及TES)着色器可以同时访问数组中的所有控制 点顶点。首先,当每个调用都可以访问所有顶点时,TCS 对每个顶点执行一次可能会让人 感到困惑。在每个TCS 调用中,冗余地在赋值语句中指定曲面细分级

2022-04-12

OpenGL 对硬件曲面细分的支持,通过3 个管线阶段提供: (1)曲面细分控制着色器; (2)曲面细分器; (3)曲面细分评估

OpenGL 对硬件曲面细分的支持,通过3 个管线阶段提供: (1)曲面细分控制着色器; (2)曲面细分器; (3)曲面细分评估着色器。 (1)C++/OpenGL 应用程序: 创建一个摄像机和相关的MVP 矩阵,视图(v)和投影(p)矩阵确定摄像机朝向,模 型(m)矩阵可用于修改网格的位置和方向。 (2)顶点着色器: 在这个例子中基本上什么都不做,顶点将在曲面细分器中生成。 (3)曲面细分控制着色器: 指定曲面细分器要构建的网格。 (4)曲面细分评估着色器: 将MVP 矩阵应用于网格中的顶点。 (5)片段着色器: 只需为每个像素输出固定颜色。 曲面细分器生成由两个参数定义的顶点网格:内层级别和外层级别。在这种情况下, 内层级别为12,外层级别为6——网格的外边缘被分为6 段,而跨越内部的线被分为 12 段。 程序12.1 中的特别相关的新结构被高亮显示。让我们首先讨论第一部分——C++/ OpenGL 代码。 编译这两个新着色器,跟顶点和片段着色器完全相同。然后将它们附加到同一个渲染程 序,并且链接调用保持不变。唯一的新项目是用于指定要实例化的着色器类型的常量——新 常量如下: G

2022-04-09

openGL增强表面细节,模拟地球表面地形

1.openGL增强表面细节,模拟地球表面地形,使用高度贴图实现 2.现在我们扩展法线贴图的概念——从纹理图像用于扰动法向量到扰乱顶点位置本身。实 际上,以这种方式修改对象的几何体具有一定的优势,例如使表面特征沿着对象的边缘可 见,并使特征能够响应阴影贴图。我们将会看到,它还可以帮助构建地形。 3.一种实用的方法是使用纹理图像来存储高度值,然后使用该高度值来提升(或降低)顶 点位置。含有高度信息的图像称为高度图,使用高度图更改对象的顶点的方法称为高度贴 图①。高度图通常将高度信息编码为灰度颜色:(0,0,0)(黑色)=低高度,(1,1,1)(白色)=高高度。这样一来通过算法或使用“画图”程序就可以轻松创建高度图。图像的对比度越 高,其表示的高度变化越大 4.改变顶点位置是否有用取决于改变的模型。顶点操作可以在顶点着色器中轻松完成,当 模型顶点细节级别够高(例如在足够高精度的球体中)时,改变顶点高度的方法效果很好。 但是,当模型的顶点数量很少(例如立方体的角)时,渲染对象的表面需要依赖于光栅器 中的顶点插值来填充细节。当顶点着色器中可用于改变高度的顶点很少时,许多像素的高 度将无法从高度

2022-03-26

openGL高度贴图,使用纹理图像来存储高度值,然后使用该高度值来提升(或降低)顶 点位置。

1.现在我们扩展法线贴图的概念——从纹理图像用于扰动法向量到扰乱顶点位置本身。实 际上,以这种方式修改对象的几何体具有一定的优势,例如使表面特征沿着对象的边缘可 见,并使特征能够响应阴影贴图。我们将会看到,它还可以帮助构建地形。 2.openGL高度贴图,使用纹理图像来存储高度值,然后使用该高度值来提升(或降低)顶 点位置。含有高度信息的图像称为高度图,使用高度图更改对象的顶点的方法称为高度贴 图 3. 高度图通常将高度信息编码为灰度颜色:(0,0,0)(黑色)=低高度,(1,1,1)(白色)=高高度。这样一来通过算法或使用“画图”程序就可以轻松创建高度图。图像的对比度越高,其表示的高度变化越大。 4.改变顶点位置是否有用取决于改变的模型。顶点操作可以在顶点着色器中轻松完成,当 模型顶点细节级别够高(例如在足够高精度的球体中)时,改变顶点高度的方法效果很好。但是,当模型的顶点数量很少(例如立方体的角)时,渲染对象的表面需要依赖于光栅器中的顶点插值来填充细节。 5.当顶点着色器中可用于改变高度的顶点很少时,许多像素的高 度将无法从高度图中检索,而需要由插值生成,从而导致表面细节较差。当然

2022-03-26

openGL法线贴图混合纹理贴图以达到更好的物体表面细节

openGL法线贴图混合纹理贴图以达到更好的物体表面细节 1.凹凸贴图是使用数学公式产生物体表面凹凸特效 2.凹凸贴图的一种替代方法是使用查找表来替换法向量 3.一种使用查找表的常见方法叫作法线贴图。 4.法线贴图使用一个图像文件(称为法线贴图),该图像文件包含在光照下所期望表面外 观的法向量。

2022-03-20

openGL法线贴图原理以及实现方法

1.凹凸贴图的一种替代方法是使用查找表来替换法向量。这样我们就可以在不依赖数学函 数的情况下,对凸起进行构造,例如月球上的陨石坑所对应的凸起。一种使用查找表的常 见方法叫作法线贴图。 2.为了理解法线贴图的工作原理,我们首先注意,向量通过3 字节存储,X、Y 和Z 分量 各占1 字节,就可以达到合理的精度。 3.这样,我们就可以将法向量存储在彩色图像文件中, 其中R、G 和B 分量分别对应于X、Y 和Z。图像中的RGB 值以字节存储,通常被解释为[0…1] 范围内的值,但是向量可以有正负值分量。如果我们将法向量分量限制在[−1…+1]范围内, 那么在图像文件中将法向量N 存储为像素的简单转换是:

2022-03-14

openGL环境贴图,反射向量可用来直接访问纹理立方体贴图。当立方体 贴图用于上述功能时,称其为环境贴图

1.。这些物体在有小范围镜面高光的同时,还能够反射出周围 物体的镜像 2.反射向量可用来直接访问纹理立方体贴图。当立方体 贴图用于上述功能时,称其为环境贴图

2022-03-12

1.实现凹凸表面相关的方法,通过使用光照效果 2.即使在实际对象模型表面平滑的情况下,也能使对象看起来具有逼真的表面纹理

1.实现凹凸表面相关的方法,通过使用光照效果 2.即使在实际对象模型表面平滑的情况下,也能使对象看起来具有逼真的表面纹理 3.将首先观察凹凸贴图和法线贴图 4.当直接为对象添加微小表面细节会使得计算代价过高时,它们可以 为场景中的对象增加相当程度的真实感

2022-03-10

openGL天空盒实现

天空盒的概念非常巧妙而又简单: (1)实例化一个立方体对象; (2)将立方体的纹理设置为所需的环境; (3)将立方体围绕相机放置。

2022-03-10

openGL实现天空盒,使用OpenGL 立方体贴图

1.构建天空盒的另一种方法是使用OpenGL 纹理立方体贴图。OpenGL 立方体贴图比我们 在上一节中看到的简单方法稍微复杂一点。但是,使用OpenGL 立方体贴图有自己的优点, 例如减少接缝以及支持环境贴图。 2.OpenGL 纹理立方体贴图类似于稍后将要研究的3D 纹理,它们都使用3 个纹理坐标访 问——通常标记为(s, t, r)——而不是我们目前为止用到的两个。OpenGL 纹理立方体贴图 的另一个特性是,其中的图像以纹理图像的左上角(而不是通常的左下角)作为纹理坐标 (0, 0, 0),这通常是混乱产生的源头。

2022-03-02

openGL绘制天空盒背景

1.openGL绘制天空盒背景 2.加入天空盒纹理 3.添加鼠标键盘事件

2022-03-01

openGL软阴影,消除硬阴影,消除阴影中的锯齿,和伪影

1.openGL软阴影,消除硬阴影,消除阴影中的锯齿,和伪影 2.生成柔和阴影——百分比邻近滤波(PCF) 3.有多种方法可以用来模拟半影效果以在软件中生成柔和阴影。最简单也最常见的一种方 法叫作百分比邻近滤波(Percentage Closer Filtering,PCF) 4.在PCF 中,我们对单个点周围 的几个位置的阴影纹理进行采样,以估计附近位置在阴影中的百分比。

2022-02-28

目前我们所展示的阴影生成方法都仅限于生成硬阴影,即带锐边的阴影。

1.目前我们所展示的阴影生成方法都仅限于生成硬阴影,即带锐边的阴影。 2.但是,现实世界中出现的大多数阴影都是柔和阴影。它们的边缘都会发生不同程度的模糊 3.柔和阴影的成因有很多,同时也有许多类型的柔和阴影。通常在自然界中产生柔和阴影 原因是,真实世界的光源很少是点光源——它们常常是区域光源。另一个原因是材料和表面 的缺陷积累,以及物体本身通过其自身的反射特性产生环境光的作用。

2022-02-28

openGL阴影贴图 阴影贴图是用于投射阴影最实用也最流行的方法之一。

1.阴影贴图是用于投射阴影最实用也最流行的方法之一。虽然它并不总是像阴影体一样准 确(且通常伴随着讨厌的伪影),但阴影贴图实现起来更简单,可以在各种情况下使用,并 享有强大的硬件支持。 2.阴影贴图基于一个非常简明的想法:光线无法看到的任何东西都在阴影中。也就是说, 如果对象#1 阻挡光到达对象#2,等同于光不能“看到”对象#2。

2022-02-28

openGL加载obj三维模型,并且在模型上添加光照

1.openGL加载obj三维模型, 2.并且在模型上添加光照 3.Blinn-Phong 着色

2022-02-22

使用openGL实现波浪效果,基于MFC

使用openGL实现波浪效果,基于MFC 使用freeglut

2022-02-21

空空如也

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

TA关注的人

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