问题标签 [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 - 绘制多边形以将纹理裁剪为透明,其中多边形在 OpenGL ES 中
我有两层正在绘制。一个静态背景纹理和一个带有透明部分的纹理(png)。我可以毫无问题地正确看到背景。我想做的是通过绘制一个多边形(矩形)来修改顶层,该多边形(矩形)的大小会在运行时改变,使顶层的那部分透明,所以你只看到那个静态背景。
我在 iphone 上使用 Cocos2d 并找到了作者的一个很好的解决方案(参见 #6),但在他的示例中,他使用另一个 PNG 文件作为掩码。由于我的透明部分将在运行时以可变高度和宽度创建,因此图像不起作用。我认为一遍又一遍地绘制图像(蒙版)的开销也很大。
我已经对此进行了一段时间的研究,发现一些人谈论仅将多边形绘制到 Alpha 通道,我已经能够让多边形绘制到该通道,它不会使其透明,只是稍微亮一点的颜色。
我希望我只是缺少一些简单的东西:
我已经尝试了 GL_ONE GL_ZERO GL_ALPHA_FROM_SRC 等的大量不同组合......
进一步阅读也许我只需要剪裁纹理?没有着色器这可能吗?我知道 iPhone 3GS 可以做着色器,但早期的不能。
opengl-es - 生成 OpenGL ES 纹理后释放 UIImage 时程序崩溃
现在,我已经按照本教程进行操作:
http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-part-6_25.html
如果我尝试释放 UIImage,它不起作用:我会得到一个“EXC_BAD_ACCESS”。现在,我将 UIImage 设为实例变量并保留它们。我不让它自动释放。但问题是有时我想删除我的纹理。我需要释放那些 UIImage 否则我会泄漏。(Performance Tool Leaks 报告说 UIImage 会导致泄漏)但是如果我释放 UIImage,我会得到 EXC_BAD_ACCESS。而且我什至根本没有在任何地方绘制它们或访问它们。该程序只是在它发布的地方崩溃:
Texture.m 中的第 329 行是我发布 UIImage 的地方。
我的代码与教程有点不同,但它的工作方式应该非常相似:
如果你能看出什么是错的,请指导我。谢谢你。
iphone - 是否可以检查 iPhone 上的 OpenGL ES 纹理是否真正被释放?
手册只是指示您编写:
并声称纹理将被删除。iPhone内存稀缺,我想确保这些纹理真正释放出来。
Leaks 仪器无法检测到这一点,坦率地说,我有点担心。我真的很想确保纹理真的消失了。
谢谢你。
javascript - 在 O3D 中启用纹理的透明度
我有一组肺和心脏的纹理,我将其应用于一系列三角形。纹理是一个 .png 文件,具有透明背景,但是当我在 O3D 中应用它时,它显示为白色背景。我怎样才能让它显示为透明?
iphone - iPhone OpenGL ES 的基本 2D 纹理教程
刚开始学习 OpenGL,找不到像样的教程让我继续学习。具体来说,我正在寻找可以向我展示如何将图像加载到 OpenGL 纹理、将其存储在变量中以便稍后显示,然后绘制图像的东西。
如果有人能为我写出基本代码,我将不胜感激。如果我可能会要求您也将加载和绘图的代码分开,并彻底评论正在发生的事情。
非常感谢
opengl - OpenGL Texture Combiner - 渐变纹理
我有 2 个 RGBA8 纹理:
A) 在所有通道中显示数据的“主”纹理
B) 只有在 alpha 中有意义的数据的“渐变”纹理(当然这应该只是一个 A8 纹理)
使用 OpenGLES 1.1 纹理组合器,我希望生成的纹素从纹理#A 复制 RGB,并使用从两个纹理调制的 alpha(来自纹理 A 的 alpha * 来自纹理 B 的 alpha)。
我的纹理组合器代码有问题(我已经尝试过使用它)并且想知道是否有人能发现问题:
我得到的结果基本上看起来就像纹理#A(主纹理)中的 RGBA。
java - 在OpenGL ES(Android)中使用带有纹理的索引缓冲区有什么意义吗?
我正在使用 OpenGL ES 来显示从 Blender 导出的一些对象。Blender 提供了一个顶点列表、一个面索引列表和一个 2d 纹理坐标列表。在 Blender 中,我一般相信在 OpenGL 中,纹理坐标映射到索引数组中描述的每个顶点。
我想我有两个问题:
我被告知(请参阅“应用纹理”部分)在 OpenGL ES 中,纹理坐标仅映射到顶点缓冲区,而不是索引缓冲区。是这种情况还是有办法将纹理坐标绑定到索引缓冲区?
如果上述情况属实,那么使用索引缓冲区有什么好处吗?毕竟,要正确映射纹理,我们需要写出顶点缓冲区以及索引缓冲区中保存的所有冗余。是否还有性能提升或索引缓冲区对于纹理数据是多余的?
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。嗬!
c++ - SDL 中的动态纹理加载
我在 SDL 中打开纹理时遇到问题。我有一个功能来读取 bmp 文件,优化它们并添加颜色键:
}
效果很好。然后我像这样加载我的所有纹理,这也有效:
但我希望能够通过某种数据文件来控制这些东西。所以我写了一个函数来解析一个csv文件。然后我得到值并尝试读取 bmp 文件,如下所示:
}
这工作得很好,它记录了实际存在的文件的路径,我已经仔细检查了每个文件。但是 SDLS.LoadImage() 调用无论如何都会失败并且程序崩溃。如果我注释掉那条线,那一切都很完美,只是在瓷砖应该在的地方没有渲染任何东西。但是当我手动加载它们时文件就在那里并且可以工作,并且在我尝试调用 SDL_DisplayFormat() 之前初始化了 sdl,所以我不知道这有什么问题:(
编辑:请注意不要让人们感到困惑;SDLStuff 类使用纹理指针的缓存。这样我就可以遍历缓存,通过调用 SDLStuff 中的一个函数来释放所有加载的纹理。
wpf - 链接到表示 3D 模型的独立 XAML 中的外部纹理文件
我有一个表示带有纹理的 3D 模型的 XAML 文件。
我想让纹理从文件所在的位置或相对于文件的位置读取。
我使用 XamlReader 读取文件,因此我希望文件是独立的。
我使用 ImageBrush 放置纹理,其中 ImageSource 是一个包 synatx URI。
当我使用“siteoforigin”语法时,这仅在纹理文件位于应用程序旁边时才有效。我希望它在 Xaml 旁边,无论它在哪里。
我尝试将当前目录设置为 Xaml 目录,但没有帮助。
不使用包语法也不能正常工作 - 它只是查找具有该名称的资源。
我需要如何编写 Xaml 图像源(或者是否有另一种方法可以为漫反射材质画笔放置纹理?)以便它可以工作?
伊泰。