问题标签 [textures]

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 回答
2444 浏览

iphone - 使用 PVRTC 纹理的问题

我正在尝试使用 PVRTC 图像而不是 PNG。问题是,我无法在地图上看到它们。

这是我的代码:

我使用这个命令来创建压缩纹理:

glGetError()返回 1281(绑定纹理失败)。但是,如果我检查glIsTexture (),它会返回 true。

有任何想法吗?哦,我在 iPhone 上使用 OpenGL ES。

0 投票
1 回答
339 浏览

iphone - Quartz 如何处理纹理压缩?

我在 iPhone 上进行开发,我们的大部分游戏都使用 OpenGL ES,但也有一些菜单使用 CGImage 和 Quartz 来显示。在 OpenGL ES 中,我知道无论采用何种图像压缩方式(JPG、PNG 等),作为纹理存储在内存中的数据都是 8 位纹理,除非我使用 PVRTC 在这种情况下我可以得到它2 或 4 位。由于 CGImage 较大,我们一直存在内存问题,所以我的问题是...... Quartz 和 CGI​​mage 使用什么样的优化和压缩?我在 Apple 的文档中找不到详细信息,当我真的想知道放入 256 色图像或 JPG 与 PNG 是否会有所不同,如果尺寸为 2 次方有帮助,等等速度并不重要,内存是这里的瓶颈。

谢谢。

0 投票
3 回答
5307 浏览

opengl - 如何在 GPU 中创建纹理

谁能告诉我如何使用硬件内存在 OpenGL 中创建纹理?目前我在窗口模式下运行我的游戏,我是否需要切换到全屏才能使用硬件?

如果我可以在硬件中创建纹理,纹理数量(硬件内存除外)是否有限制?然后如何将我的纹理缓存到硬件中?谢谢。

0 投票
2 回答
2397 浏览

c++ - 任意大小的 DirectX9 纹理(非 2^n)

我对 DirectX 比较陌生,必须处理现有的 C++ DX9 应用程序。该应用程序在相机图像上进行跟踪并显示一些 DirectDraw(即 2d)内容。相机的纵横比为 4:3(始终),屏幕未定义。

我想加载纹理并将此纹理用作蒙版,因此仅在纹理的蒙版区域内完成内容的跟踪和显示。因此,我想加载与相机图像大小完全相同的纹理。

我已经完成了加载纹理的所有步骤,但是当我调用GetDesc()字段时,Width结构的大小是下一个更大的 2 次方大小。我不在乎用于纹理的实际内存是否针对显卡进行了优化,但我没有找到任何方法来获取硬盘上原始图像文件的尺寸。HeightD3DSURFACE_DESC

我确实(并且确实,但没有成功)搜索了一种可能性,即仅将图像加载到计算机 RAM 中(不需要显卡)而不向代码添加新的依赖项。否则我将不得不使用 OpenCV(在跟踪方面这可能是一个好主意),但目前我仍然尽量避免包含 OpenCV。

谢谢你的提示,诺伯特

0 投票
2 回答
1813 浏览

opengl - 带有 Alpha 测试的 Opengl 选择

从我在互联网上看到的情况来看,我的方法无法真正解决这个问题。

我目前正在编写一个程序,该程序使用选择缓冲区传递场景中的所有对象。但是,其中一个对象是纹理,其中很大一部分具有 alpha 0。它在渲染时工作正常,不显示 alpha 值,但在选择模式下,会跳过 alpha 测试,并将鼠标悬停在透明区域选择对象而不是它后面的任何东西。

有没有办法在选择模式下启用 alpha 测试?

0 投票
3 回答
263 浏览

opengl - 是否有更有效的方法来处理 OpenGL ES 纹理的 2^n 像素大小要求?

对不起,如果我的问题不清楚。让我详细说明。

我有一个大小为 100 x 200 的矩形,我有一个适合该矩形的图形大小为 100 x 200。由于 OpenGL 要求所有纹理都具有 2^n 的宽度和高度,因此我基本上将 100 x 200 的图形直接放入 128 x 256 的图像中。它适用于 OpenGL,因为我只是要求它仅在矩形上绘制我需要的一部分纹理。然而,让我烦恼的是,在 128 x 256 的纹理中,有很多未使用的空间。

在这种情况下,有没有更好的方法来处理这些未使用的空间?或者这应该是要走的路?

0 投票
2 回答
2447 浏览

direct3d - Best way to update a Direct3D Texture

I need to render some CPU generated images in Direct3D 9 and I'm not sure of the best way to get the texture data onto the graphics card as there seems to be a number of approaches.

My usage path goes along the following lines each frame

  1. Render a bunch of stuff with the textures
  2. Update a few parts of the texture (which may have been used by the previous renders)
  3. Render some more stuff with the texture
  4. Update another part of the texture
  5. and so on

Ive thought of a couple of ways to do this, however I'm not sure which one to go with. I considered benchmarking each method however I have no way to know if any results I get are representative of hardware in general, or only my hardware.

  • Which pool is best for a texture for this task?
  • Whats the best way to update this texture?
    1. Call LockRect and UnlockRect for each region I need to update
    2. Call LockRect and UnlockRect for the entire texture
    3. Call LockRect and UnlockRect for the entire texture with D3DLOCK_DISCARD and copy in a bitmap from RAM.
    4. Create a completely new texture each time I need to "update it"
    5. Use 1,2 or 3 to update a surface in D3DPOOL_SYSMEM, then UpdateSurface to update level 0 of my texture from this surface
    6. Same as 5 but specify RECT to cover the entire area I need
    7. Same as 5 but make multiple calls, one for each region I updated
    8. Probably yet another way to do this I haven't thought of yet...

It should be noted that the areas I'm updating are usually fairly small compared to the size of the entire texture, eg the texture may be 1024*1024 and I might want to update 5 or so 64*64 regions of it.

0 投票
3 回答
1698 浏览

c++ - 将 D3DFMT_UNKNOWN 传递给 IDirect3DDevice9::CreateTexture()

我有点想知道这一点,如果您使用 CreateTexture 函数在 DirectX 中的内存中创建纹理:

...并以D3DFMT_UNKNOWN格式传递到底应该发生什么?如果我尝试获取第一层或第二层的表面会导致错误吗?会失败吗?图形设备会选择它选择的随机格式吗?这会导致不同显卡型号/品牌之间出现问题吗?

0 投票
2 回答
1767 浏览

iphone - 如何在 iPhone 上使用压缩纹理?

是否有任何教程可以教我如何在我的程序中使用 mipmapping?我已经知道如何生成 mipmap,但我想了解如何在我的程序中读取、加载和使用 pvr 文件。

0 投票
1 回答
404 浏览

iphone - OpenGLES纹理消失

我在切换 OpenGLES 视图(EAGLViews)时遇到了一点麻烦。当我向 EAGLView 添加子视图时,视图中显示的纹理消失了。我不知道为什么。我正在使用教程中的代码来加载纹理。

我有一个视图,在那里我正在显示纹理,然后我通过调用 addSubview 方法将子视图添加到该视图中。然后,当我想返回上一个视图时,我只需在子视图上调用 removeFromSuperview 方法。问题是,在超级视图中不再有纹理。你不知道我做错了什么吗?

我不想在这里发布所有代码,它是来自 XCode 的模板,正如我所说,纹理加载取自互联网上的教程。

也许如果你不知道为什么会发生这种情况,至少请给我关于切换 EAGLViews 的建议。(如果有更好的方法,那么 addSubview 然后 removeFromSuperview)。

非常感谢。