自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GPU全栈博主

技术成就梦想,知识改变命运 !

  • 博客(658)
  • 资源 (22)
  • 收藏
  • 关注

原创 一文带你掌握GPU编程:从入门到精通

本系列文章持续更新中...

2024-08-10 21:00:26 3601 3

原创 一文带你掌握C++编程:从入门到精通

本系列文章持续更新中...

2024-08-10 13:57:19 2178

原创 驱动开发系列66 - glCompileShader实现 - GLSL中添加内置函数

本文介绍如何为 GLSL 语言中增加一个内置函数,以扩展为例,介绍下添加textureSamples内置函数的过程。

2025-08-19 22:57:21 20

原创 驱动开发系列65 - NVIDIA 开源GPU驱动open-gpu-kernel-modules 目录结构

NVIDIA显卡驱动架构分析:该驱动分为OS相关和OS无关两部分。OS相关部分包括多个内核模块,分别负责GPU初始化/显存管理(nvidia.ko)、图形接口支持(nvidia-drm.ko)、显示管理(nvidia-modeset.ko)、虚拟内存管理(nvidia-uvm.ko)以及多GPU通信(nvidia-peermem.ko)。OS无关部分包含核心功能代码和与开源驱动Nouveau集成的工具。这种分层设计既保证了与不同操作系统的兼容性,又提供了完整的GPU功能支持。

2025-08-19 21:57:22 174

原创 驱动开发系列64 - glCompileShader实现-GLSL 精度优化pass

glCompileShader将GLSL源码编译为GPU可执行代码的过程包括五个阶段:源码解析、语义检查、生成中间代码、优化(如精度优化、常量折叠等)和最终编译。其中精度优化pass会优化如normalize()函数的精度,通过LLVM pass提升执行效率。这一过程将抽象语法树逐步转换为优化的GPU机器码。

2025-08-18 23:42:23 166

原创 linux 内核 - 进程地址空间的数据结构

本文介绍了Linux内核中进程内存管理的两个关键数据结构:task_struct和mm_struct。task_struct表示进程实例,其中包含指向mm_struct的指针。mm_struct详细描述了进程的内存映射情况,包括页表(pgd)、用户栈(start_stack)、堆区(start_brk/brk)、数据段(start_data/end_data)、代码段(end_code)等关键内存区域的地址信息,以及映射区域基址(mmap_base)等。这些数据结构共同构成了Linux内核的进程地址空间管理

2025-08-18 20:34:36 197

原创 驱动开发系列63 - NVIDIA 开源GPU驱动open-gpu-kernel-modules编译调试

在Ubuntu系统上安装NVIDIA闭源驱动的步骤包括:1)更新系统包;2)添加NVIDIA官方PPA源;3)通过ubuntu-drivers检查可用驱动版本;4)安装指定版本驱动(推荐最新闭源版);5)重启后使用nvidia-smi验证;6)使用prime-select命令切换显卡模式(独显/集显/混合模式)。安装完成后需重启系统使驱动生效。

2025-08-16 09:03:43 120

原创 linux内核 - Linux 文件系统简介

Linux内核通过VFS层实现文件系统模块化设计,核心结构体super_block、inode、dentry和file协同工作:super_block代表文件系统实例,inode描述文件元数据,dentry缓存目录项提升性能,file表示进程打开的文件。VFS抽象统一接口,解耦用户空间与具体文件系统实现,支持多种文件系统共存。

2025-08-14 23:04:29 776

原创 linux 内核 - 内存管理的层次化结构

Linux内核内存管理采用层次化结构:最高层为内存节点(pglist_data),NUMA系统中每个节点对应一个pglist_data,UMA系统则只有一个;每个节点划分为多个内存域,用于处理不同硬件设备的访问限制;最底层是页帧(struct page),作为内存管理的最小单位。这种多级结构实现了对不同架构内存的统一管理。

2025-08-14 23:02:39 307

原创 linux 内核 - 内存管理概念

本文概述Linux内存管理的核心知识,包括主要数据结构和实现逻辑。Linux采用分页式内存管理,通过页表实现虚拟地址到物理地址的转换。关键数据结构包括内存描述符mm_struct、页描述符page、区域描述符zone等。实现逻辑涉及伙伴系统管理物理内存,slab分配器处理小对象分配,以及页面置换算法等机制。文章对这些核心概念进行了简要分析,帮助理解Linux内存管理的基本原理。

2025-08-13 22:54:54 607

