- 博客(136)
- 资源 (8)
- 收藏
- 关注

原创 OpenGL中的变换
OpenGL中的变换1. 矩阵变换1.1 缩放1.2 平移1.3 旋转1.4 矩阵组合2. 案例实现2.1 缩放:2.1.1 等比缩放2.1.2 不等比缩放2.1.3 镜像X方向2.1.4 镜像Y方向2.2 平移2.2.1 动态平移2.3 旋转2.3.1 动态旋转2.4 组合变换2.4.1 复杂的组合变换1. 矩阵变换在opengl中矩阵变换使用的为齐次坐标;使用齐次坐标有几点好处:它允许我们在3D向量上进行位移,同时也方便使用透视投影操作。本篇文章主要偏向于实现,不深究理论的知识。1.1 缩放为向
2022-04-10 21:31:26
1467

原创 OpenGL纹理叠加
OpenGL纹理叠加1. 纹理贴图的实现2. 纹理单元在OpenGL纹理贴图的基础上继续深入学习纹理相关内容,本篇文章的主要目的是为了实现OpenGL纹理叠加,需要引入纹理单元的相关概念。1. 纹理贴图的实现按照之前纹理贴图的实现方法在两个三角形组成的矩形内贴上星空和胡桃如下所示2. 纹理单元之前在绘制纹理贴图时着色器的编写如下所示:#version 330 coreout vec4 FragColor;in vec3 ourColor;in vec2 TexCoord;// t
2022-04-10 11:02:03
1830
4

原创 OpenGL纹理贴图
OpenGL纹理1. 基本概念2. 纹理环绕方式3. 纹理过滤3.1 GL_NEAREST3.2 GL_LINEAR3.3 多级渐远纹理 (Mipmap)4. 纹理加载与创建4.1 纹理加载4.2 纹理创建4.3 纹理的使用1. 基本概念纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来表示物体的细节特征,希望绘制一个有足够多细节的物体,当然可以用足够多的顶点颜色来描述,但是无疑也增加了许多额外的开销;另一种办法就是使用纹理。学习之前先展示一张实现的纹理图以更好理解纹理!还是这张图为了将纹
2022-04-09 20:56:30
8525

原创 OpenGL可编程着色器
OpenGL着色器1. 着色器语言(GLSL)1.1 一个典型的着色器的基本组成着色器(Shader)是运行在GPU上的程序,是一种把输入转化为输出的程序,着色器之间的通信只能依靠输入与输出。1. 着色器语言(GLSL)着色器依靠着色器语言实现编写,包含一些针对向量和矩阵操作的有用特性1.1 一个典型的着色器的基本组成#version version_number //声明版本in type in_variable_name;//in 输入变量in type in_variab
2022-04-08 21:17:47
782

原创 csdn Markdown样式
优快云 markdown样式文字样式段落格式图片样式分享一些表情文字样式👉字体样式<font face="宋体">你真帅</font><font face="黑体">你真帅</font><font face="微软雅黑">你真帅</font>你真帅你真帅你真帅👉字体颜色<font color=#FF0000> 你真帅 </font><font color=#32CD32> 你
2022-04-02 22:15:15
1433

