OpenGL驱动质量的事实现状(精简翻译版)

2023-11-10

原文:http://richg42.blogspot.com/2014/05/the-truth-on-opengl-driver-quality.html

一、厂商A:
为大多数开发者所使用,功能最全,测试得最好,几乎是事实上的标准驱动。其驱动性能很高,而且其设计偏向于实际中管用,而不是GL标准的纯粹性。大多数你所能听到的GL的好话,比如可以和D3D12/Mantle抗衡,源自使用这家驱动的开发者。但不幸的是,我们不能只支持这一家的驱动,否则会损失大量市场。

其驱动支持不计其数的扩展,而且基本都可用。但是当你开始使用其中一些扩展时,可能会超出驱动的安全执行路线而导致驱动崩溃。

但是,这家厂商的工具一直很悲催,或者只在一段时期内能用,或者你能祈求到其工具团队的帮助。

该厂商有着一个精明的策略,他们派开发人员进驻到游戏开发公司的队伍里,以便推进事情的进展。但这是一把双刃剑,因为这些开发者会拒绝调试在其他驱动上遇到的问题。他们会努力取得在他们自家驱动上的最好性能,而完全不管对其他驱动的影响。

该厂商也有被开玩笑地称作“图形黑帮”。如果你的队伍里有他们的人,要留心。他们可是玩真的。

二、厂商B:
完全杂乱不定的性能特征,混乱的回归测试,不能正常工作的驱动多线程,这些都完全失控。不幸的是,其GPU也基本上是业界标准,并且性能不俗,所以我们也不能将其忽略。其驱动试图紧密遵循GL规范,但结果并不好,因为多数开发者用厂商A的驱动做开发,而当在B的驱动上出问题时,他们批评B,而不是GL规范。

该厂商的关键扩展赤裸裸的不管用。基本都是实验性或者是纸面上的扩展,可以用来充实简历,或者向老版展现成绩。主流GL开发者从来不用这些扩展,因为不管用。

其驱动无法让Query或Sync这些功能可靠地运作。所以依赖它们的任何扩展都不能可靠地运作。每当他们更新驱动改正一个bug,都会引入两个新的bug。如果你单步进其驱动源码,你会发现一层套一层的长年来堆积起来的代码,已经没有人能够安全地修改。

有趣的是,他们有一个很小的工具团队,做出了一些非常有用的调试工具。若不是他们的工具,Source引擎到Linux的移植会花很长很长时间。

好的一面,相信与否,他们精通GL规范。如果你能取得他们的帮助,他们的建议对GL相关的问题非常有价值,但扩展除外。

三、厂商C:
你很难对它生气,因为他们根本不想做图形,这只是对其主体业务的偏离。但如今的趋势是把所有的东西集成到一个芯片上,而且他们有很多富余的片上空间。他们精通硬件,但对软件完全没兴趣。它是开源图形驱动的领军者,并且其硬件规范几乎完全公开。这伙人非常有钱,以致可以养得起两个独立完整的驱动团队。
驱动#1:
无论如何,该厂商的人力资源队伍很聪明:直接雇佣参与开源开发的人来推动驱动开发。这个驱动落后其他厂商很多,但其基本可用。如果遇到不管用的情况,你可以深入其源码,改正bug,然后提交一个补丁。如果你经常修补这个驱动,那么你可能会得到这家厂商的offer。

不幸的是,这个驱动通常落后于GL规范一两年。但你无法忽略它,因为它有很高的市场占有率,而且还在不断上升。

驱动#2:
一个彻底的灾难。这个团队的驱动几乎没人用,太多的执行路径不能正确工作。他们会每次给你一个独一无二的、错误百出的驱动版本,用来做性能分析或测试。他们会很诚实地问你,性能和正确性,哪一个更重要。

我曾见过一个知名引擎团队花了一年时间,试图让其GL 4.x后端能在这个驱动上正常工作。但是,它就是不行。所以,象其他游戏一样,直接实现一个GL 3.x的后端凑活用吧。