原创 驱动开发系列62 - glBufferDataARB实现分析

本文分析了Mesa中glBufferDataARB的实现过程。该函数主要用于OpenGL缓冲区对象的存储分配和初始化,其调用链为:glBufferData → _mesa_BufferData → _mesa_buffer_data → buffer_data → _mesa_bufferobj_data → bufferobj_data → u_transfer_helper_resource_create → iris_resource_create → iris_resource_create_for

2025-08-13 22:50:45 489

原创 CUDA编程9 - 卷积实践

本文介绍了CUDA API中用于图像处理和纹理内存操作的关键组件。主要包括:1)cudaArray和cudaTextureObject_t用于纹理内存管理;2)cudaChannelFormatDesc描述数据格式;3)cudaMallocArray和cudaMalloc分配GPU内存;4)cudaResourceDesc和cudaTextureDesc定义纹理资源;5)cudaCreateTextureObject创建纹理对象;6)cudaMemcpyToSymbol用于主机到设备的数据传输;7)cuda

2025-07-30 23:13:51 108

原创 OpenGL进阶系列22 - OpenGL SuperBible - bumpmapping 例子学习

法线贴图是一种通过改变表面光照效果来模拟细节的技术,它不会增加模型的多边形数量。通过在贴图中存储表面法线信息,它能制造凹凸、划痕等视觉细节,使简单模型看起来更精细。这种"视觉欺骗"技术既能保持性能,又能提升画面真实感,广泛应用于游戏和图形渲染中,是效果与效率兼顾的优化方案。

2025-07-28 22:06:20 91

原创 linux 内核: 遍历当前所有进程

本文介绍了在Linux内核中安全遍历进程链表的方法。由于传统的tasklist_lock机制已被废弃,建议使用RCU(Read-Copy-Update)机制来实现并发安全的进程遍历。核心实现包括:1)使用rcu_read_lock()/rcu_read_unlock()保护进程链表;2)通过for_each_process宏遍历所有进程;3)使用get_task_struct()/put_task_struct()确保进程结构安全;4)打印进程信息(名称、TGID、PID、UID、EUID)。文章提供了完整

2025-07-15 23:31:38 236

原创 驱动开发系列61- Vulkan 驱动实现-SPIRV到HW指令的实现过程(2)

本文介绍了SPIR-V到LLVMIR转换的核心机制,重点分析了关键转换步骤。主要内容包括:1)创建llvm::Module模块,初始化LLVM上下文;2)定义目标架构,详细说明了LLVMTargetMachine、TargetSubtargetInfo和TargetLibraryInfoImpl三个辅助类的作用,分别用于表示目标架构配置、子架构特征描述和内置函数支持。这些步骤为后续SPIR-V到LLVMIR的语义转换奠定了基础。

2025-07-15 21:47:58 226

原创 linux 内核: 访问当前进程的 task_struct

文章摘要:本文介绍了在Linux内核模块中如何通过current宏获取当前进程信息。Linux采用单内核架构,所有模块运行在内核态,current宏指向task_struct结构体,可获取进程上下文信息。示例代码展示了如何显示进程名称、PID、TGID、UID、EUID、状态等关键信息,并区分进程上下文和中断上下文。模块初始化时打印进程信息,退出时再次显示。该技术可用于内核开发中的进程状态监控和调试。

2025-07-14 23:52:31 220

原创 驱动开发系列60- Vulkan 驱动实现-SPIRV到HW指令的实现过程(1)

1. vkCreateShaderModule 作用: 将已编译好的SPIR-V着色器代码加载到Vulkan中供GPU使用/*参数:device Vulkan 逻辑设备句柄(VkDevice)pCreateInfo 指向 VkShaderModuleCreateInfo 结构体,描述 SPIR-V 数据和大小pAllocator 自定义内存分配器(通常传 nullptr 使用默认分配器)pShaderModule 返回创建好的 VkShaderModule 句柄*/

2025-07-14 22:30:56 257

原创 C++ dijkstra 最短路径算法

Dijkstra算法是荷兰科学家Edsger W. Dijkstra于1956年提出的单源最短路径算法。该算法采用贪心策略,通过优先队列选择当前距离起点最近的节点,更新其邻居的最短路径。文章详细介绍了算法步骤:初始化距离、使用最小堆、松弛操作等,并提供了C++实现代码,包括邻接表构建、Dijkstra核心算法和测试用例。代码展示了如何计算两点间最短路径,处理不可达情况,并通过三个测试案例验证了算法的正确性(可达路径计算、更优路径选择及不可达情况处理)。

