问题标签 [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 投票
2 回答
2088 浏览

iphone - PVR 纹理压缩平铺(暴露边缘上下文)

在我的 iPhone 游戏中,我的 PVR 纹理压缩工作非常愉快和良好,但是在将多个纹理平铺在一起时我遇到了问题。基本上,我有一个非常大的背景,它被分成多个 512x512 的图块,所有 PVR 压缩。然后将它们绘制在一起,看起来像一个大背景图像。PVR 的工作方式,因为它不知道它应该压缩纹理,就好像它是一个非常大的纹理 - 即使用邻居的平铺信息来确定如何执行 PVR 压缩。

我可以想到几种方法来做到这一点。

1)不知何故告诉texturetool命令行程序适应其他相邻的图像。
2) 使用命令行程序生成代表整个图像的巨大 PVR 纹理,然后以某种方式将字节拆分为多个图像——这可能是不可能的。
3) 做一些 OpenGL ES 的技巧来很好地融合边缘。
4)做一些技巧,我在每个图块中都有冗余信息,然后在绘制纹理时剪切这些区域(请不要)。

希望我可以做 1、2 或 3,或者还有其他一些众所周知的解决方案。

0 投票
1 回答
4622 浏览

iphone - iPhone OpenGL ES Texture2D 遮罩

尝试遮盖 ColorSplash 之类的纹理或 iSteam 等其他应用程序时,最好的选择是什么?

我开始学习 OPENGL ES 就像... 4 天前(我是一个菜鸟)并尝试了以下方法:

1)我创建了一个彩色纹理2D,第一个纹理的灰度版本和第三个纹理2D,称为蒙版

2)我还为画笔创建了一个texture2D ......它是灰度的并且它是不透明的(画笔=黑色= 0,0,0,1,环境=白色= 1,1,1,1)。我的目的是创建一个边缘平滑的抗锯齿刷,但我现在可以使用普通刷

3)我在互联网上搜索了遮罩技术,找到了这个教程 ZeusCMD - 设计和开发教程:OpenGL ES 编程教程 - 关于遮罩的遮罩。本教程告诉我使用混合来实现遮罩...首先绘制彩色,然后使用 glBlendFunc(GL_DST_COLOR, GL_ZERO) 进行遮罩,然后使用 glBlendFunc(GL_ONE, GL_ONE) 进行灰度...这给了我一些接近我想要的东西。 ..但不完全是我想要的。结果被掩盖了,但不知何故过亮了

4)为了绘制到蒙版纹理,我使用了一个额外的帧缓冲区对象(FBO)

我对生成的图像(过亮的图片)和使用这种方法实现的速度并不满意。我认为正常的方法是直接绘制到灰度(叠加)texture2D,只影响画笔命中位置的 alpha 通道。有没有一种快速的方法来实现这一目标?我进行了很多搜索,但从未得到清晰易懂的答案。然后,在主绘制循环中,我只能绘制彩色纹理,然后将灰度与 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 混合。

我只想学习使用 OPENGL ES,它让我发疯,因为我无法让它正常工作。一个建议,一个教程的链接将不胜感激。

0 投票
4 回答
303 浏览

language-agnostic - 大面积纹理?

这是一个非常笼统的问题,与特定语言无关。我有这个int数组:

这仅包含瓦片编号,并呈现为 256x256 瓦片。所以它基本上只是一个瓦片地图或任何它应该被调用的东西。事情是我希望能够在任何地方写任何东西到地图上,而且它应该留在那里。例如,能够在地面上的东西上绘画,例如草、花、石头和其他使地形更加多样化的东西,而不必在每次渲染时对每个精灵进行大量渲染。但是让每个图块包含它自己的要写入的纹理将非常消耗内存,因为要存储 256x256x100x100 = 655360000 像素。那会不会像千兆字节的数据之类的!?

有没有人知道一个很好的一般 sulotion 可以在不杀死太多内存的情况下完成我正在尝试做的事情?

如果有人想知道我将 C++ 与 HGE(Haaf 的游戏引擎)一起使用。