好的一面,厂商C为这个驱动团队提供了大量硬件技术细节。所以此驱动会比驱动#1快几个百分点。当然,前提是它得能正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL驱动质量的事实现状(精简翻译版) 的相关文章

  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • OpenGL:始终相同的颜色

    我正在 Windows 上编写一个程序 使用c opengl 2 1 and SDL我在顶点颜色方面遇到了一些问题 我在用着glColor3f设置每个顶点集的颜色 但它似乎不起作用 无论我选择什么颜色 我都会将每个顶点绘制为红色 我检查了传
  • 为什么我的 CAOpenGLLayer 更新速度比之前的 NSOpenGLView 慢?

    我有一个在 Mac OS X 上渲染 OpenGL 内容的应用程序 最初它渲染到 NSOpenGLView 然后我将其更改为渲染到 CAOpenGLLayer 子类 当我这样做时 我看到了巨大的性能损失 帧速率减半 鼠标响应能力降低 卡顿
  • OpenGL什么时候完成函数中指针的处理?

    OpenGL有多项功能 http www opengl org wiki GLAPI glTexSubImage2D直接获取指针 他们中有一些从这些指针读取数据 http www opengl org wiki GLAPI glBuffer
  • 求截头棱锥体/截棱锥体横截面的边长

    如何找到横截面的边长 如图所示 下图 横截面 红色 截头锥体 截棱锥体 我知道顶部和底部的边长 以及底部的高度 截锥体和到横截面的距离 此外我还知道 顶部和底部底座平行 并且顶部和底部的中心 底部底座直接位于彼此之上 比例是线性的 因此只需
  • OpenGL - 自动生成 glDrawArrays 的索引/步幅参数

    我正在渲染一个包含大量数据点 gt 1M 的网格结构 我的数据结构如图所示 所以我的索引缓冲区的内容看起来像这样0 100 1 101 2 102 3 103 我对索引缓冲区的巨大尺寸有点恼火 我需要它来定义我的三角形带 是否有可能告诉 O
  • 实例着色器矩阵的设置

    我想绘制实例立方体 我可以打电话GL DrawArraysInstanced PrimitiveType Triangles 0 36 2 成功地 我的问题是所有立方体都绘制在相同的位置和相同的旋转 我如何为每个立方体单独更改它 要创建不同
  • matplotlib:渲染到缓冲区/访问像素数据

    我想使用 matplotlib 生成的图作为 OpenGL 中的纹理 到目前为止 我遇到的 matplotlib 的 OpenGL 后端要么不成熟 要么已经停止使用 所以我想避免使用它们 我当前的方法是将图形保存到临时 png 文件中 并从
  • 渲染到一个颜色通道而不影响其他通道

    使用 OpenGL 任何版本 如何通过一次仅影响一个颜色通道来渲染到帧缓冲区对象 例如 我的帧缓冲区对象具有 GL BGRA 布局 现在我想执行一些渲染命令 这些命令应该只改变红色通道 因此 如果片段用颜色 204 0 0 0 渲染并且像素
  • 在 matlab 中求 3d 峰的体积

    现在我有一个带有峰值的 3D 散点图 我需要找到其体积 我的数据来自图像 因此 x 和 y 值表示 xy 平面上的像素位置 z 值是每个像素的像素值 这是我的散点图 scatter3 x y z 20 z filled 我试图找到数据峰值的
  • 为什么 cudaGLSetGLDevice 失败,即使它是在 main 函数的第一行中调用的

    我想使用 OpenGL 和 CUDA 之间的互操作性 我知道 正如一些教程所说 第一步是选择设备 但是 当我在主函数的第一行中调用 cudaGLSetGLDevice 0 时 程序退出并显示信息 cudaSafeCall 运行时 API 错
  • 如何在片段着色器中将 gl_FragCoord 转换为世界空间点?

    我的理解是 如果您有视图投影矩阵 屏幕宽度和屏幕高度的逆矩阵 则可以将 gl FragCoord 转换为片段着色器中世界坐标中的点 首先 你转换gl FragCoord x and gl FragCoord y通过分别除以宽度和高度 然后将
  • OpenGL 与 OpenCL,选择哪个以及为什么?

    哪些功能使 OpenCL 能够独特地选择 OpenGL 和 GLSL 进行计算 尽管有与图形相关的术语和不实用的数据类型 OpenGL 是否有任何真正的警告 例如 可以通过使用其他纹理将 a 渲染到纹理来完成并行函数评估 减少操作可以通过迭
  • 为贝塞尔曲线中的每个点绘制切线

    我设法绘制了一条贝塞尔曲线 如下所示 glColor3f 0 1 0 glBegin GL LINE STRIP for int i 3 i lt nPt i 3 glColor3f 0 0 0 for float k 0 k lt NLI
  • 进行亚像素平移时,2D 纹理会扭曲

    我想知道一个理论推理为什么这是可能的 几何体的平移与纹理映射有何关系 我只能在进行子像素平移时注意到这种效果 如果通过整个像素平移 纹理看起来很好 我正在使用正交投影 GL CLAMP TO EDGE GL NEAREST 片段着色器是hi
  • 有人知道如何在android中实现像Unfold(这是iphone中的应用程序)这样的效果吗?

    我怎样才能实现这个效果呢 任何建议都会对我有帮助 None
  • 在 3d 网格中转发(绘制)线

    我需要类似 Bresenham 算法的东西 但是 对于 3d 网格空间来说不完全是这样 我需要 3d 单元网格 边缘尺寸 1 0 从 S 点开始 前进到 K 点 接触 该线接触的所有单元格 即使只有边缘 点被触摸我需要触摸所有 8 个单元
  • OpenGL/GLSL - 纹理过滤的实现

    我想在 GLSL 着色器中自己实现纹理过滤 min 和 magfilter 因为我想使用 image load and store 而不是采样器 而且我想以特殊方式处理未定义的像素 并且我正在寻找一篇文章或者这样讨论过滤过程 我记得如何从我
  • 光照不适用于 gluSphere

    这是一个简单的问题 我有点羞于寻求帮助 我正在对 gluSphere 进行简单调用来渲染球体 但是 即使我很确定我正确添加了法线和照明 它也无法正确照亮 但是 如果我添加纹理 模型会正常点亮 但它似乎总是平滑的 并且我无法将其更改为平面 这
  • 并排显示图像的一半 - OpenGL

    我为两个图像创建了两个纹理 现在我想在opengl中按图像2的左侧部分 完整的图像1 图像2的右侧部分的顺序显示该纹理 我已经做了如下 Image1 显示在 opengl 屏幕的中央 但屏幕的左右部分不正确 应分别显示 image2 的左侧