2025-07-08 21:59:39 354

翻译 AI论文阅读-注意力就是你所需的一切(Attention Is All You Need)

《Attention Is All You Need》 翻译 + 自己的理解

2025-07-07 20:37:47 67 1

原创 C++ 基于广度优先搜索(BFS)的拓扑排序算法

Kahn拓扑排序算法通过广度优先搜索处理有向无环图,时间复杂度O(V+E)。该算法不断选择入度为0的节点加入结果序列,若最终节点数不足则检测到环。摘要代码实现了一个Graph类,包含添加边和拓扑排序方法,并通过多个测试用例验证功能:包括多路径合并、复杂DAG、独立链合并及环检测。测试结果显示算法正确实现了拓扑排序,并能有效识别环结构。

2025-07-06 21:49:24 211

原创 C++ 语言特性31 - 协程介绍(2)

摘要:协程是一种可挂起与恢复执行的"高级函数",用于处理异步操作和数据生成等复杂场景。C++20引入协程支持,通过co_await和co_yield关键字实现非阻塞等待和生成器功能。协程概念早在1963年提出,现已被Python、JavaScript等现代语言广泛采用。C++函数的演进从基础函数到模板、lambda,最终在C++20迎来协程,实现了惰性求值和更灵活的流程控制能力。协程为C++带来了资源友好的异步编程方式,特别适合系统级开发需求。

2025-07-05 21:00:08 901

原创 C++ 基于深度优先搜索(DFS)的拓扑排序算法

本文介绍了基于深度优先搜索(DFS)的拓扑排序算法实现。算法通过递归遍历有向图的节点,在回溯时将节点压入栈中,最终获得拓扑排序的逆序。同时使用onstack数组检测图中是否存在环(回边)。文章提供了C++实现代码,包括Graph类、DFS函数和拓扑排序函数,并通过三个测试案例验证了算法的正确性:前两个测试展示了正常有向无环图的拓扑排序结果,第三个测试验证了环检测功能。当检测到环时,算法会抛出"cycle detected in graph"异常。

2025-07-05 11:25:57 175

原创 C++26 下一代C++标准

摘要:C++26作为下一代C++标准,将延续C++20的革新步伐,带来三大核心特性:反射(Reflection)增强元编程能力,契约(Contracts)规范接口设计,以及std::execution框架统一异步编程。从C++98的模板基础到C++11的现代特性,再到C++20的四大革新(范围库/协程/概念/模块),C++26有望成为继C++11和C++20之后又一里程碑式版本。该标准计划2025年完成,将显著提升C++在编译时编程、系统设计和并发处理方面的表现。

2025-07-04 23:38:58 1016

原创 驱动开发系列59- 再述如何处理硬件中断

本文探讨了设备驱动开发中硬件中断的处理方法。硬件中断是外设请求操作系统响应的电信号,会迫使处理器执行相应的中断处理程序。文章介绍了Linux操作系统处理中断的基本流程,重点讲解了驱动开发者需掌握的关键技术:如何分配IRQ中断号、编写中断处理函数(包括注意事项)、线程化中断模型的使用、IRQ中断的启用/禁用方法,以及通过/proc查看中断信息。此外还解释了中断上半部与下半部机制,并解答了相关常见问题。这些知识对于开发高效稳定的设备驱动程序至关重要。

2025-07-04 22:37:41 314

原创 驱动开发系列58 - 揭开内核IRQ框架的神秘面纱

本文介绍了Linux系统中的中断管理机制。硬件设备通过中断请求(IRQ)线路向CPU发送处理请求,CPU会暂停当前任务处理中断,完成后恢复原任务执行。文章重点阐述了内核提供的IRQ管理API、中断复用方法以及中断控制器驱动的实现原理。其中,中断控制器作为关键设备,负责管理CPU与中断线路间的交互。通过分析各组件间的协作过程,展现了Linux系统高效处理硬件中断的机制。

2025-06-29 22:01:44 94

原创 驱动开发系列57 - Linux Graphics QXL显卡驱动代码分析(四)显示区域更新