原创 abaqus三点弯曲有限元模拟
ABAQUS三点弯曲有限元分析1.先创建梁模型125*25*252.生成三个三维离散刚性的圆柱,在工具》参考点中设置如图黄色所示的参考点,并在加工》壳》使用实体中选中模型中键完成2.属性设置,设置材料参数,材料行为中应该包括柔性损伤、密度、弹性、塑性(这些参数依据实际材料属性确定),由于圆柱为刚体,在设置过程中只需要设置梁的属性即可。将模型装配起来,结果如下所示设置分析步分析步选择 动力,显示 时长0.001在场输出中 状态/场/用户/...
2020-08-09 15:25:53
10972
7
原创 我的创作纪念日
提示:你过去写得最好的一段代码是什么?提示:当前创作和你的工作、学习是什么样的关系。提示:在创作的过程中都有哪些收获。提示:职业规划、创作规划等。
2025-01-12 14:06:26
233
原创 typedef重复定义解决方法
如果头文件sm_system.h和math.h中均包含"typedef xxxx float_t"语句,那么使用如下的头文件包含方法:
2023-07-11 21:05:51
1374
原创 VS多处理器编译提高编译速度
开启多处理器编译能够提升编译速度,特别是当工程巨大时候,编译速度往往很慢,打开多处理器编译效果明显,下面给出设置和对比。
2023-07-06 10:57:08
1147
1
原创 渲染时场景变化平面始终朝向屏幕的操作方法
渲染过程中在实现一些贴图或者字符时希望当场景中相机视角发生变化或者物体发生位置变化时,贴图或者字符始终正面朝向屏幕即平面的法线需要始终朝向屏幕,这个问题有两种解决方法。
2023-04-28 15:08:31
375
原创 延迟渲染 Deferred Rendering
经过顶点着色器之后就到了曲面细分着色器,这个阶段是可选的,用来给模型的表面增加顶点数,并且产生更细微的凹凸,当然游戏中的大部分模型是不会做这个阶段的计算的,一般用在高质量游戏的渲染。前向渲染有一个问题就是无效渲染太多,比如场景中有四个物体,互相之间存在叠压关系,按照前向渲染的流程,先前渲染了一个物体之后,它的一部分被后一个渲染的物体挡住了,那么被挡住的这部分就是无效的计算,毕竟我们在屏幕上是看不到这部分的。延迟渲染可以支持大量的实时光照,所以现在的大型电脑游戏基本都已经是延迟渲染了。
2023-04-23 09:36:49
820
原创 VScode怎么将字体灵活缩放
VScode整体还是比较轻量级且强大的,但是刚开始用的时候发现字体是固定的,网上很多教程教怎么设置固定大小,但还是无法很舒服的操作,这边主要教大家怎么简单一步将字体灵活缩放。
2023-03-06 21:18:21
603
原创 opengles共享纹理
而OpenGL扩展则定义了一组新的OpenGL ES纹理目标,可以将EGLImageKHR对象绑定到这些纹理目标上。OpenGL ES 3.0中引入的“外部纹理”(External Textures)扩展,允许将OpenGL纹理对象绑定到由外部API创建的纹理对象,例如相机采集到的图像、视频流或其他图像数据。外部纹理扩展提供了一种标准化的方式,让不同的API(如相机API和OpenGL)之间进行数据传输,从而避免了通过复制数据到系统内存再从系统内存传输到GPU内存的过程,提高了数据传输的效率和性能。
2023-02-26 16:36:41
1141
原创 WSL2 Ubuntu+gnome图形界面的安装血泪史(亲测有效)
这边已经升级为WSL2,官方资料说明其可以使用windows下的显卡驱动,嗯就很香~,言归正传,看看如何配置WSL2 Ubuntu+gnome图形界面。网上的参考资料基本没说清楚是用真linux还是虚拟机下的ubuntu,这点我绕了很多的弯路,也尝试了大部分比较靠谱的资料最后均无法实现!这边又有一个大坑,很多人在这边发现屏幕还是黑屏,我来来回回试了30多次吧,均也是这种情况,这时候可以去看看是不是VcXsrv被防火墙给拦截了。首先打开windows应用商店,输入ubuntu,这边我下载的是。
2023-01-18 10:56:07
28870
57
原创 windows创建窗口
一般来讲,要绘制或者渲染目标物体首先需要创建窗口,通常需要配合渲染API(opengl directx 等)来实现。这边主要介绍的是windows上最基本的窗口创建方式,抛弃MFC等内部创建调用的方式,通过最底层的调用来实现窗口的创建。
2023-01-10 21:44:33
1068
原创 HLSL笔记
常量缓冲区允许C++端将数据传递给HLSL中使用,在HLSL端,这些传递过来的数据不可更改,因而是常量。常量缓冲区对这种使用方式有所优化,表现为低延迟的访问和允许来自CPU的频繁更新,因此他们有额外的大小、布局和访问限制。c++端通过ID3D11DeviceContext::*SSetConstantBuffers指定特定的槽(slot)来给某一着色器阶段对应的寄存器索引提供常量缓冲区的数据。常量缓冲区(Constant Buffer)
2023-01-04 10:56:19
315
原创 VS在输出窗口显示信息
VS输出窗口的信息传给函数,函数内部调用系统函数OutputDebugString(),就可以把调试信息打印到输出窗口。
2022-11-01 09:54:58
1446
原创 linux命令与makefile学习
Linux上有一句话:一切皆文件普通文件 “-”目录文件 “d” (directory)管道文件 “p” (piping)链接文件“l” (link)接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。从左至右用 0-9 这些数字来表示。第 0 位确定文件类
2022-10-30 21:18:30
957
原创 渲染到纹理RTT
创建一张纹理,纹理分辨率由用户设置,创建渲染目标视图,根据纹理宽高重新设置透视投影函数的宽高比以及视口的宽高,绘制目标模型,创建一张纹理D3D11_USAGE_STAGING,设置cpu可读,将数据从GPU拷贝到CPU,将读取的数据保存成jpg图片,然后恢复(与窗口一致)视口及透视投影函数的宽高,然后将Backbuffer与渲染目标视图绑定,绘制到后台缓冲,通过present显示到窗口。1.先创建帧缓冲可以查看。
2022-10-19 19:59:08
98
原创 d3d11释放问题
释放过程中遇到明明已经调用release()但是内存却没有下降,后来查看了其计数器n发现其不为0,也就是没释放干净,只是内部引用数减1。只有当内部引用数到达0时才会真正释放,因此我们需要将其释放直至计数为0或者可以使用。
2022-10-10 14:39:30
377
原创 gamma校正
而为了获取光照参数的纹理,像specular贴图和法线贴图几乎都在线性空间中,所以如果把它们也配置为sRGB纹理的话,光照就坏掉了。双曲线比使用二次函数变体在不用gamma校正的时候看起来更真实,不过但我们开启gamma校正以后线性衰减看起来太弱了,符合物理的二次函数突然出现了更好的效果。真实的物理世界中,光照的衰减和光源的距离的平方成反比。这种差异产生的原因是,光的衰减方程改变了亮度值,而且屏幕上显示出来的不是线性空间,所以在监视器上效果最好的衰减方程,并不是符合物理的。这和物理公式是很相似的。
2022-10-05 15:07:44
1564
原创 目标物体缩放方法
可以看出当h值不变,FOV越小,f值将会变大,那么其实我们能够看到更远的东西,相对画面大小不变,物体也就越大。相反如果h不变,视场角越大,焦距也就越小,能够看到的物体会越多,也越小。最容易想到的方法是通过改变相机的位置,将相机靠近或者远离目标物体从而实现物体大小的放大或者缩小。定义好传感器的高度h,和焦距f,能很轻松的算出。视场角FOV(Field of view)
2022-10-04 22:35:38
326
原创 MFC按钮禁用实现
遇到一个很蠢的问题(每次禁用后就自己变成可以用的),结果弄了一下午才发现问题。结果就是不断更新,导致即使我已经将按钮都置为禁用,但是还是没有效果。函数,该函数能够实现循环,在函数体内我又写了。...
2022-08-06 17:55:39
1220
原创 实时渲染和离线渲染
实时渲染指的是一边计算画面,一边输出显示。特点是:能实时操控、实时交互,并且以极高的速度将3D图像处理了,同时实现了逼真的效果。实时渲染更多的是关注实时性与交互性,通常制作的场景是需要进行优化的,这样才可以提高计算画面速度,同时缩短延时。实时渲染的实时性是十分重要的,因为用户不论操作了了什么,都是需要得到实时的反馈结果的,例如,用户在键盘的输入,鼠标的电机等的操作,这些操作都会导致画面进行重新计算,得出新的结果。优点是可以实时操控(实现三维游戏、军事仿真、灾难模拟等)缺点是要受系统的负荷能力的限制,必
2022-07-03 10:56:46
2883
原创 VS2019CPU/内存诊断功能
在代码运行过程中,有时候会出现内存泄漏,内存/CPU占用过高等情况,这些情况的出现十分影响代码的运行效率和鲁棒性,所以有必要对代码进行诊断和优化处理。这边使用VS2019自带的代码诊断工具进行检测。具体的操作方法是先在要诊断的代码部分添加断点或者让程序完整运行起来(最好是能够循环)运行代码(这边以绘制三角形为例子,屏幕是不断在刷新的)可以看到内存/CPU的运行状况这边以CPU使用率为例子,内存的占用查看也一样。选择一段或者是整段运行过程点击CPU使用率,再点击全部中断即可查看CPU占用情况CPU占用情
2022-06-16 12:25:05
8331
opengl+imgui实现3d模型渲染
2024-06-29
Typora markdown编辑器
2022-04-26
emmit 插件pyv8.zip
2020-05-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人