驱动这场革命的,不仅是硬件的进步,更是我们与GPU“对话”的编程思想的根本变革。
// 简单易用,一步到位
drawSphere({
position: [0,0,0],
radius: 1.0,
color: [1,0,0],
lighting: true
});
优点: 简单
缺点: 功能固化, 不灵活
// 复杂但灵活
let buffer = createBuffer(sphere_data);
let shader = createShader(shading_code);
setShader(shader);
setBuffer(buffer);
draw();
优点: 灵活, 高性能
缺点: 复杂, 学习曲线陡
这两种方案的取舍,完美复现了OpenGL自身的发展史。
核心思想: 你告诉GPU要画什么,GPU知道该怎么画。
类比: 功能强大的“微波炉”,你只需按“爆米花”键,无法控制加热细节。
年代 | 事件和节点 |
---|---|
1960-1970年代 | 计算机图形学诞生,CPU负责所有图形渲染任务。 |
1980年代 | 专用图形硬件出现(如Amiga图形芯片),加速部分图形任务。 |
1995年 | 3dfx Voodoo Graphics发布,GPU开始分担三维图形渲染任务。 |
1999年 | NVIDIA GeForce 256发布,GPU接管几何计算任务,正式定义GPU。 |
2001年 | 可编程着色器出现,GPU从固定功能设备转变为可编程硬件。 |
2006年 | CUDA发布,GPU开始用于通用计算任务。 |
2018年 | NVIDIA RTX系列发布,GPU支持实时光线追踪。 |
GPU越来越强大,开发者希望能获得更多对底层的控制权,实现更多更具创造力的视觉效果
思想转变: 从“配置机器”到“为机器编程”
核心思想: 你给GPU提供数据(缓冲)和程序(着色器),让它自己计算结果。
类比: 你得到了微波炉的核心零件(计算单元)和一本编程手册(GLSL),可以实现任何烹饪方式。
图形渲染的两种模式
所有的模型均以顶点表示,顶点可构成基本图元,如线段、多边形、曲线、曲面等
OpenGL3.1
其它版本
从传统OpenGL(“固定功能管线”)到现代OpenGL(“可编程管线”)最核心的思想转变是什么?
关于WebGL,以下哪个描述是正确的?
相较于现代API,传统OpenGL“固定功能管线”的主要局限性是什么?
从现代OpenGL到Vulkan、Metal等新一代图形API的发展趋势,进一步体现了什么样的设计哲学?