前面在介绍了显示模式设置(分辨率,刷新率)之后,本文继续分析下,显示区域的绘制,详细看看虚拟机的画面是如何由QXL显卡绘制出来的。// 当前启用的显示器数量(head 数量)// 驱动允许的最大显示器数量,如果为 0,表示没有固定限制,由驱动动态决定// 每个显示器的配置数组(实际大小为 count)// 显示头(显示器)ID// 绑定的 QXLSurface ID// 显示区域的宽度(像素)// 显示区域的高度(像素)uint32_t x;

2025-05-06 23:52:25 598

原创 驱动开发系列56 - Linux Graphics QXL显卡驱动代码分析(三)显示模式设置

如之前介绍,在qxl_pci_probe 中会调用 qxl_modeset_init 来初始化屏幕分辨率和刷新率,本文详细看下 qxl_modeset_init 的实现过程。即QXL设备的显示模式设置,是如何配置CRTC,Encoder,Connector 的以及创建和更新帧缓冲区的。

2025-05-02 14:31:12 786

原创 驱动开发系列55 - Linux Graphics QXL显卡驱动代码分析(二)显存管理

前面介绍了当内核检测到匹配的PCI设备后,会调用 qxl_pci_probe 初始化设备,其中会调用qxl_device_init 来初始化设备,为QXL设备进行内存映射,资源分配,环形缓冲区初始化,IRQ注册等操作,本文展开说说这些细节,并介绍下QXL的显存管理。

2025-05-01 09:40:33 378

原创 驱动开发系列54 - Linux Graphics QXL显卡驱动代码分析(一)设备初始化

QXL 是QEMU支持的一种虚拟显卡,用于虚拟化环境中的图形加速,旨在提高虚拟机的图形显示和远程桌面的用户体验;QEMU 也称 Quick Emulator,快速仿真器,是一个开源通用的仿真和虚拟化工具,可以模拟不同架构的计算机以及运行虚拟机。本文介绍下QXL 虚拟显卡驱动,即Linux 内核代码中QXL显卡驱动部分。看看它是如何支持QEMU虚拟显卡的。QXL代码分析基于v6.15-rc2内核版本。

2025-04-30 20:31:05 954

原创 linux 内核 debugfs 使用介绍

debugfs是 Linux 内核提供的一个特殊的虚拟文件系统,用于 暴露内核模块(如驱动)内部的调试信息或控制接口,供开发者、调试人员实时查看和排查问题。即debugfs就是一个“调试专用的 /proc 或 /sys”,方便你在不重启或不修改代码的情况下,查看内核模块的运行状态、统计信息,甚至直接向内核模块传递调试指令。

2025-04-29 21:46:13 484

原创 C++编程指南40 - 避免不经意间写出不通用的代码

在编写代码时,应尽量使用更通用、更抽象的方式,而不是绑定到具体实现细节,以提高代码的可重用性和适用性。以下规则有助于提升代码的通用性、可维护性与可扩展性:迭代器比较:用!替代,因为!更广泛适用于非有序容器。类型使用:如果函数只使用基类接口,就应接受基类引用,而不是派生类,避免对具体类型的无必要依赖。空判断方式:使用empty()而不是,因为某些容器没有size(),但支持判断是否为空。强制执行建议:编译器或代码分析工具应能发现并提示这些不通用的用法,避免影响泛型和复用能力。

2025-04-29 21:35:04 223

原创 OpenGL进阶系列21 - OpenGL SuperBible - blendmatrix 例子学习

颜色输出阶段是 OpenGL 渲染管线中最后一个阶段。它决定了片段在离开发片段着色器之后,最终显示在用户屏幕上的颜色值。颜色输出阶段最重要的一个操作就是混合。本例子重点介绍下OpenGL中的混合操作。对于每个通过片段测试(per-fragment tests)的片段,会执行混合操作。混合允许你将传入的源颜色与颜色缓冲区中已有的颜色进行组合;

2025-04-28 22:13:29 359

原创 C++编程指南39 - 不要特化函数模板

应避免特化函数模板,而应通过重载来实现不同类型或参数的处理。对函数模板进行特化会引入一些不容易察觉的问题,因为特化是针对特定类型提供一个具体实现。对于函数模板,如果你对某个类型进行了特化,那么编译器仅仅使用那个特化版本,其他版本不再参与选择。而重载是指定义多个函数模板,它们的参数类型,个数或顺序有所不同,编译器会根据传入的参数选择合适的版本。特化模板的坏处:它不参与重载解析,一旦你进行了模板特化,编译器会优先选择与特化版本完全匹配的函数,不会参与其他重载模板的选择。推荐使用重载。

