本期知识点密度:★★★✩✩
Processing 一共有7种绘制模式,9种写法
- 置空
- JAVA2D(等价于置空)
- P2D (是OPENGL的子集)
- P3D
- OPENGL(等价于P3D)
- FX2D
- SVG
- DXF
我们接下来详细阐述每一种绘制模式:
JAVA2D(或置空)
1 | void setup(){ |
此模式调用Java中最原始的awt模块,使用CPU渲染,没有GPU开销。
优点:支持平台最广,bug最少,渲染效果一般;
缺点:不支持3D渲染,帧率不稳定;
P2D
1 | void setup(){ |
此模式调用Java OpenGL进行绘制,有GPU开销;
优点:帧率相对稳定,可自由调节抗锯齿程度;
缺点:不支持3D渲染,在某些非主流显卡上无法正常运行;
P3D(或OPENGL)
1 | void setup(){ |
此模式和P2D类似,调用Java OpenGL进行绘制,有GPU开销;
优点:支持3D渲染,性能最好,可定制性最高;
缺点:在某些非主流显卡上无法正常运行;
FX2D
1 | void setup(){ |
此模式使用JavaFX实现,可一定程度上调用操作系统的DirectX和OpenGL进行绘制,有GPU开销;
优点:效果细腻,支持平台广;
缺点:无法自由调节抗锯齿,逻辑帧率稳定,但显示帧率不太稳定,有一定的bug;
1 | void setup(){ |
or1
2
3
4
5
6
7void setup(){
size(500, 500, Java2D/P2D/P3D/FX2D);
beginRecord(PDF, "rect.pdf");
...
endRecord();
}
此模式直接将绘制结果保存为PDF文件,文件内包含矢量图元;
优点:精准,细腻,适合高分辨率打印;
缺点:保存3D场景时会有摄像机裁剪的问题;
SVG
1 | void setup(){ |
or1
2
3
4
5
6
7void setup(){
size(500, 500, Java2D/P2D/P3D/FX2D);
beginRecord(SVG, "rect.svg");
...
endRecord();
}
此模式直接将绘图结果保存为SVG矢量图文件;
优点:同上,可以直接在网页中使用,对设计师友好;
缺点:同上;
DXF
1 | void setup(){ |
此模式可以导出DXF格式的3D场景文件,提供给后续工作流;
优点:emmmm 真的非常强;
缺点:不支持动画;