编辑:我选择限制屏幕上的内容数量,以便它可以渲染。但是看看这里,也许你会明白我试图实现的目标: 链接到图像,因为我不允许使用图像标签:(

0 投票
1 回答
3136 浏览

opengl - 移除 OpenGL 纹理伪影

我正在创建一个简单的 opengl 应用程序,其中显然包含一些 3d 对象和纹理。然而,我的问题是每个纹理上都会出现伪影。这些以沿边缘的三角形的形式出现。

我注意到,只要我将视点移近它完美渲染的纹理,它就会消失。因此,我怀疑它与 mipmapping 或 z 缓冲区有关。请注意,所有纹理坐标都是从 .3ds 文件加载的,并且它们都经过验证在 0-1 的范围内。

这是我的问题的图片:

图片1

纹理是这样加载的:

0 投票
5 回答
2282 浏览

opengl - 渲染透明纹理

我有一个纹理,它的某些部分是透明的,我想将其应用到一个对象上,该对象的面是一些不透明的材料(或颜色,如果更简单的话),但最终的对象变得透明。我希望最终对象完全不透明。

这是我的代码:

首先我设置材质:

然后我设置了 VBO

最后我画出物体

我尝试将不同的参数传递给 glBlendFunc() 没有占上风。我在这里上传了源代码:http: //dpaste.com/83559/

更新得到 了这个,但我想要 这个(或者没有纹理这个)。

第二张和第三张图片是用glm制作的。我研究了资源,但由于我对 OpenGL 的了解有限,所以我不太了解。

0 投票
4 回答
5564 浏览

c++ - 平铺单纯形噪声?

我一直对伪随机噪声生成感兴趣(作为业余爱好者),特别是 Perlin 和 Simplex 算法。Simplex 的优势在于速度(尤其是在更高维度时),但 Perlin 可以相对容易地平铺。我想知道是否有人知道平铺单纯形算法?固定维度很好,通用更好;伪代码很好,c/c++ 更好。

0 投票
3 回答
932 浏览

opengl - OpenGL:不能被2整除时扭曲的纹理

我有一个使用 OpenGL 进行显示的游戏引擎。我为它编写了一个小菜单,然后我在渲染文本后发现了一些奇怪的东西。 http://img43.imageshack.us/i/garbagen.png/

如您所见,字体有点不可读,但较低的部分(如“测试”)看起来符合预期。似乎屏幕上的位置会影响可读性,因为边缘会被切割。字体是 9x5,我将这个值除以 2 以获得宽度/高度并从中心渲染对象。因此,对于 4.5x2.5 像素(我对简单矩形的 x、y、宽度和高度使用浮点数),如果在 x.5 左右以外的地方渲染纹理就会混乱。但是,它目前仅在两台计算机上执行此操作,但我不希望出现此错误,因为它会使文本不可读。我可以使它成为 4.55x2.55(通过在除以 2 时增加一点额外的大小),然后它在所有机器上都能充分呈现(或者至少在有问题的两台机器上不会经常发生),但我担心这个是一个太粗暴的hack,不能完全解决问题,它可能会放大文本,使字体看起来……“胖”。所以我的问题是......有什么办法可以防止这种情况发生,而不是将这些值交换为整数?(相比之下,我需要浮动提供的细微差别)。我可以找出哪些宽度/高度可以被 2 整除,而那些不能被 2 整除的则以不同的方式处理它们?如果确实是显卡问题,是否有可能绕过它?对不起,如果这个问题有什么不足之处,我不会经常求助于互联网,我也没有编码研究。我很乐意提供任何可能需要的代码行或代码块。并且不将这些值交换为整数?(相比之下,我需要浮动提供的细微差别)。我可以找出哪些宽度/高度可以被 2 整除,而那些不能被 2 整除的则以不同的方式处理它们?如果确实是显卡问题,是否有可能绕过它?对不起,如果这个问题有什么不足之处,我不会经常求助于互联网,我也没有编码研究。我很乐意提供任何可能需要的代码行或代码块。并且不将这些值交换为整数?(相比之下,我需要浮动提供的细微差别)。我可以找出哪些宽度/高度可以被 2 整除,而那些不能被 2 整除的则以不同的方式处理它们?如果确实是显卡问题,是否有可能绕过它?对不起,如果这个问题有什么不足之处,我不会经常求助于互联网,我也没有编码研究。我很乐意提供任何可能需要的代码行或代码块。

0 投票
3 回答
2082 浏览

opengl - 改变 OpenGL 纹理的亮度

我想增加 OpenGL 渲染中使用的纹理的亮度。比如让它变成鲜红色或白色。这是一个 2D 渲染环境,其中每个精灵都作为纹理映射到 OpenGL 多边形。我对处理数据知之甚少,而且我的引擎使用纹理缓存,因此更改整个表面会影响使用纹理的所有内容。我可以通过使用“蒙版”并覆盖它来模拟效果,从而使精灵具有纯色,但这会占用内存。如果有任何其他解决方案?

0 投票
3 回答
3059 浏览

c++ - 如何让 C 方法接受 UIImage 参数?

我正在尝试使用 Apple 的 GLImageProcessing 示例中的一些 EAGLView 代码对 UIImage 进行一些图像处理。示例代码配置为对预安装的图像(Image.png)进行处理。我正在尝试修改代码,以便它接受我选择的 UIImage(或至少 CGImage 数据)并改为处理它。问题是,纹理加载器方法loadTexture()(如下)似乎只接受 C 结构作为参数,我无法让它接受 UIImage* 或 CGImage 作为参数。有人可以告诉我如何弥合差距,以便我可以将 UIImage 传递给 C 方法吗?

------------来自Texture.h ---------------

----------------来自Texture.m------------------

旁注:以上代码是来自 Apple 的原始且未经修改的示例代码,编译时不会产生任何错误。但是,当我尝试修改 .h 和 .m 以接受 UIImage* 参数(如下所示)时,编译器会生成以下错误:“错误:UIImage 之前的预期声明说明符或“...””

----------修改.h 生成编译器错误的代码:-------------

0 投票
2 回答
604 浏览

opengl - 哪个版本的 OpenGL 支持矩形纹理(无扩展)?

矩形纹理过去是通过扩展来支持的,现在在某些版本的 OpenGL 中直接支持,即我可以使用相同的基本 opengl 方法创建纹理,只是提供非二次幂大小。

我用谷歌搜索,似乎找不到 OpenGL 规范的明确变更日志。我需要这些信息来动态检测应用程序中的支持并通知用户。

仅仅回复 1.5 或 3.0 之类的数字是不够的。我需要一个参考。