2025-04-28 21:13:18 280

原创 驱动开发系列53 - 一个OpenGL应用程序是如何调用到驱动厂商GL库的

一个 OpenGL 应用程序调用 GPU 驱动的过程,主要是通过动态链接库(libGL.so)来完成的。本文从上到下梳理一下整个调用链,包含GLVND、Mesa 或厂商驱动之间的关系。

2025-04-24 19:05:55 406

原创 渲染引擎实践-如何检查浏览器是否启用了WebGL2.0硬件加速

打开 Chrome 或 Edge(推荐使用 Chromium 内核浏览器)。点击浏览器右上角的 Spector.js 图标,出现浮动工具栏。捕获成功后,会弹出一个新的 Spector.js 分析窗口。按钮,会自动刷新页面并截取当前一帧的 WebGL 调用。安装完成后,在浏览器工具栏看到绿色的 S 图标。打开你要分析的 Web3D 网站(比如。

2025-04-23 13:11:48 620

原创 C++编程指南38 - 使用 static_assert 检查类是否符合某个 concept

如果我们打算让一个类符合某个 concept,那么尽早验证可以避免给使用者带来麻烦。C++20 引入了 Concepts(概念),用来对类型(类、结构体等)进行语义约束,例如是否可复制、是否可迭代、是否可调用等等。是一种编译时断言,它可以在编译期间验证某个条件是否为真,如果为假,编译器就会报错。

2025-04-21 21:24:21 345

原创 C++编程指南37 - 使用 concept 限制模板参数类型

concept是C++20 引入的语言特性,concept 是一种用于约束模板参数的编译期布尔表达式(谓词),它描述了一个类型应该具有的某些性质(比如是否可比较、是否可拷贝、是否支持某种操作等)。// 如果 T 没有 size(),编译器报个几十行的模板错误报错晦涩难懂,用户根本不知道为什么错,引入 Concept 之后,我们可以提前限制参数类型,并提供更清晰的错误信息:假设定义一个 concept 要求类型T有一个size()成员函数,且能返回可以转换为的值。

2025-04-21 21:17:37 340

原创 NVIDIA显卡 和 AMD 显卡

消费级显卡(如 4090)虽然训练性能强,不支持 ECC(错误校验),训练稳定性稍逊,NVLink/多卡扩展能力不如数据中心级。数据中心卡通常无法用于游戏/图形渲染。

2025-04-17 21:24:44 371

原创 linux 内核 container_of 宏的原理

宏是 Linux 内核中一个非常经典、非常强大的 “结构体逆推”技巧,用于从某个结构体成员的指针,反推出这个成员所在的结构体指针。内核中的很多子系统(如 device、list、ttm)都使用一个通用结构(比如), 然后通过在需要时把它转换为“更具体”的结构体。所有结构体“嵌套”在一起,方便管理;用能轻松回到“容器结构体”。

2025-04-17 16:33:46 552

原创 Linux 6.15-rc2 发布,包含一系列修复内容

本周合入 Linux 6.15-rc2 的修复包括一些针对 AMD/Intel 处理器的 Spectre RSB(Return Stack Buffer)缓解措施的清理工作,以及多个图形驱动的修复,其中包括修复 Intel 平台上的屏幕闪烁问题。是的,这次合并窗口比往常大一些,但至少目前来看,rc2 在提交数量和 diffstat(代码变动统计)方面都基本符合常规水平。换句话说,各方面都有一点更新。此外,还有来自 Linux 6.15 内核早期测试的大量其他杂项修复,分布在代码库的各个部分。

2025-04-14 08:47:04 643

OpenGL Programming Guide (Red Book) 9th Edition Source Code

OpenGL Programming Guide (Red Book) 9th Edition Source Code, OpenGL 红宝书 第9版 源代码

2024-10-07

OSG 三维引擎架构

对OSG引擎整体总结, 对架构会有整体的认识.

2014-11-14

Vulkan 环境搭建和示例代码

包含Vulkan 绘制三角形示例代码,编译脚本,以及环境搭建步骤,支持Window, Linux ,跨平台。

2024-08-10

C++_STL使用例子大全

C++_STL使用例子大全.pdf, STL练习资料。

2013-09-23

Low level GLSL Optimisation.pdf

GLSL着色器优化书籍,OpenGL Shader Language Optimisation

2024-07-08

LEX 和 YACC 教程.pdf

编译器前端使用教程,LEX-YACC Tutorial

2024-07-08

Learn LLVM 17 A beginners guide to learnin - Kai Nacke.pdf

LLVM, COMPILER, Lear LLVM17 A beginners guide to learnin, Kai Nacke

2024-07-08

Linux Driver Development

Linux 驱动开发,驱动入门书籍

2024-04-16

Optimizing software in C++ pdf

Optimizing software in C++

2024-04-09

Power and Performance Software Analysis and Optimization pdf

Power and Performance Software Analysis and Optimization

2024-04-09

计算机图形学几何工具算法详解 pdf

经典计算几何算法实现,比较好的一本书,适合做图形,几何算法库的人参考。

2014-07-10

计算机图形学经典书籍资料-建模部分

计算机图形学经典建模书籍: 1):Gerald Farin 的Curves and Surfaces for CAGD: A Practical 2):Les A. Piegl, Wayne Tiller 的The Nurbs Book 3):曲线与曲面的数学 4):Introduction to Implicit Surfaces 5):Joe Warren的Subdivision Methods for Geometric Design: A Constructive Approach 6):David Luebke编著的 Level of Detail for 3D Graphics

