问题标签 [dds-format]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1036 浏览

graphics - 在 DDS 文件中,您可以检测 0/1 alpha 位的纹理吗?

在我的引擎中,我需要能够检测具有 0 alpha 纹素的 DXT1 纹理(例如,窗口框架的切口)。这对于我自己压缩的纹理很容易,但我不确定已经压缩的纹理。

有没有一种简单的方法可以从标题中判断 DDS 图像是否包含 alpha?

0 投票
3 回答
12224 浏览

c# - 如何将 .dds 文件加载到图片框中?

如何在 C# 中将 .dds 纹理文件加载为图像?在谷歌上我找不到任何有用的东西。

你给我的样品信息越多,我就越容易理解。

0 投票
2 回答
6720 浏览

compression - 我认为 *.DDS 文件是为了快速加载?

好的,所以我正在尝试权衡使用各种不同纹理压缩技术的利弊。我花费了 99.999% 的时间为使用 DirectX 的 Windows 机器编写 2D sprite 游戏。

到目前为止,我已经研究了带有 alpha-trimming 的纹理打包(SpriteSheets),这似乎是一种获得更多性能的好方法。现在我开始研究它们存储的纹理格式;目前所有内容都存储为 *.PNG。

我听说 *.DDS 文件很好,尤其是与 DXT5(/3/1,取决于任务)压缩一起使用时,因为纹理在 VRAM 中保持压缩?人们还说,由于它们已经是 DirectDraw 表面,因此它们的加载速度也快得多。

所以我创建了一个应用程序来测试它;我调用了 20 次以下的行,在每次调用之间释放纹理。

现在,如果我使用 DXT5 纹理尝试此操作,完成时间比加载简单 *.PNG 的时间长 5 倍。我听说如果你不生成 Mipmap,它会变慢,所以我仔细检查了一遍。然后我更改了用于生成 *.DDS 文件的程序,切换到 NVIDIA 自己的 nvcompress.exe,但没有任何效果。

编辑:我忘了提到文件(*.png 和 *.dds)都是相同的图像,只是以不同的格式保存。(相同的大小,alpha 的数量,一切!)

编辑 2:当使用以下参数时,它的加载速度几乎快了 2.5 倍,并且消耗的 VRAM 更少!

但是,我现在失去了纹理中的所有透明度,我查看了 DXT5 纹理,它在 Paint.NET 和 DirectX DDS 查看器中看起来很好。但是,当加载所有透明度时,会变成纯黑色。颜色键问题?

编辑 3:忽略最后一点,我很愚蠢,在我的“快速示例”中,我忘记在 D3DXSprite->Begin() 上启用 Alpha-Blending。嗬!

0 投票
2 回答
5524 浏览

c++ - DDS DXT1 在 OpenGL 中加载,崩溃

知道我的代码有什么问题吗?当我执行 glCompressedTexImage2D() 程序只是崩溃(出现 Windows XP 崩溃消息......)

我试图在没有 mipmap 的情况下加载 DDS 图像,图像格式是 DDS DXT1

我错过了一些包含文件,还是我做错了什么?我从以下网址下载了包含的文件:http: //sourceforge.net/projects/glew/files/glew/1.5.1/glew-1.5.1-win32.zip/download

我的 .exe 所在的文件夹中有 glew32.dll。

下面的代码只有我更改为能够加载 DDS 图像的部分:

0 投票
1 回答
759 浏览

windows - 我需要编写一个跨平台的 .DDS 文件,有人可以举个例子吗?

我需要使用在 OSX 和 Windows 上运行的代码创建一个 .DDS 文件。尽管格式看起来并不难,但我仍然想要一个编写文件的示例。注意我不需要阅读它,只需编写它。

C 或 C++ 和 RGBA 位图。

0 投票
1 回答
1650 浏览

c++ - OpenGL中使用DDS压缩图像的立方体映射?

