问题标签 [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.
iphone - 使用 PVRTC 纹理的问题
我正在尝试使用 PVRTC 图像而不是 PNG。问题是,我无法在地图上看到它们。
这是我的代码:
我使用这个命令来创建压缩纹理:
glGetError()返回 1281(绑定纹理失败)。但是,如果我检查glIsTexture (),它会返回 true。
有任何想法吗?哦,我在 iPhone 上使用 OpenGL ES。
iphone - Quartz 如何处理纹理压缩?
我在 iPhone 上进行开发,我们的大部分游戏都使用 OpenGL ES,但也有一些菜单使用 CGImage 和 Quartz 来显示。在 OpenGL ES 中,我知道无论采用何种图像压缩方式(JPG、PNG 等),作为纹理存储在内存中的数据都是 8 位纹理,除非我使用 PVRTC 在这种情况下我可以得到它2 或 4 位。由于 CGImage 较大,我们一直存在内存问题,所以我的问题是...... Quartz 和 CGImage 使用什么样的优化和压缩?我在 Apple 的文档中找不到详细信息,当我真的想知道放入 256 色图像或 JPG 与 PNG 是否会有所不同,如果尺寸为 2 次方有帮助,等等速度并不重要,内存是这里的瓶颈。
谢谢。
opengl - 如何在 GPU 中创建纹理
谁能告诉我如何使用硬件内存在 OpenGL 中创建纹理?目前我在窗口模式下运行我的游戏,我是否需要切换到全屏才能使用硬件?
如果我可以在硬件中创建纹理,纹理数量(硬件内存除外)是否有限制?然后如何将我的纹理缓存到硬件中?谢谢。
c++ - 任意大小的 DirectX9 纹理(非 2^n)
我对 DirectX 比较陌生,必须处理现有的 C++ DX9 应用程序。该应用程序在相机图像上进行跟踪并显示一些 DirectDraw(即 2d)内容。相机的纵横比为 4:3(始终),屏幕未定义。
我想加载纹理并将此纹理用作蒙版,因此仅在纹理的蒙版区域内完成内容的跟踪和显示。因此,我想加载与相机图像大小完全相同的纹理。
我已经完成了加载纹理的所有步骤,但是当我调用GetDesc()
字段时,Width
结构的大小是下一个更大的 2 次方大小。我不在乎用于纹理的实际内存是否针对显卡进行了优化,但我没有找到任何方法来获取硬盘上原始图像文件的尺寸。Height
D3DSURFACE_DESC
我确实(并且确实,但没有成功)搜索了一种可能性,即仅将图像加载到计算机 RAM 中(不需要显卡)而不向代码添加新的依赖项。否则我将不得不使用 OpenCV(在跟踪方面这可能是一个好主意),但目前我仍然尽量避免包含 OpenCV。
谢谢你的提示,诺伯特
opengl - 带有 Alpha 测试的 Opengl 选择
从我在互联网上看到的情况来看,我的方法无法真正解决这个问题。
我目前正在编写一个程序,该程序使用选择缓冲区传递场景中的所有对象。但是,其中一个对象是纹理,其中很大一部分具有 alpha 0。它在渲染时工作正常,不显示 alpha 值,但在选择模式下,会跳过 alpha 测试,并将鼠标悬停在透明区域选择对象而不是它后面的任何东西。
有没有办法在选择模式下启用 alpha 测试?
opengl - 是否有更有效的方法来处理 OpenGL ES 纹理的 2^n 像素大小要求?
对不起,如果我的问题不清楚。让我详细说明。
我有一个大小为 100 x 200 的矩形,我有一个适合该矩形的图形大小为 100 x 200。由于 OpenGL 要求所有纹理都具有 2^n 的宽度和高度,因此我基本上将 100 x 200 的图形直接放入 128 x 256 的图像中。它适用于 OpenGL,因为我只是要求它仅在矩形上绘制我需要的一部分纹理。然而,让我烦恼的是,在 128 x 256 的纹理中,有很多未使用的空间。
在这种情况下,有没有更好的方法来处理这些未使用的空间?或者这应该是要走的路?
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
- Render a bunch of stuff with the textures
- Update a few parts of the texture (which may have been used by the previous renders)
- Render some more stuff with the texture
- Update another part of the texture
- 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?
- Call LockRect and UnlockRect for each region I need to update
- Call LockRect and UnlockRect for the entire texture
- Call LockRect and UnlockRect for the entire texture with D3DLOCK_DISCARD and copy in a bitmap from RAM.
- Create a completely new texture each time I need to "update it"
- Use 1,2 or 3 to update a surface in D3DPOOL_SYSMEM, then UpdateSurface to update level 0 of my texture from this surface
- Same as 5 but specify RECT to cover the entire area I need
- Same as 5 but make multiple calls, one for each region I updated
- 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.
c++ - 将 D3DFMT_UNKNOWN 传递给 IDirect3DDevice9::CreateTexture()
我有点想知道这一点,如果您使用 CreateTexture 函数在 DirectX 中的内存中创建纹理:
...并以D3DFMT_UNKNOWN
格式传递到底应该发生什么?如果我尝试获取第一层或第二层的表面会导致错误吗?会失败吗?图形设备会选择它选择的随机格式吗?这会导致不同显卡型号/品牌之间出现问题吗?
iphone - 如何在 iPhone 上使用压缩纹理?
是否有任何教程可以教我如何在我的程序中使用 mipmapping?我已经知道如何生成 mipmap,但我想了解如何在我的程序中读取、加载和使用 pvr 文件。
iphone - OpenGLES纹理消失
我在切换 OpenGLES 视图(EAGLViews)时遇到了一点麻烦。当我向 EAGLView 添加子视图时,视图中显示的纹理消失了。我不知道为什么。我正在使用教程中的代码来加载纹理。
我有一个视图,在那里我正在显示纹理,然后我通过调用 addSubview 方法将子视图添加到该视图中。然后,当我想返回上一个视图时,我只需在子视图上调用 removeFromSuperview 方法。问题是,在超级视图中不再有纹理。你不知道我做错了什么吗?
我不想在这里发布所有代码,它是来自 XCode 的模板,正如我所说,纹理加载取自互联网上的教程。
也许如果你不知道为什么会发生这种情况,至少请给我关于切换 EAGLViews 的建议。(如果有更好的方法,那么 addSubview 然后 removeFromSuperview)。
非常感谢。