2014-11-06

3D Engine design for Virtual Globles 卷三

讲述三维引擎设计实现,底层算法,虚拟地球实践。对想了解三维引擎设计及GIS平台开发的很有帮助。

2014-08-08

3D Engine Design for Virtual Globes 卷二

讲述三维引擎设计实现,底层算法,虚拟地球实践。对想了解三维引擎设计及GIS平台开发的很有帮助。

2014-08-08

3D Engine Design for Virtual Globes 卷一

讲述三维引擎设计实现,底层算法,虚拟地球实践。对想了解三维引擎设计及GIS平台开发的很有帮助。

2014-08-08

一个简单的OpenGL多线程渲染模型

用多线程实现OpenGL渲染, 子线程负责渲染, 主线程负责干其他事情.

2015-01-22

linux 下 OpenGL 读取 JPG, PNG, TAG 纹理数据

OpenGL 读取JPG, PNG, TAG 纹理图片的代码, 经测试验证通过.

2014-12-30

计算机图形学经典书籍资料-渲染部分

计算机图形学渲染书籍: 1):Andrew Glassner 的An Introduction to Ray tracing (光线追踪) 2):Francois X. Sillion的Radiosity and Global Illumination(辐射度) 3):Ian Ashdown的Radiosity: A Programmer's Perspective 4)Evan Pipho Focus On 3D Models(对于图形学的常用模型格式) 5)James D. Foley等人的 Computer Graphics: Principles and Practice in C (2nd Edition)

2014-11-06

人件-人月神话-最后期限-与熊共舞-个体软件过程-软件制胜之道

软件工程书籍合集: 人件 人月神话 最后期限 与熊共舞 个体软件过程 软件制胜之道

2015-02-12

帮助理解 Ogre 源码体系结构的几张图片

Ogre 类关系图,一帧渲染流程图,结构图,对理解Ogre源码有帮助。

2014-07-10

ubuntu 12.04 Ogre 开发环境配置

linux 下 Ogre环境配置, Ogre是流行的的三维引擎, 使用方便。

2014-04-04

地理信息系统算法基础

GIS 相关算法,系统介绍了GIS相关算法,很有指导意义

2014-09-11

三维地形生成算法源码

Focus On 3D Terrain Programming.pdf 配套源码,非常有参考意义。

2014-09-17

三维地形算法(英文版)Focus On 3D Terrain Programming

三维地形算法,地层地形生成算法,比较好的书。

2014-09-17

rubber.cpp

实现类似Photoshop的画刷和橡皮擦功能, 基于OpenCV和C++实现, 简单实用。

2020-03-06

OpenGL编程精粹

OpenGL 编程精粹 入门级书籍 适合初学者

2013-04-19

OpenGL 超级宝典第六版(英文)

OpenGL 超级宝典第六版, 英文版, 非常新的书籍, 不错的参考书籍,

2014-12-01

3D数学基础图形与游戏开发

书中详细介绍了三维数学基础:向量,矩阵,四元数,几何图元,几何算法的C++ 实现,内容通俗易懂,实战性强,难得的好书!

2014-08-25

OpenGL一个小框架

OpenGL Demo 框架, 我把它摘出来了,VS13, VS10 都能顺利编译运行。 需要的可以看看。 简单清晰的框架。

2016-01-25

空空如也

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

TA关注的人

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