可能重复:
OpenGL 4.1 vs 3.1+
阅读网页上的一些页面,我发现两个版本的OpneGL都列出了相同的代码示例.我知道这两个使用可编程功能流水线,与早期版本不同,但两者之间的主要区别是什么?你为什么要用另一个呢?
Nic*_*las 48
OpenGL主要版本号有效地表示硬件级别,如D3D主要版本号.GL 2.x代表DX9硬件.GL 3.x代表DX10级硬件.因此GL 4.x代表DX11级硬件.
但是,并非GL 4.x中引入的所有功能都是特定于硬件的.一些是API便利和清理功能.这些可用作低级硬件的扩展,NVIDIA和AMD的驱动程序确实提供了它们.其中最大的是程序的分离,这是一件好事GLSL已经需要一个很长的时间.
就GL 4.x提供的3.x中没有的实际硬件功能而言,它并不是巨大的或改变游戏规则.这当然很重要,但不是地球上的.您可以在OpenGL Wiki上按版本查找GL功能的详细分类.
图像加载/存储和原子计数器可能是最大的(这也包括着色器存储缓冲区),尽管同时广告最少.着色器去写/直接从图像和缓冲区读取,但也有一个很大的警告和同步问题,了解有关执行此操作.
GL 4.3添加了计算着色器,再加上上述功能,您可以在没有OpenCL/OpenGL互操作的情况下完成计算任务.
最受关注的功能是曲面细分.这引入了另外一对着色器阶段:一个用于决定对图元进行细分的程度,另一个用于决定如何从细分图元生成新值.
子程序是一个有趣但经常被忽视的功能.基本上,您可以将子程序附加到着色程序,如制服.因此,您可以使用相同的基本程序来运行照明功能,但您可以在不更改程序的情况下交换照明功能.基本程序将获取纹理,找出diffuse/specular/etc材质参数是什么,确定法线和光照参数,并将其传递给子程序.您可以拥有各种各样的光照子程序,从快速简单的Lambertian漫反射到全功能的Cook-Torrance(尽管您需要更多的材质参数).
| 归档时间: |
|
| 查看次数: |
14406 次 |
| 最近记录: |