随机推荐

  • cuda编程学习笔记 第一章 introduction

    准备系统学习cuda知识 这一章基本都懂 记录一下一些细节 global 表示函数在device上 后面永远是void device function is asynchromous cudaDeviceSynchronize waits
  • Eclipse HTML乱码设置

    为什么80 的码农都做不了架构师 gt gt gt 很多Eova新用户 下载Eova项目 导入Eclipse之后 发现HTML乱码 很惊慌不知道怎么解决 可按如下方法进行设置 即可根治HTML Tag JS等文件乱码问题 当然项目要先设置成
  • Collected errors:satisfy_dependencies_for: kernel (= 3.18.23-1-245faaffbc60cabe96a158cae13c1cc3)

    安装kmod fs autofs4安装包即可 openwrt就不能提示个缺kmod fs autofs4嘛 我的天 我还是之前安装本地安装包的时候出错提示的这个
  • 有什么软件可以提升视频画质,将模糊视频修复清晰?

    在素材录制或图像采集过程中 由于各种不可抗拒的因素 画面可能会出现模糊 我们应该如何处理 如何将模糊的视频修复清晰呢 或许大家在生活中有注意到在各大短视频平台上 哪些经典影视剧修复版的重映屡屡刷屏 这也成为了人们向经典致敬的最佳方式之一 这
  • mysql 查询 唯一_Mysql中如何查询所有唯一记录

    Mysql中如何查询所有唯一记录 今天刚下班时看到网上有人问了一个mysql问题 关于如何在mysql中查询出所有不重复的记录 搞了很长时间才写了条 算是学习一下吧 自己对mysql也不是很了解 下面来看一下具体问题 1 表结构是这样的 该
  • 解决Windows系统缺少cfgmgr32.dll文件问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个cfgmgr3
  • K8S实战之环境部署1.18(一)

    安装要求 准备环境 系统centos7 6 硬件 2个CPU 2G内存 可以访问外网 禁用swap 提前安装docker环境 准备三台服务器 初始化系统环境 以下命令三台服务器全部执行 1 1 关闭防火墙 systemctl stop fi
  • 怎么在命令行里运行python脚本 (合集)

    在命令行里运行python脚本的方法 工具 原料 python CMD命令行 windows操作系统 方法 步骤 首先下载安装python 建议安装2 7版本以上 3 0版本以下 由于3 0版本以上不向下兼容 体验较差 打开文本编辑器 推荐
  • 分布式消息队列 RocketMQ 源码分析 —— Message 顺序发送与消费

    自我表扬 Dubbo 实现原理与源码解析 精品合集 表扬自己 D数据库实体设计合集 摘要 原创出处 www iocoder cn RocketMQ me 芋道源码 欢迎转载 保留摘要 谢谢 本文主要基于 RocketMQ 4 0 x 正式版
  • 图文详解Modbus-RTU协议(转载)

    图文详解Modbus RTU协议 知乎 zhihu com Modbus RTU Remote Terminal Unit 远程终端单元 这种方式常采用RS 485做为物理层 一般利用芯片的串口实现数据报文的收发 报文数据采用二进制数据进行
  • Ubuntu20.04_x86交叉编译aarch64版本的tslib1.22步骤

    编译环境 小米笔记本 Windows10 VMware17 Ubuntu20 04虚拟机 编译目标 需要生成aarch64环境下对应的触摸屏驱动 编译步骤 1 下载aarch64 linux gnu编译器 下载地址为 https relea
  • QT include <string> 后仍提示 unknown type name ‘string‘ 解决方法

    解决方法 using namespace std
  • ubuntu16.04, 18.04和20.04换源

    第一步 备份原来的源文件 sudo cp etc apt sources list etc apt sources list backup 将sources list备份到sources list backup 第二步 替换源 sudo g
  • Vue思维导图

  • Leetcode刷题209. 长度最小的子数组

    给定一个含有 n 个正整数的数组和一个正整数 target 找出该数组中满足其和 target 的长度最小的 连续子数组 numsl numsl 1 numsr 1 numsr 并返回其长度 如果不存在符合条件的子数组 返回 0 示例 1
  • C++快速切换 头文件和源文件

    有没有一种快速的方法 将头文件中的声明 直接在源文件中自动写出来 毕竟头文件中已经有声明了 我只需要写具体实现就行了 没有必要把声明的部分再敲一遍 在 Visual Studio 中 你可以使用快速生成函数定义的功能来实现这一目标 这个功能
  • IT领域的发展规律

    1 摩尔定律 Intel公司的创始人Gordon Moore 即摩尔 曾经提出 集成电路的集成度会每两年翻一番 后来 大家把这个周期缩短到18个月 这也就形成了摩尔定律 即每18个月 计算机等IT产品的性能会翻一番 或者说相同性能的计算机等
  • 【2022最新Java面试宝典】—— SpringBoot面试题(44道含答案)

    目录 1 什么是 Spring Boot 2 为什么要用SpringBoot 3 SpringBoot与SpringCloud 区别 4 Spring Boot 有哪些优点 5 Spring Boot 的核心注解是哪个 它主要由哪几个注解组
  • Anaconda3 2023安装包下载及安装教程

    软件介绍 Anaconda 是一个开源的包 环境管理器 其包含了conda Python等180多个科学包及其依赖项 可以用于在同一个机器上安装不同版本的软件包及其依赖 并能够在不同的环境之间切换 安装步骤 1 选中下载好的安装包 右键选择
  • OpenGL驱动质量的事实现状(精简翻译版)

    原文 http richg42 blogspot com 2014 05 the truth on opengl driver quality html 一 厂商A 为大多数开发者所使用 功能最全 测试得最好 几乎是事实上的标准驱动 其驱动