自定义博客皮肤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全栈博主

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

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

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

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

2024-08-10 21:00:26 2981 1

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

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

2024-08-10 13:57:19 1716

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

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

2025-05-06 23:52:25 324

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

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

2025-05-02 14:31:12 627

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

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

2025-05-01 09:40:33 255

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

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

2025-04-30 20:31:05 622

原创 linux 内核 debugfs 使用介绍

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

2025-04-29 21:46:13 321

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

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

2025-04-29 21:35:04 180

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

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

2025-04-28 22:13:29 299

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

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

2025-04-28 21:13:18 228

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

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

2025-04-24 19:05:55 230

原创 如何检查浏览器是否启用了WebGL2.0硬件加速

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

2025-04-23 13:11:48 89

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

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

2025-04-21 21:24:21 293

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

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

2025-04-21 21:17:37 267

原创 NVIDIA显卡 和 AMD 显卡

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

2025-04-17 21:24:44 304

原创 linux 内核 container_of 宏的原理

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

2025-04-17 16:33:46 478

原创 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 558

原创 C++ 编程指南36 - 使用Pimpl模式实现稳定的ABI接口

C++ 的类布局(尤其是私有成员变量)直接影响它的 ABI(应用二进制接口)。如果你在类中添加或修改了私有成员,即使接口不变,编译器生成的二进制布局也会变,从而导致 ABI 不兼容。这意味着使用这个类的代码需要重新编译,严重破坏了库的二进制兼容性。为避免这种情况,Pimpl(Pointer to Implementation) 模式应运而生。Pimpl将类的实际实现细节封装在另一个类中(impl),对外只暴露一个指向实现的智能指针(如。

2025-04-13 22:42:13 299

原创 C++ 编程指南35 - 为保持ABI稳定,应避免模板接口

模板在 C++ 中是编译期展开的,不同模板参数会生成不同的代码,这使得模板类/函数天然不具备 ABI 稳定性。为了保持ABI稳定,接口不要直接用模板,先用普通类打个底,模板只是“外壳”,这样 ABI 才稳定。这样做有两个好处:所有模板实例共享一个实现代码(避免为每个List<T>生成一份几乎相同的add_frontunlink等函数)。核心逻辑只定义一次,因此更容易保持 ABI 稳定性,并且编译速度更快。

2025-04-13 22:31:15 374

原创 C++ 编程指南34 - C++ 中 ABI 不兼容的典型情形

ABI(Application Binary Interface)是二进制层面的接口规范。如果一个库的 ABI 发生了变化,那么基于旧 ABI 编译的代码可能在运行时与新库不兼容(即使接口名字都一样也不行)。那么在C++中编程中,哪些情形会导致ABI不兼容呢?下面逐一列举一下。

2025-04-13 22:17:23 941

原创 驱动开发系列52 - Linux xorg-server 解析(三)- xorg-server 代码结构

1. randr, composite, render, glx, xkb 扩展模块。├── xfree86/ ← 主流 x86 平台入口,内含所有驱动加载与初始化代码。├── kdrive/ ← 轻量级 X 服务器实现(很少用了)2. hw/xfree86 中的设备初始化(输入输出驱动加载)├── vfb/ ← 虚拟帧缓冲,常用于测试或 VNC。3. fb,glamore,exa 图形绘制,图形加速。├── dummy/ ← 虚拟显卡(如 Xvfb)

2025-04-13 10:50:43 43

原创 驱动开发系列51 - Linux xorg-server 解析(二)- 如何调试 xorg-server

Xorg-server简称Xorg,它是Linux窗口系统的核心组件,它是用户态应用程序,但它的调试方法和普通用户态应用程序有所不同,因为Xorg是系统的核心组件,负责图形显示和输入设备的管理,所以在单台机器上调试Xorg可能会面临一些困难和限制,如果在同一台机器上调试它,可能会导致显示服务中断,导致调试界面卡住或屏幕黑屏,影响正常使用。下面以Ubuntu 24.04 系统下为例,介绍下Xorg的调试方法。

2025-04-12 21:42:24 578

原创 驱动开发系列50 - Linux xorg-server 解析(一)- 编译安装Debug版本的xorg-server

1. 配置源,以Ubuntu24.04 为例( /etc/apt/sources.list.d/ubuntu.sources):2."-g -O0"-rfakeroot-us -uc sudo apt install ./*.deb 如果中间出现什么问题,或想还原到系统默认的xorg-server,可以执行:

2025-04-12 21:35:12 112

原创 linux kernel drivers 目录介绍

kernel\drivers\gpu

2025-04-12 12:19:05 155

原创 Vulkan进阶系列10 - 向着色器传递常量数据(完整代码)

在 GLSL(OpenGL Shading Language)中,uniform是一种非常常用的变量类型,用于 在主机(CPU)和着色器之间传递常量数据。它是图形管线中从 CPU 向 GPU 传递“每帧/每绘制调用”数据的主要方式之一。uniform变量是 只读的,由 CPU 端的应用程序设置。在 一个 draw call 内部不会改变,但可以在多个 draw call 之间更新。所有处理该 draw call 的顶点或片元之间是 共享的。举个例子,这个例子中我们用了一个(UBO),叫做。

2025-04-12 11:00:13 353

原创 Ubuntu24.04 编译 Qt5 和 Qt6 源码

【代码】ubuntu 24.04 编译 Qt 源码。

2025-04-09 21:08:10 364

原创 linux kernel arch 目录介绍

2025-04-09 09:18:12 212

原创 Linux 中进程上下文和中断上下文

上下文指的是当前正在运行的代码所处的执行环境,包括:是否可睡眠(can sleep)是否可以访问用户空间当前正在执行的是哪个进程或中断是否可以阻塞等待资源在 linux 中上下文包含中断上下文和进程上下文;

2025-04-09 01:44:35 373

原创 Vulkan进阶系列9 - 多帧并发(完整代码)

Vulkan 中的多帧并发(Frames in Flight)是一个优化技术,旨在通过同时处理多个帧的渲染来提高 GPU 的使用效率,减少 GPU 空闲时间,从而提高渲染性能。在传统的单帧渲染模型中,GPU 在渲染一个帧时必须等待前一个帧的所有操作完成(如图像获取、命令缓冲区执行、渲染完成等)。这可能导致 GPU 处于空闲状态,浪费了宝贵的计算资源。为了解决这个问题,Vulkan 通过多帧并发技术,允许 GPU 同时处理多个帧的渲染任务。

2025-04-07 20:54:36 557

原创 Vulkan进阶系列8 - 绘制(完整代码)

在 Vulkan 中,绘制流程 涉及多个重要概念,比如 framebuffer、交换链(swapchain)、命令缓冲(command buffer) 等;Vulkan 的绘制大致流程是:创建 交换链(Swapchain),用于呈现图像到屏幕;为每个交换链图像创建 image view;创建 framebuffer(帧缓冲)用于渲染目标;使用 command buffer 记录渲染命令;将渲染结果输出到 framebuffer(也就是 swapchain image);呈现到窗口。

2025-04-06 16:08:23 43

原创 Vulkan进阶系列7 - 创建图形管线(完整代码)

我们可以将图形管线看作 GPU 的一条“生产线”,图形数据(比如顶点、纹理)会经过多个阶段的加工,最后输出成图像(写入 framebuffer)。Vulkan 将图形管线设计成一个高度显式、可控的 GPU 渲染流程模型,从顶点处理一直到颜色混合,每一步都需要我们来明确配置。这就是为什么要在vulkan中创建图形管线的原因。

2025-04-05 20:26:17 51

原创 Vulkan进阶系列6 - 创建交换链(完整代码)

Vulkan 的设计目标是:最大程度减少驱动对开发者行为的“猜测和干预”,把一切都交给开发者来决定。所以Vulkan没有默认帧缓冲区,需要我们自己创建交换链(swapchain);Vulkan 中的 swapchain 是一组图像缓冲区(images),这些图像按顺序被绘制并最终显示到屏幕上。当我们使用 Vulkan 渲染时,不是直接画到屏幕上,而是画到这些 swapchain image 上,然后再“交换”到前台去显示。

2025-04-05 16:14:16 130

原创 Vulkan进阶系列5 - 创建逻辑设备(完整代码)

逻辑设备(Logical Device)是 Vulkan 中抽象出来的一层,用于访问 GPU 的功能。物理设备(Physical Device)代表实际的 GPU 硬件本身,而逻辑设备是Vulkan程序与该硬件打交道的“接口”。创建逻辑设备后,我们才能:向 GPU 提交绘图命令;访问图形 / 计算队列;使用 GPU 支持的特性(如 samplerAnisotropy、geometry shader 等);创建 buffer、image 等资源;为什么不直接用物理设备,而要创建一个逻辑设备呢?

2025-04-05 06:50:35 37

原创 Vulkan进阶系列4 - 选择物理设备(完整代码)

Vulkan 中的“物理设备”就是系统中的显卡或其他支持 Vulkan 的计算设备。我们通常会选出最合适的一个作为渲染设备。选择设备调用流程如下:获取所有可用物理设备打印设备属性(可选)判断设备是否“适合”检查设备是否支持所需扩展选中第一个符合条件的设备,保存到。

2025-04-04 20:46:59 48

原创 Vulkan进阶系列3 - 添加Validatioin Layers(完整代码)

Validation Layer(验证层)是 Vulkan 提供的一种 调试和错误检测机制,主要用于在 开发阶段 发现 API 使用错误,增强 Vulkan 代码的稳定性和可靠性。这些层可以拦截 Vulkan API 调用,并检查参数的合法性、对象的正确使用以及其他潜在的问题。

2025-04-04 13:49:55 42

原创 Vulkan进阶系列2 - Vulkan初始化(完整代码)

Vulkan初始化过程是:查询Vulkan版本->创建Vulkan实例->管理Vulkan扩展。下面介绍下初始化用到API及其作用。vkEnumerateInstanceVersion 是 Vulkan 1.1 引入的一个函数,它用于查询 Vulkan 运行环境支持的最高实例级(instance-level)API 版本。它的主要作用是 在创建VkInstance之前,获取 Vulkan 驱动程序支持的最高 API 版本,方便应用程序做兼容性检查。参数pApiVersion 是。

2025-04-04 09:25:48 155

原创 Vulkan进阶系列1 - Vulkan应用程序结构(完整代码)

在前面的20多篇文章中,我们了解了Vulkan的基础知识,和相关API的使用,接下来我们要从零开始写一套完整Vulkan应用程序,在这个过程中加深对Vulkan中的各种概念的理解。Vulkan 应用程序一般遵循 初始化 -> 运行循环 -> 资源清理 的结构,本实例也基本遵循了这一模式。对于一个Vulkan 图形应用程序来说,首先有一个窗口,其次是要处理窗口事件,应用程序逻辑状态,最后是图形的绘制。本文搭建一个简单应用程序框架,目标是将来在这样的框架下,能跑起一系列Vulkan图形应用程序。这个。

2025-04-03 21:22:19 395

原创 C++ 编程指南33 - 使用模板来表达适用于多种参数类型的算法

在 C++ 中,模板(Templates)提供了一种强大的泛型编程方式,使代码可以适用于不同的数据类型,而无需重复编写类似的逻辑。模板的主要目标是:泛化能力(Generality):能够适用于不同的数据类型,提高代码的通用性。减少源代码量(Minimizing the amount of source code):避免为不同数据类型重复编写代码,提高代码复用性。互操作性(Interoperability):使代码能够在不同类型的容器或数据结构之间共享。

2025-04-02 22:44:24 283

原创 OpenGL进阶系列20 - OpenGL SuperBible - bindlesstex 例子学习

什么是无绑定纹理(bindless texture)?无绑定纹理是OpenGL的一项技术,旨在消除传统的纹理绑定操作。这项技术允许着色器直接访问纹理而不需要显式地将纹理绑定到某个纹理单元,从而减少了渲染管线中的开销。在引入无绑定纹理之前,当我们想在着色器中使用纹理时,我们会将其绑定到一个纹理单元,并通过一个样本类型的统一变量(例如sampler2D)表示该纹理单元。这个样本变量与某个纹理单元相关联,而这种关联形成了对底层纹理的间接引用。

2025-04-02 20:35:11 271

原创 C++编程指南32 - 模板编程时要避免过度约束以提高通用性

由于使用模板会提高代码的抽象级别,所以在编写模板代码时,要尽量让代码更灵活、通用,而不是只针对某些特定的操作或类型。目的是为了提高代码的重用性和效率。不要过度限制模板的类型要求,让代码更通用。尽量避免只要求单一操作,要考虑更通用的操作集合。用概念来约束类型,而不是直接依赖操作符,这样代码能处理更多类型,增加灵活性和复用性。

2025-04-01 21:15:41 479

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

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

2024-10-07

Vulkan 环境搭建和示例代码

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

2024-08-10

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

rubber.cpp

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

2020-03-06

OpenGL一个小框架

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

2016-01-25

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

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

2015-02-12

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

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

2015-01-22

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

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

2014-12-30

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

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

2014-12-01

OSG 三维引擎架构

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

2014-11-14

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

计算机图形学渲染书籍: 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

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

计算机图形学经典建模书籍: 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

三维地形生成算法源码

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

2014-09-17

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

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

2014-09-17

地理信息系统算法基础

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

2014-09-11

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

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

2014-08-25

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

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

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

2014-07-10

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

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

2014-07-10

ubuntu 12.04 Ogre 开发环境配置

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

2014-04-04

C++_STL使用例子大全

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

2013-09-23

OpenGL编程精粹

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

2013-04-19

空空如也

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

TA关注的人

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