贴图问题,opengl,linux,windows,消除锯齿,摩尔纹,yuv 还是 rgb

2023-05-16

1 消除锯齿和摩尔纹

windows下使用d3d是很方便的,基本不用设置很多东西,就可以做到,所以windows上最好使用d3d。但是linux上有所不同。

摩尔条纹是两条线或两个物体之间以恒定的角度和频率发生干涉的视觉结果,而锯齿是在缩小的情况下,画面计算引起,这两个事物都必须消除。

使用opengl 在linux 上做opengl 和 windows上有所不同吗,事实上,是这样的,我们在渲染的时候,如何做到反锯齿,反摩尔纹,其实都是要了解和掌握最基础的底层相应的知识体系,才能做到比较好的状态,监控贴图也是一个麻烦的事情,特别注意的是画面缩小的情况,如果我们熟悉ffmpeg,就知道ffmpeg在缩小算法上做得很好,可以消除很多锯齿和摩尔纹。
请看下面这幅图:正好是同向的方块和线条组成,这种情况锯齿更加严重。
没有反摩尔纹
这个很恶劣,主要是锯齿和摩尔效应对眼睛的刺激比较大,这样除了让普通的观察者感到无法接受,最重要的是图像会产生误差,下面使用mipmap去过滤图像

mipmap过滤图像
发现好了一点,并不是非常好
下面使用mipmap和各项异性过滤,会更好一点

在这里插入图片描述
使用linear 和mipmap 与各项异性过滤
在这里插入图片描述
达到效果!

linux 和windows的不同之处以及linux的问题

知识讲完,难道linux和windows下真的有所不同?那么答案在这里:代码是一样的,不一样的是驱动,linux下开源驱动,闭源驱动,opengl版本不同,还有半闭源驱动,以及nvidia下是否安装cuda,最终影响画面的总共有以下几点:
1 画面分辨率
2 如果是远程画面还有码率问题
3 opengl 版本
4 驱动
5 a卡的驱动和n卡驱动不同
6 cuda 问题
7 linux下bug问题(大都是国产操作系统,不言明了)

我举个例子,我们选取RGBA32 和RGB24 和 yuv420 去贴图的时候,应该选取哪一个?

这个问题比较麻烦,但不复杂,说亮点:
分辨率不同,选取RGB32 和 yuv 应该不同
驱动不同,选取RGB32 和 yuv 不同
opengl版本不同,选取不同,
显卡不同,选取不同
那么综合以上所述,应该选取哪一样比较合适,这个实际上要经过许多测试的,在windows上,不用担心这类问题,因为驱动肯定是合适的,接下去就是选取opengl 的版本,当然使用vulkan 是另外一回事,所以windows上我们可以这么做:

windows
小分辨率: 使用RGB32,为什么不使用RGB24,虽然RGB24的数据量更小,不过大部分显卡是为了游戏而生,所使用的颜色对齐一致为RGBA,所以反而效率要高
大分辨率:使用yuv420,数据量过了瓶颈,yuv420的数据量小很多,效率反而高了

linux :
不知道怎么做:选取RGB32, 放大缩小使用linear 过滤
知道怎么做: 选取两种方式,用户可以修改方式,放大缩小使用linear 和mipmap
知道自己使用的是纯的闭源驱动,是配置的专家,使用yuv420 和 硬件解码结合,使用linear 和mipmap过滤和各项异性过滤。

以上只是建议,肯定有更好的方式。

比如windows不使用opengl,使用direct3d是更好的,使用d3d11 就好了,如果有兴趣,当然可以使用dx12,考虑的是兼容问题,那就直接使用d3d。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

贴图问题,opengl,linux,windows,消除锯齿,摩尔纹,yuv 还是 rgb 的相关文章

  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • Windows 睡眠功能极慢

    我正在通过 Windows h 使用 Sleep 命令制作一个程序 并且在 Windows 10 而不是 Windows 7 上运行我的程序时遇到了令人沮丧的差异 我将我的程序简化为下面的程序 它与我的更复杂的程序表现出相同的行为 在 Wi
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • PostgreSql“运行安装后步骤...数据库集群初始化失败”

    我是一名 Windows 用户 我花了几个小时不断地安装和卸载 然后才使其正常工作 前 10 次左右才看到标题中的错误消息 我将其作为一个自我回答的问题放在这里 以防止其他人在安装时可能遇到同样的问题 并为像我这样第一次使用 Postgre
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • Glew+GLFW Win32 无依赖项 Visual Studio

    是否可以在不将文件复制到 C 的情况下构建并链接 Glew 和 GLFW 我找不到任何说明如何在不将 DLL 复制到 C 上的 Visual Studio 目录的情况下使用这些库的文档 我只想包含项目目录中所需的所有 dll 和 lib 文
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 提取证书中主题属性的所有值

    我目前正在使用CertGetNameString http msdn microsoft com en us library windows desktop aa376086 28v vs 85 29 aspx提取每个主题属性的值 如下所示
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • 无法启动 Windows 服务,错误 1064

    我编写了一个在 Win10 上运行的 Windows 服务 它运行得非常好 直到我决定对其进行一些更改 我重写了一些逻辑 在调试和发布配置中进行了测试 一切都很好 然后 我使用卸载了当前版本的服务installutil exe u serv
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子

随机推荐