自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 CSDN年度技术趋势预测

归纳各领域趋势的交叉影响,强调技术落地的关键因素(如政策、成本、人才)。提出技术人应对趋势的建议:持续学习路径与资源推荐(如CSDN年度报告)。

2026-01-09 10:53:19 139

原创 OpenTK进阶6

本文介绍了在OpenGL中实现多光源照明场景的方法。通过将光照计算封装为GLSL函数,实现了包含1个定向光源、4个点光源和1个聚光灯的复杂光照系统。文章详细讲解了如何定义光照结构体(DirLight、PointLight、SpotLight),并分别实现了计算函数CalcDirLight()、CalcPointLight()和CalcSpotLight()。在主函数中,通过累加各光源贡献值的方式合成最终输出颜色。代码示例展示了完整的着色器实现,包括顶点属性设置、材质参数传递和光源位置配置。该方案通过模块化设

2025-12-27 15:41:32 531

原创 OpenTk进阶5

本文详细介绍了OpenGL中三种主要光源类型的实现方法:定向光源、点光源和聚光灯。定向光源模拟太阳光等无限远光源,所有光线平行;点光源具有位置属性并随距离衰减;聚光灯则具有方向性和照射范围限制。文章重点讲解了聚光灯的边缘柔化技术,通过内外锥体实现平滑过渡的光照效果。每种光源类型都配有完整的GLSL着色器代码和C#实现示例,包括光照方向计算、衰减公式应用以及聚光灯强度插值算法。通过调整光源参数,开发者可以模拟出各种真实世界的光照效果,为3D场景增添丰富的视觉层次。

2025-12-25 11:18:20 573

原创 OpenTK进阶4

本文介绍了光照贴图技术在3D渲染中的应用,重点阐述了漫反射贴图和镜面反射贴图的实现方法。通过使用纹理技术,我们可以为物体的不同部分赋予差异化的材质属性:漫反射贴图控制物体各部位的漫反射颜色,而镜面贴图则通过黑白纹理精确调节高光强度。文章详细讲解了如何在片段着色器中采样这两种贴图,并提供了完整的OpenGL实现代码,包括顶点数据更新、着色器修改和纹理绑定过程。最终效果展示了一个木质容器模型,其钢制边框能够产生镜面高光,而木质部分则保持无光泽状态,显著提升了渲染的真实感。这种技术为更复杂的材质表现奠定了基础,可

2025-12-25 11:13:49 730

原创 OpenTK进阶3

本文介绍了OpenGL中材质和光照属性的实现方法。通过定义材质结构体(Material)包含环境光、漫反射、镜面反射颜色及光泽度参数,可以模拟不同物体对光的反应特性。同时,通过光源结构体(Light)分别控制环境光、漫反射和镜面反射强度,实现更精确的光照效果。代码实现了动态光源颜色变化效果,利用正弦函数随时间调整光照颜色。文章详细展示了如何在片段着色器中实现材质系统,以及如何通过统一变量在应用程序中设置材质和光照属性,最终呈现出一个具有真实光照效果的3D场景。

2025-12-25 11:09:22 939

原创 OpenTK进阶2

本文介绍了OpenGL中的Phong光照模型实现,包含环境光、漫反射光和镜面反射光三个核心组件。环境光模拟间接光照效果,漫反射光表现物体表面方向性照明,镜面反射则呈现高光效果。通过顶点着色器传递法线向量,在片段着色器中进行光照计算,使用点积运算确定光线影响强度。文章详细讲解了光照向量计算、法线矩阵变换、观察者位置处理等关键技术点,并提供了完整的着色器代码实现。最终实现了可交互的三维物体光照效果,支持视角变换观察不同角度的光照表现。

2025-12-25 11:06:13 895

原创 OpenTK进阶1

本文探讨了颜色的本质及其在计算机图形学中的应用。颜色在数字世界中通过RGB三原色表示,通过分量相乘实现光照效果。文章详细介绍了物体反射颜色的原理,并提供了OpenGL实现光照场景的代码示例。通过创建光源物体和着色器程序,演示了如何计算物体反射颜色,其中光源颜色与物体颜色相乘得到最终显示颜色。代码部分包含顶点数据、着色器配置、相机控制等实现细节,展示了如何在3D场景中模拟真实光照效果。

2025-12-25 10:15:37 475

原创 OpenTK入门7

如:cameraPos为(0.0f, 0.0f, 3.0f),cameraTarget为(0.0f,0.0f,-1.0f),则实际指向为(0.0f, 0.0f, 2.0f),而标识为(0.0f,0.0f,-1.0f)。接下来需要一个表示相机空间正x轴方向的右向量。由于叉积结果是与两个向量均垂直的向量,我们将得到指向正x轴方向的向量(若交换向量顺序则得到指向负x轴的向量)上面的工作OpenTK已经为我们完成了,我们只需要指定相机位置、目标位置以及表示世界空间中向上向量的向量(即用于计算右向量的向上向量)。

2025-12-02 09:30:00 817

原创 OpenTK入门6

坐标转换至裁剪空间后,其值范围为-w至w(超出范围的坐标将被裁剪)。以投影矩阵中定义的范围为例,坐标(1250,500,750)将不可见----因其x坐标超出范围,转换后在NDC中成为大于1.0的值,故被裁剪。超出此范围的坐标将不可见。要将一个空间的坐标转换到另一个坐标空间,我们将使用多个变换矩阵,其中最重要的包括模型矩阵、视图矩阵和投影矩阵。将指定范围内的坐标转换为易于映射到二维视图空间坐标的NDC(标准化设备坐标)的完整过程称为投影----因为投影矩阵将三维坐标投影到易于映射的二维标准化设备坐标上。

