问题标签 [mipmaps]

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 投票
1 回答
3690 浏览

performance - 如何在opengl中从大图像创建纹理(大于MAX_TEXTURE_SIZE)

我发现我的 opengl 可以支持的最大纹理大小是 8192,但我正在使用的图像是 16997x15931。正如您在此链接中看到的那样,我已经完成了COpenGLControl类并对其进行了自定义以供我自己使用以使用较小的 7697x7309 图像并为其激活不同的导航任务。

在 OpenGL 中的 2D 纹理顶部渲染一个带轮廓的红色矩形

但现在在工作的最后阶段,我决定更改应用纹理的部分,使其能够处理大于 8192 尺寸的图像。

问题:

  • 在我的opengl中有可能吗?
  • 我应该研究什么概念,mipmaps,多重纹理?
  • 它会扩展代码的性能吗?

现在我的程序使用 271 MB 的内存来显示这个小图像(7697x7309),我将向它添加一个任务(用于图像处理过滤过程),我已经竭尽全力优化代码,但它为 (7697x7309) 图像使用 376 MB 的内存(代码已经编写为控制台应用程序将与此项目结合使用)。所以我认为最终的项目将使用高达 700 MB 的内存来存储接近 7000x7000 大小的图像。显然,对于更大的图像(16997x15931),ram 的使用率会更高!

所以我正在寻找一个概念来处理大于 MAX_TEXTURE_SIZE 的图像并优化程序的性能

更多问题:

  • 我应该在OpenGL中学习什么概念来实现上述目标?
  • 解释一下你建议的概念?

我也在游戏开发中问过这个问题,但决定在这里重复这个问题,也许它会有更多的观众。一旦我得到答案,我将从任何一个网站上删除问题。所以不用担心多次提问。

0 投票
1 回答
147 浏览

c# - mipmapping 产生错误的结果

我正在尝试生成图像的 mipmap。像素存储为 byte[] 格式为 {r,g,b,a,r,g,b,a,r,g,b,a ... }

它试图做的是获取图像中的每组四个像素并找到这四个像素的平均值,然后将其放入新图像中。

为示例纹理创建所有 mipmap 的结果在这里:http: //imgur.com/KdEEzAw

如果有一种方法可以在不使用我自己的算法且不使用 directx 或任何东西(我没有使用 mipmap 进行渲染,我将它们保存到文件中)的情况下创建 mipmap,那就太好了

0 投票
1 回答
1442 浏览

javascript - 我的 spritesheet / atlas 是否应该是 2 的幂

使用 Atlases / Spritesheets 来减少基于 Web 的游戏的连接开销是一种常见的做法,而且,我读过关于使用 2 次方的 sprite,这对内存和 mipmapping 都很有用(不确定这是否适用于基于网络的游戏)。

但是,同样的原则(mipmapping)是否适用于 Atlases?基本上,我的 Atlas 的大小应该是 2 的幂还是它(2 的幂规则)适用于它包含的单个图像?

0 投票
2 回答
8453 浏览

performance - OpenGL/DirectX:Mipmapping 如何提高性能?

我非常了解 mipmapping。我不明白(在硬件/驱动程序级别)mipmapping 如何提高应用程序的性能(至少这是经常声称的)。在执行片段着色器之前,驱动程序不知道要访问哪个 mipmap 级别,所以无论如何所有 mipmap 级别都需要存在于 VRAM 中,还是我错了?

究竟是什么导致了性能提升?

0 投票
0 回答
477 浏览

three.js - 如何确定是否生成了 mipmap?(三.js)

如何确定是否为我的纹理生成了 mipmap?纹理的“mipmaps”属性仅用于手动 mipmap,默认情况下为空,对吗?

我的纹理是 2 的幂,这就是我对它们所做的:

感谢您的提示!

0 投票
1 回答
417 浏览

mipmaps - 使用纹理数组构建 PVRTC mipmaps 纹理?

如何使用纹理数组为每个 mipmap 级别的不同纹理构建 PVRTC mipmaps 纹理?

例如。2048.png 0 级 1024.png 1 级。. 2.png 10 级 1.png 11 级

我的 OpenGL ES2 需要具有 PVRTC 压缩的 mipmap 纹理。我在谷歌上搜索,我没有运气。唯一的解决方案是编辑 DDS 并转换为 PVRTC。问题是 DDS 的 NVIDIA 编辑适用于 Windows,而我在 OSX 上。

剂量任何人都知道如何避免获胜。或者一些 c/c++/objective-c 开源代码将帮助我构建我可以在支持 .ktx .dds 的 PVRTexTool 中转换的 mipmap

谢谢。

0 投票
0 回答
544 浏览

opengl-es - 如何解决缺少 EXT_shader_texture_lod 的问题?

我对该主题进行了一些研究,似乎在 GLES 2.0 + GLSL 上答案是“不可能的”,但我还是敢再问一次。

在我的代码中,LOD 不仅取决于与相机的距离(此外,这种依赖性是不寻常的),还取决于相机的俯仰角。到目前为止,使用常规 LOD 计算方法来模拟这种行为似乎是不可能的。但我希望我真的错过了什么。代码可在此处获得 https://github.com/osmandapp/OsmAnd-core/blob/master/src/Map/OpenGL_Common/AtlasMapRenderer_OpenGL_Common.cpp#L226

0 投票
1 回答
2788 浏览

opengl - Mipmap 数组和细节级别有什么区别?

textureQueryLod 调用返回两个组件:

  1. x - 说明使用的 mipmap 级别的比例。
  2. y - 详细程度。

他们都一样吗?

0 投票
1 回答
759 浏览

c# - 如何在 SharpDX Toolkit (2.5) 中创建 MipMaps

我正在使用 SharpDX-Toolkit,无法在 Texture2D 上创建 mimap。如果我通过内容管理器加载纹理并尝试调用 GenerateMipMaps() 我收到 NotSupportedException:

无法为此纹理生成 mipmap(必须是 RenderTarget 和 ShaderResource 以及 MipLevels > 1

代码(在游戏类的 LoadContent-Method 中):

我不知道该怎么办,我希望任何人都可以帮助我解决这个问题。谢谢。

0 投票
1 回答
8498 浏览

c++ - OpenGL glGeneratemipmap 和帧缓冲区

我正在忙于动态生成 mipmap,并使用以下代码阅读这一点:http ://www.g-truc.net/post-0256.html

我的问题:

  1. 为什么glGenerateMipmap在渲染到纹理的情况下需要调用两次?
  2. 是否必须每帧都这样调用?

例如,如果我导入漫反射 2d 纹理,则只需在将其加载到 OpenGL 后调用一次,如下所示:

我怀疑这是因为纹理每帧都会重绘,并且 mipmap 生成在此过程中使用其内容,但我想确认这一点。

3 - 另外,如果我渲染到我的 gbuffer,然后立即glBlitFramebuffer将其渲染到默认 FBO,我是否需要绑定并glGenerateMipmap喜欢这样?