openGL、D3D、vulkan区别简介平台之王——OpenGLOpenGL

openGL、D3D、vulkan区别简介平台之王——OpenGLOpenGL

openGL、D3D、vulkan的区别介绍

原文链接:

什么是着色器模型

原文链接:

什么是 Vulkan

Vulkan 是图形和计算设备的编程接口。 Vulkan 是一个跨平台的 2D 和 3D 绘图应用程序编程接口 (API),由 Konas 组织在 2015 年游戏开发者大会 (GDC) 上首次宣布。 Konas 最初将 VulkanAPI 称为“下一代 OpenGL 倡议”或“glNext”,但在 Vulkan 正式公布后,这些名称就不再使用。 与OpenGL一样,Vulkan是为实时3D程序(例如视频游戏)而设计的,Vulkan计划提供高性能和低CPU管理开销(overhead),这也是Direct3D12和AMD的Mantle的目标。 Vulkan 与 Mantle 的一个分支兼容,并使用 Mantle 的一些组件。

################################################## ## ############################

原文链接:

openGL、D3D、vulkan的区别介绍

平台之王——OpenGL

OpenGL 已经发展了 20 多年。 作为一个成熟且享有盛誉的跨平台计算机图形应用接口规范,广泛应用于游戏、影视、军事、航天、地理、医学、机械设计、各种科学数据可视化等领域,各种版本也已推出演变而来,但都是基于opengl,比如嵌入式系统中的OpenGL ES。 基于OpenGL ES开发的Web端也是H5中最重要的WebGL。 WebGL为H5提供了画布。 功能全部基于js。 WebGl有三个.js cesium badylon.js 等框架。 应用场景也不同。 他们的介绍在我的博客中有介绍。 三.js cesium badylon.js 和 webgl 的区别;

OpenGL 可以用来做什么? 视频、图形、图像处理、2D/3D游戏引擎开发、科学可视化、医疗软件开发、CAD(计算机辅助技术)、虚拟现实(AR、VR)、AI(人工智能);

OpenGL是一种图形应用程序编程接口(ApplicationProgrammingInterface,API)。 它是一个可以访问图形硬件设备特性的软件库。 OpenGL被设计为一种现代化的、独立于硬件的接口,因此我们可以在各种不同的系统上进行操作,而无需考虑计算机操作系统或窗口系统。 在图形硬件系统上,OpenGL接口完全通过软件实现。

OpenGL还提供:

基于Windows平台开发者——D3D

Direct3D(缩写:D3D)和DirectX之间的关系。 DirectX是微软创建的多媒体编程接口,由许多API组成。 按其性质分为:显示部分、声音部分、输入部分和网络部分。 显示部分负责图像。 处理是关键,D3D 是其中的一部分。

D3D主要负责3D效果的显示。 例如基于opengl的游戏引擎,CS中的场景和角色使用DirectX的D3D。 它与 OpenGL 一样,是计算机图形软件和计算机游戏中最常用的两种图形编程接口之一。 ,最重要的版本是D9,D11\D12是差别很大的版本; 以下是D3D的官方网站;

Microsoft的D3D组件、其他Microsoft DirectX、操作系统和系统硬件之间的关系:

HAL(硬件抽象层)提供设备独立性; HAL是设备制造商提供的设备特定接口,D3D直接使用显示硬件来工作。 程序不需要与HAL交互。 应用程序使用 D3D 公开的一系列接口和方法来使用显示设备,而不是 HAL 提供的机制。 3D程序和GDI程序一样,通过显示卡的设备驱动程序访问图形硬件。与GDI不同,D3D在选择HAL设备时可以利用硬件特性。 HAL设备提供基于显卡支持的硬件加速。

这里特别强调:谈D3D,就不得不谈GDI。 同是微软的儿子,又有什么区别呢?

它们都使用显卡加速。 最大的区别是D3D支持显存位图,而GDI位图只能是显存,而且D#D的处理方式更接近硬件,解析速度更快,而GDI则失去了加速性!

OpenGL 替代品 - VulkanVulkan

Vulkan 是 Khronos 组织开发的“下一代”开放图形显示 API。 它是一个与DirectX12相当的GPU API标准。 Vulkan是基于AMD的Mantle API发展而来的。 Vulkan 1.0标准已完成并正式发布。 Vulkan 是一个跨平台 2D 和 3D 图形应用程序编程接口 (API),由 Khronos 组织在 2015 年游戏开发者大会 (GDC) 上首次宣布。 旨在取代 OpenGL 并提高图形性能。

