- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
DDS 格式已经为 directX 制作好了吗?所以我猜应该针对它而不是针对 openGL 进行优化。
那么,还有另一种格式吗?如果是,什么格式是一个不错的选择?什么原因?
另外,因为我在 linux 上工作,所以我也担心在 linux 上制作纹理。所以我需要一种可以由 gimp 导入/导出的格式。
最佳答案
DDS 格式可用于存储压缩纹理。如果您以与存储在 GPU 内存中相同的压缩方式存储文件,则无需为 GPU 存储解码和重新编码,而是直接将其移动到内存即可。
DDS格式基本上是用来存储S3 Texture Compression数据的。内部 DDS 格式 DTX3 和 DTX5 是 OpenGL 也支持的例如 S3TC 格式: http://www.opengl.org/wiki/S3_Texture_Compression
DDS 还可以存储预先计算的 mipmap。同样,这是减少加载时间的权衡(更大的文件大小),因为 mipmap 也可以在加载时计算。如您所见,如果您有正确的代码来解析 DDS 文件,例如有效负载将以其压缩形式获取,而不是在主机上解码,那么使用 DDS 就完全没问题了。
作为替代方案,@CoffeeandCode 指出了 KTX他的回答中的格式。这些文件使用不同的压缩算法 ( see here )。优点是这种压缩在较新的 OpenGL 版本中是强制性的,而 S3TC 压缩始终仅作为扩展可用(并且具有 patent problems )。我不知道它们在质量上的比较如何,也不知道您是否可以在目标平台上期待 OpenGL 4.3。
我的看法:如果您的目标是最近的硬件和 OpenGL 支持(OpenGL ES 3 或 OpenGL 4.3),您应该使用 KTX 格式和相应的纹理格式(libktx 将为您生成纹理对象).如果您需要能够在较旧的硬件上运行或者碰巧已经拥有大量 DDS 数据,您可能应该暂时坚持使用 DDS。
关于linux - linux 上 opengl 的 DirectDraw Surface (DDS) 格式的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23653068/
Surface Go是一款微软推出笔记本电脑,但不少小伙伴在使用一段时间之后总会想重装系统从而使电脑更加流畅,那么Surface Go要如何重装Win10系统,下面就和小编一起来看看如何操作吧。
在我的第二个项目中,我使用 opengl 和 SDL2。我想使用 SDL2 将文本渲染到表面,然后进行转换。 我已经在使用 SDL 从文件中加载纹理,所以我有一个可以转换曲面的函数。当我提供由 TTF
我最近更改了表面对象算法的表面引用。然后,我注意到程序运行速度变慢了。 这是一个简单示例的比较,其中我用常量值填充 3D float 数组 [400*400*400]。 表面引用API 时间:9.06
有时,当我退出我的 openGL ES 1 应用程序时,以下错误消息会不断张贴在 logcat 中,应用程序会卡住,并在某个时候终止。 E/EglHelper(4284): Surface is no
这可能是一个愚蠢的问题,但我无法在任何地方找到答案。 Microsoft Surface SDK 2.0 是否仅适用于 Microsoft Surface 产品,还是我可以将其用于其他触摸屏?我真的很
我已经将 camera2 与 textureVIew 集成在一起。它适用于所有设备,但在平板电脑上,当我们第一次捕获图像时,它会崩溃并显示以下日志。 Fatal Exception: java.la
在我正在处理的一个 pygame 项目中,角色和对象的 Sprite 会在地形上转换阴影。阴影和地形都是正常的 pygame 表面,因此,为了显示它们,阴影被 blit 到地形上。当没有其他阴影(只有
在 pygame 中将我的表面涂成黑色之后。我得到错误 pygame.error: display Surface quit. 完整错误: > D:\Programme\Anaconda3\envs\
有谁知道如何用Julia的Pyplot绘制3D曲面,例如 作为面部颜色的表面渐变? 类似于此主题适用于Python:Color matplotlib plot_surface command with
我一直在尝试将 Camera2 api 集成到我的应用程序中。它一开始捕捉图像时工作正常。但是当我第二次拍摄时,预览没有出现。我在 genymotion nexus 5 模拟器中测试了它。尝试了所有示
阅读 pygame 教程 here ,你会发现这个例子:(箭头是我的) for o in objects: screen.blit(background, o.pos, o.pos) # Re
我正在创建两个渲染目标,两者都必须共享后台缓冲区的深度缓冲区,因此我将它们设置为具有相同的多重采样参数很重要,但是 pDevice->CreateTexture(..) 没有给出任何参数设置多重采样类
我正在尝试在屏幕上对文本表面进行 blit,但出现此错误: 类型错误:参数 1 必须是 pygame.Surface,而不是元组。 可能有什么问题?我确信我的文字是一个表面。 import pygam
Joel Spolsky 在 SO 播客中提到了“浮出水面”。 这是什么意思?它是类似于“暴露”的东西吗,比如“暴露接口(interface)”? 最佳答案 这里引用自 podcast 51 的文字记
下面给了我错误 var textSurface = new Surface({ content: 'Some text here', properties:{ color: 'whit
我是一个小机器人,但有一项艰巨的任务要做。我的布局上有一个图像按钮。单击它应该开始显示 camera preview 。 (我有一个视频同时显示在另一个表面上。)两者都很好。 但是当再次按下按钮时,预
我试图每 5 秒画一个红色圆圈。我有一个 draw 和一个 run 方法,run 方法调用绘制圆圈的 draw 方法。但是,当从 run 方法调用 draw 方法时,表面无效,所以我无法绘制任何东西并
我想知道 Surfaceflinger 是否知道当前屏幕上的可点击区域,或者 SurfaceFlinger 只显示最终屏幕,它对可点击区域一无所知,并且 windowmanagerservice 将输
所以这段代码似乎是问题所在: public void surfaceCreated(final SurfaceHolder sh) { loop = new Loop(); loop.
Opengl 纹理坐标 [0,0] 位于左下角。 DDS 文件是否包含有关数据布局的信息(如果数据从左上角或左下角开始)或有一个固定的布局?例如 ktx 文件包含此类信息。 最佳答案 DDS 文件格式
我是一名优秀的程序员,十分优秀!