avatar
文章
9
标签
4
分类
0
Home
List
  • Music
  • Archives
文野
Home
List
  • Music
  • Archives

文野

inline和static的区别
发表于2025-03-19
在以前面试的时候曾被问道一个问题,cpp中inline关键字的作用是什么,当时只记得inline的语义在c++17标准中进行了修改,而修改后的却忘了,今天在实现单例模式的时候遇到了和inline有关的bug,现在记录一下。 内联 通常在各类教程中会提到,inline的作用是让编译器内联展开所修饰的函数,从而节省跳转函数的开销,在代码中可以测试一下。 12345678910111213#include <iostream>__declspec(noinline) int TestInlineFunction(int a, int b) // __declspec(noinline)是msvc的一个标记,声明编译器永远不要内联这个函数{ return a + b;}int main() { int ans = TestInlineFunction(1, 2); std::cout << ans << std::endl; return...
C/C++跨平台差异
发表于2025-02-09
跨平台构建工具premake5
发表于2025-01-17
尽管诸如Visual Studio等现代IDE可以很好的管理一个项目,但这样生成的项目一般只能在特定版本的IDE中构建,难以跨系统,跨环境编译,常常出现代码复制到另一台电脑就无法编译成功的情况,为此介绍premake5工具,便于在不同环境构建项目。 make工具 准备制作一个工程项目的时候,首先会考虑它的目标平台,要支持Windows平台可能会考虑使用Visual...
C/C++工程项目
发表于2025-01-16
...
NES(FC)模拟器实现-前言
发表于2024-12-30
...
环境光遮蔽
发表于2024-12-22
...
体积渲染
发表于2024-12-21
体积渲染 以下严谨推导体积渲染公式 在场景中,光线沿ω\omegaω方向传播,与介质中的点ppp发生相互作用,LiL_iLi​为入射光的辐射率,LoL_oLo​为经作用后的辐射率。 吸收 使用σa(p,ω)\sigma_a(p,\omega)σa​(p,ω)表示光线在ppp点处沿ω\omegaω方向行进单位距离后,被吸收的辐射率与入射辐射率的比值,那么仅考虑吸收的情况下,在微小距离dtdtdt,辐射率的变化公式为: dLo,abso(p,ω)=−σa(p,ω)Li(p,ω)dtdL_{o,abso}(p,\omega)=-\sigma_{a}(p,\omega)L_{i}(p,\omega)dt ...
简单体积渲染
发表于2024-12-20
简单体积渲染 通常认为光线在空气中沿直线传播,并且不会衰减,但实际上,光线会与传输介质粒子发生一系列作用,可以理解为光线目前呈粒子性,与空气分子发生碰撞并偏离方向,损失一部分能量。 依据光子与粒子发生作用前后方向的改变和能量的变化,将这种作用分为四类: 吸收,光子作用前后方向不变,但能量衰减 发射,粒子本身可以向外界辐射,使光子传输方向上的能量增强,通常会忽略掉 散射,光子与粒子发生作用后方向改变,向四周散射 内散射,其余方向上的光子与粒子发生作用,使其朝当前方向散射 其中吸收作用即是光线传输中的透射现象,散射与内散射是散射现象,关注从空气粒子射向摄像机的方向,该方向上一个微小距离上的的能量变换应当如下公式: Lo−Li=−吸收+发射−散射+内散射L{o}-L{i} = -吸收+发射-散射+内散射Lo−Li=−吸收+发射−散射+内散射 透射 光线在仅发生透射的时候,在各向同性的均匀介质中遵循比尔-朗博定律, 即−log10IoIi=K∗l∗c=A=log101T-log_{10}\frac{I_o}{I_i}=K\ast l\ast...
OpenGL配置
发表于2024-12-20
OpenGL环境配置 OpenGL实际上并不是一个API,而是一套规范,规定了每个函数的执行与输出,而具体实现根据开发者决定,其中glad也是一个对OpenGL的实现,而glfw3则是一个针对OpenGL设计的窗口API,有了这两个库就可以使用OpenGL。 以windows下Visual Studio为例进行环境配置 新建一个文件夹,在该目录下以管理员身份运行cmd,依次执行以下命令: git clone https://github.com/Microsoft/vcpkg cd vcpkg ./bootstrap-vcpkg.bat vcpkg install glad vcpkg install glfw3 vcpkg integrate install 或 vcpkg integrate install < project name > 即可将glad和glfw3两个库安装到当前电脑上,执行vcpkg list可以查看安装目录 新建一个VS项目,复制以下代码运行 #include <glad/glad.h> #include...
1
avatar
wenye
文章
9
标签
4
分类
0
Follow Me
归档
  • 三月 2025 1
  • 二月 2025 1
  • 一月 2025 2
  • 十二月 2024 5
©2024 - 2025 By wenye
框架 Hexo|主题 Butterfly