我在使用 DDS 立方体贴图时遇到立方体映射问题,我只是得到一个黑色立方体,这让我相信我遗漏了一些简单的东西,这是到目前为止的代码:

调用此代码后,我使用 glBindTexture 绑定纹理并使用 GL_QUADS 和 glTexCoord3f 绘制立方体。

0 投票
0 回答
1290 浏览

png - Compressonator 使用 alpha 通道将 dds 转换为 png

使用 alpha 通道将 dds 转换为 png 的命令是什么?

如果我使用这个命令:

那么输出 png 不使用 alpha 通道。如果我打开TheCompressonator.exe,选择Edit-->create alpha channel,然后选择file to save original to png,png文件包含alpha通道,但是我有很多dds文件需要转换。

0 投票
0 回答
1834 浏览

c++ - Directx11:删除特定精灵的 Alpha 混合

背景: - 过去 6 周我一直在尝试学习 Directx 11 编程。

我目前正在按照本书 http://www.amazon.co.uk/Beginning-Directx-11-Game-Programming/dp/1435458958/ref=sr_1_1?ie=UTF8&qid=1346510304&sr=8在屏幕上渲染 dds 图像-1

我正在尝试在 2D 背景上绘制 2D 精灵,它本身也是 2D 精灵。问题是这两行

d3dDevice_->CreateBlendState( &blendDesc, &alphaBlendState_ );

d3dContext_->OMSetBlendState(alphaBlendState_, blendFactor, 0xFFFFFFFF);

启用 dds 图像中的 alpha 透明度。我喜欢混合精灵的选项,但现在每个精灵都与我的蓝色背景混合,从而产生蓝色徽标、图标等。

如何使 Alpha 混合忽略 directx 11 中的特定图像?

由于背景精灵是第一个被绘制的,我无法在代码中稍后在渲染其他精灵时激活混合,而每个精灵都变成蓝色。

提前致谢 :)

编辑:过去 3 周我一直在研究这个问题,但仍然没有解决方案。每次在 DeviceContext 中启用混合状态似乎都适用于屏幕上绘制的每个纹理,无论渲染顺序如何。

下面是头文件的源代码:

这是cpp文件的源代码:(不需要基类DxD11DemoClass,因为它只设置了SwapChain和D3DContext)

启用混合绘图时的结果屏幕 http://i49.tinypic.com/33kao9v.jpg

这是我正在使用的两个 FX 文件的 HLSL 代码(第一个用于精灵,第二个用于文本)

纹理贴图.fx

文本映射.fx

我想知道也许可以使用像素着色器来为特定的 2D 图像执行 alpha 混合,但我的第一次尝试根本没有奏效。

希望有人能以某种方式找到解决方案:)

并再次感谢您的帮助。

0 投票
2 回答
2700 浏览

compression - DXT 压缩产生与原始 PNG 相同的文件大小

我正在尝试使用原始 PNG 的 DXT 压缩将我的纹理转换/压缩为 DDS 格式。我在 Mac 上,所以我使用的是图形转换器(尽管我也尝试过其他工具)。但无论我使用哪种 DXT 级别 (DXT1-5),文件大小都与原始 PNG 大致相同。

0 投票
0 回答
1891 浏览

c# - OpenTK 纹理显示为全黑

好的,所以我采用了一些在其他程序上运行良好的代码,我已经将它复制到我正在开发的一个新程序中,但它似乎不起作用,据我所知,我已经得到了所有需要的东西那里有线条,但应该出现纹理的区域只显示黑色方块。

我想我错过了一条线,但我不知道它是什么。至少可以说我很困惑。

这是我的opengl设置:

这是加载纹理并返回纹理 ID 的方法,我将其存储在我的变量中。(file.writeallbytes 只是一个测试,我可以在 photoshop 中打开没问题)

我的绘图方法是这样的:

编辑:纹理确实出现了,但是纹理是全黑的,即使我设置了另一个颜色值(这通常会改变纹理的色调)