相对于 OpenGLVulkan 的优点:

更简单的显示驱动(Vulkan提供了显示驱动抽象层,可以直接控制和访问底层GPU,

显示驱动只是对硬件的一个瘦身封装,可以显着提高操作GPU硬件的效率和性能。 以前对开发人员隐藏的 OpenGL 驱动程序层的许多细节现在都公开了。 Vulkan 甚至不包含运行时错误检查层。 驱动层要做的工作更少游戏运营,隐藏的bug也更少)

支持多线程(

Vulkan不再使用OpenGL的状态机设计,并且内部不存储全局状态变量。 显示资源完全由应用层管理基于opengl的游戏引擎,包括内存管理、线程管理、多线程绘图命令生成、渲染队列提交等。应用程序可以充分利用CPU的多核多线程计算资源减少 CPU 等待和延迟。

问题在于线程之间的同步问题也是应用程序的责任,从而对开发人员提出了更高的要求)

预编译着色器(这个很强大!驱动层不提供前端着色器编译器,只支持标准可移植中间表示二进制代码(SPIR-V)。这提高了执行Shaders的效率,增加了未来着色语言的灵活性所以现在的GLSL/HLSL可以通过工具直接转换为SPIR-V,在Vulkan中使用。这样就可以使用离线shader编译了。另外,SPIR-V还支持OpenCL!)

CPU和GPU、OPENGL、DX、显卡驱动的关系:

如果你是新手,不建议直接学习Vulkan。 Vulkan的使用门槛非常高,需要对硬件驱动框架有比较全面的了解。 而且Vulkan环境搭建起来比较困难,很容易让新人感到沮丧,失去兴趣。 OpenGL上手相对容易,对新手非常友好。 由于这是学习阶段,所以你不必太担心OpenGL的性能/多线程问题。 在使用的过程中,可以加深对底层驱动和硬件架构的理解。 有了一些知识之后 有了基础知识后,开始使用 Vulkan 会更容易。

—————————————————

版权声明:本文为CSDN博主“小鱼”原创文章,遵循CC 4.0 BY-SA版权协议。 转载时请附上原文出处链接及本声明。

原文链接:

################################################## ## ############################

原文链接:

什么是着色器模型

Shader Model(在3D图形领域通常称为SM)是“优化渲染引擎模式”。 Shader(渲染或着色)是可以对3D对象进行操作的程序,由GPU执行。 通过这些程序,程序员可以获得大部分他们想要的3D图形效果。 在3D场景3D植物,通常有多个Shader。 这些Shader有的负责处理3D物体的表面,有的负责处理3D物体的纹理。

Shader Model的作用:

Shader(渲染或着色)是可以对3D对象进行操作的程序,由GPU执行。 通过这些程序,程序员可以获得大部分他们想要的3D图形效果。 极大的方便了程序员以更高的速度编写代码、实现各种特效。

着色器模型版本:

微软发布DirectX 10.1后,Shader Model已经有五个版本:Shader Model 1.0(DirectX8.0)、Shader Model 2.0(DirectX9.0b)、Shader Model 3.0(DirectX9.0c)、Shader Model 4.0(DirectX10)、Shader Model 4.1 (DirectX10.1)和Shader Model 5.0(DirectX11)未来将持续更新。

Shader模型的开发:

SM 1.0 到 SM 2.0:真正的技术革命。 SM2.0赋予了显示芯片强大的能力。 人们在游戏中也享受到了前所未有的视觉体验。 比如水面光影、雾气等特效的出现,让游戏场景更加精彩。 现实。

SM 2.0到SM 3.0:SM 3.0除了支持32位浮点运算作为亮点外,还可以用SM 2.0完成其他特殊功能。 相当于SM 2.0的优化版本。

SM 3.0到SM 4.0:最大指令数从512条增加到64,000条; 临时名册的数目也由原来的32个增加至4,096个; 允许同时操作128个纹理; 材质纹理格式成为硬件支持 RGBE 格式放弃了之前需要特殊解码来处理 HDR 渲染的过程,大大提高了 HDR 效率。 最大纹理分辨率8192x8192是原始最大分辨率2048x2048的4倍。

文章来源:https://blog.csdn.net/qq_20990333/article/details/132466482