2025-12-01 09:45:00 953

原创 OpenTK入门5

随后将两个矩阵相乘生成单一变换矩阵。首先使用OpenTK内置函数定义名为vec的向量,然后定义Matrix4矩阵,通过调用Matrix4.CreateTranslation函数显式初始化---该函数接收三个浮点数参数生成平移矩阵。需要对着色器代码进行修改,将顶点着色器修改为接收mat4统一变量,并用矩阵统一变量对位向量进行乘法运算。矩阵概念包括:加法、减法、矩阵与标量相乘、矩阵与矩阵相乘、矩阵与向量相乘、单位矩阵、缩放、平移、旋转、矩阵组合。向量概念包含:单位向量、加法、减法、长度、取反、点积、叉积。

2025-11-30 08:45:00 312

原创 OpenTK入门4

默认纹理单元为0,即默认激活的纹理单元,因此无需显示分配位置,需注意并非所有图形驱动都分配默认纹理单元。创建第二张纹理和第一张一样,需要修改下Texture的Use函数,在Game.cs中刷新时需要注意在OnRenderFrame函数中调用 shader.SetInt("texture1", 0)和 shader.SetInt("texture2", 1)。纹理单元的核心作用在于支持着色器同时使用多个纹理。激活后的纹理单元,调用GL.BindTexture将把该纹理绑定到当前活动的纹理单元。

2025-11-29 09:45:00 261

原创 OpenTK入门3

为解决这个问题,OpenGL采用了Mipmap技术,其本质是一组纹理图像集合,其中每个后续纹理的尺寸均为前一个纹理的一般。此外,Mipmap还具备提升性能的附加优势。为每张纹理图像手动创建一组Mipmap纹理相当繁琐,但幸运的是OpenGL能在创建纹理后通过单次调用GL.GenerateMipmap(GenerateMipmapTarget.Texture2D)完成全部工作。而线性过滤则生成更平滑的图案,单个像素点较难辨识,线性插值能呈现更逼真的效果,但部分开发者偏爱复古的像素化风格,因此选择最近点过滤。

2025-11-28 11:17:37 892

原创 OpenTK入门2

本文介绍了OpenGL中的元素缓冲对象(EBO)和着色器技术。EBO通过索引数组复用顶点数据,减少重复存储,适用于绘制复杂图形。着色器作为运行在GPU上的小程序,使用GLSL语言编写,分为顶点着色器和片段着色器。文章详细讲解了着色器的输入输出机制、uniform变量传递数据的方法,以及如何在顶点数据中添加颜色属性。通过代码示例展示了如何实现动态颜色变化和顶点颜色插值效果,为图形渲染提供了灵活的控制手段。

2025-11-25 09:11:48 888

原创 OpenTK入门1

本文介绍了使用OpenGL和OpenTK进行图形编程的基础知识。主要内容包括: OpenGL基础概念 OpenGL是一种图形规范,由Khronos集团维护 包含立即模式和核心模式两种工作方式 采用状态机模型管理图形上下文 开发环境搭建 使用OpenTK库创建窗口程序 实现基本的窗口创建和按键退出功能 图形渲染流程 详细讲解图形处理管道的各个阶段 顶点着色器和片段着色器的编写与编译 顶点缓冲对象(VBO)和顶点数组对象(VAO)的使用 三角形绘制实现 定义顶点数据并绑定缓冲区 设置顶点属性指针 完成着色器程序

2025-11-24 09:19:46 867

原创 TypeScript 全面学习指南 (2025最新版)

TypeScript 全面学习指南

2025-06-04 09:11:13 1347

原创 Vue学习记录

Vue学习和Element使用

2025-05-21 15:51:44 675

原创 .NET 8.0 Blazor 的学习线路图及核心组件说明

.NET 8.0 Blazor 的学习线路图及核心组件说明

2025-03-25 15:38:04 1431

原创 C# Blazor的AddScoped函数作用

Blazor AddScoped函数作用

2025-03-24 15:46:33 421

原创 NAS与 All-in-One区别

NAS(网络存储) 与 All-in-One(多功能一体机) 区别

2025-03-18 13:47:08 1635

原创 C#接口(Interface)与类(Class)的区别

C#接口(Interface)与类(Class)的区别

2025-03-18 11:17:59 753

原创 C#封装继承多态

C#封装继承多态

2025-03-18 11:16:34 393

原创 jsPDF 用于生成 PDF 文档的 JavaScript 库

jsPDF 用于生成 PDF 文档的 JavaScript 库

2025-02-05 10:40:12 2674

原创 C# 使用串口通信通获取数据

C# 使用串口通信通获取数据

2025-01-22 13:37:09 1813

原创 C# 正则表达式

C# 正则表达式

2025-01-17 14:25:31 915

原创 Bootstrap中form相关属性

Bootstrap中form相关属性

2025-01-08 11:44:24 1365

原创 Blazor 数据注解(Data Annotations)示例

Blazor 数据注解(Data Annotations)示例。

2025-01-08 08:00:00 1657

原创 Bootstrap 使用技巧总结

Bootstrap 使用技巧总结

2025-01-07 11:48:31 1937

原创 Markdown语法

Markdown语法

2025-01-07 09:53:29 445

CANOE blf转asc格式源码及exe C#实现

不用安装canoe blf格式转asc

2023-12-18

Devexpress Winform中文帮助

Devexpress Winform中文帮助

2023-06-07

空空如也

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

TA关注的人

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