ANR崩溃日志查看方法
=== 参考:https://zhuanlan.zhihu.com/p/378902923
=== 参考:https://zhuanlan.zhihu.com/p/378902923
不使用位运算,可以通过数学方法来计算short类型的变量w的低八位x和高八位y。 具体步骤如下: 计算低八位x: x是w对256取模的结果,即x = w % 256。 计算高八位y: 根据等式 x + y * 256 = w; y是w除以256的结果,即y = (w-x) / 256。 下面是C++代码实现: `#include int main() { short w = 773; // 计算低八位 unsigned char x = w % 256; // 计算高八位 unsigned char y = (w-x) / 256; std::cout
https://liyanliangpublic.oss-cn-hongkong.aliyuncs.com/img/03.%E4%B8%80%E5%9B%BE%E8%AF%BB%E6%87%82PBR.png IBL 通常使用(取自现实世界或从3D场景生成的)环境立方体贴图 (Cubemap) ,可以将立方体贴图的每个像素视为光源,然后在渲染方程中直接使用它。 IBL计算主要有两部分组成,一个是光源产生的颜色,另一个是环境产生的颜色。 1.光源产生的颜色 光源产生的颜色计算,直接将数值带入Cook-Torrance反射率方程即可, 2.环境产生的颜色 环境产生的颜色,其实就是天空盒产生的光照,由间接漫反射光和间接镜面光组成。 将立方体贴图的每个纹素视为一个光源。使用一个方向向量 wi 对此立方体贴图进行采样,我们就可以获取该方向上的光照强度。 对于天空盒产生的环境光,应用反射率方程: 将反射率方程拆分成漫反射和镜面反射两个部分: (1)间接漫反射光 间接漫反射计算公式: 计算irradiance,即 给定每个片段的积分球坐标,对半球进行离散采样。 如下图所示,在两层循环内,获取一个球面…
描述: 实现一个简单的语言解释器,支持以下指令 指令格式 描述 mov a v 把数v赋值给a,其中a是变量名称,由不超过10个小写字母组成,v是变量名或者常数 inc a 变量a加1 dec a 变量a减1 jnz a v 如果变量a的值不是0,则相对跳转v条指令。比如-2,向上跳转两个指令 输入保证最多有100个变量,100条语句;执行inc, dec和jnz之前,相应变量一定已经用mov赋值过。 代码实现 关于正则表达式,可以参考: https://www.runoob.com/regexp/regexp-metachar.html
几何着色器 (GS) 是用 GLSL 编写的着色器程序,用于控制基元的处理。几何着色器位于顶点着色器(或Tessellation 阶段)和Vertex Post-Processing阶段之间。 本文实现的是三次方贝塞尔曲线。 P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1或P2;这两个点只是在那里提供方向资讯。P0和P1之间的间距,决定了曲线在转而趋进P3之前,走向P2方向的“长度有多长”。 曲线的参数形式为: 需要注意的是,显卡会影响曲线的绘制效果,如果使用的是集中显卡,建议切换为独立显卡。 lines_adjacency: line_strip: geometry_shader_bezier.vs geometry_shader_bezier.gs geometry_shader_bezier.fs main.cpp 效果: 完整项目代码: https://github.com/mc-liyanliang/OpenGL-Shader/tree/master
1.在windbg.exe路径下执行cmd 2.输入打开GFlags,我要检查的程序名称为midas XDS.exe C:\Program Files (x86)\Windows Kits\10\Debuggers\x64>gflags.exe /I midas XDS.exe +ust 3.第一次拍照,此程序的进程pid为:17136 C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>umdh -p:17136 -f:test111.txt 4.打开并关闭要检查的对话框 5.第二次拍照 C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>umdh -p:17136 -f:test222.txt 6.比较文件 C:\Program Files (x86)\Windows Kits\10\Debuggers\x86>umdh test111.txt -f:test222.txt -v -symopt:ox80000000>Compare000.tx …
关于几何着色器 从 OpenGL 3.2 开始,在顶点着色器和片段着色器之间有第三种可选类型的着色器,称为几何着色器。该着色器具有使用顶点着色器的输出作为输入动态创建新几何体的独特能力。 几何着色器在渲染管道中的位置: 应用1:几何着色器生成Bézier曲线 Bézier曲线方程: 需要4个控制点: beziercurve.geom 应用二:几何着色器生成爆破物体 当我们说爆破一个物体时,我们并不是指要将宝贵的顶点集给炸掉,我们是要将每个三角形沿着法向量的方向移动一小段时间。效果就是,整个物体看起来像是沿着每个三角形的法线向量爆炸一样。 geom.gs 应用三:法向量可视化或生成毛发 Geom.gs Reference: https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/09%20Geometry%20Shader/ https://web.engr.oregonstate.edu/~mjb/cs519/Handouts/geometry_shaders.1pp.pdf
开发背景: 实际工程中, 满堂支架建模十分复杂,需要大量时间绘制各种支撑杆件。Midas W满堂支架建模助手是依据国家相关规范进行开发的快速建模程序,只需要在界面中输入少量的参数,即可生成复杂的支架模型。 目前程序支撑单梁模型、拱桥模型、非变高箱梁模型。 Midas W可以与Midas Civil实时联动,模型信息修改后可以实时更新,极大方便了建模和结构分析。 1.Midas W界面 2.打开满堂支架建模助手 3.查看3D示意图 4.依次输入建模参数 5.点击“插入”,生成模型 查看生成的荷载: 查看生成的边界: 6.将模型导入到Civil 打开Civil程序,点击Midas W界面的链接。在Midas W中修改模型后,打开“实时更新”,Civil中的模型数据也会实时更新。 模型: 链接:https://pan.baidu.com/s/14XSEGPz9ZQns4Mye-5bwRQ提取码:ev0g Midas W官网: https://wiz.midasit.cn/
本文主要介绍如何使用 C++ 生成圆柱几何体以及如何在 OpenGL 中绘制它。 1.绘制方法 由于我们无法绘制一个完美的圆形底面和圆柱体的弯曲侧面,我们只能通过将底面除以扇区(切片)来采样有限数量的点。因此,它在技术上是通过将这些采样点连接在一起来构建棱柱体。随着样本数量的增加,几何形状更接近于圆柱体。 假设一个圆柱体以原点为中心,半径为r,高度为h。圆柱体上的任意点 ( x, y, z ) 可以从具有相应扇形角θ的圆方程计算出来: 扇形角的范围是从 0 到 360 度。每个步骤的扇形角可以通过以下方式计算: 2.创建存放顶点向量和法向量的结构体: 3.计算圆周上的点 4.获取圆柱体侧面、顶面、底面的顶点和法向量 5.将顶点和法向量存入缓冲区 6.绘制圆柱体 7.删除缓冲区 8.效果 9.完整的项目源代码 https://pan.baidu.com/s/1cEUuAmY3JNUbt7sTNvTuyA 提取码:lf5q
定义 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 实现 步骤一: 创建抽象类来获取工厂。 步骤二: 工厂A。 工厂B。 步骤三: 工厂生成器。 步骤四: 使用。 CTotalReportService::CTotalReportService(CNSDocBase* pDoc) { m_pBuildMRDataCtrl = CFactoryProducer::Creat(pDoc); ASSERT(m_pBuildMRDataCtrl); }