问题标签 [texture-mapping]

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

java - Android 纹理映射 - 使用 PNG 文件映射不正确

在 opengles 方面我不是专家,但我一直在我的很多应用程序中使用它。我创建了一个新应用程序来让自己在 opengles 上焕然一新,然后我画了一个正方形。现在我应用了纹理映射,但映射不正确。我一遍又一遍地彻底检查了紫外线坐标,它似乎是正确的。经过数小时的困惑,我终于决定将 .png 再次更改为我从网上下载的随机文件。瞧!它映射正确。当我切换回旧的 .png 时,它再次映射不正确。有人能告诉我为什么会这样吗?

0 投票
1 回答
24423 浏览

javascript - 使用 HTML5 Canvas 进行图像处理和纹理映射?

在我正在研究的 3D 引擎中,我成功地绘制了 3D 立方体。就我而言,填充侧面的唯一方法是使用纯色或渐变。为了让事情变得更令人兴奋,我真的很想使用一个简单的位图来实现纹理映射。

关键是我几乎找不到任何关于 JavaScript 图像处理主题的文章或代码示例。此外,HTML5 画布中的图像支持似乎仅限于裁剪。

我该如何拉伸位图,以便矩形位图可以填充不规则的立方体面?在 2D 中,由于透视的原因,投影的方形立方体面不是方形的,所以我必须拉伸它以使其适合任何四边形。

希望这张图片能澄清我的观点。左脸现在填充了白色/黑色渐变。纹理映射后,如何用位图填充它?

立方体

有人对使用 JavaScript 和 HTML5 Canvas 的透视纹理映射(或图像处理)有任何提示吗?

编辑:我得到它的工作,感谢 6502!

然而,它是相当 CPU 密集型的,所以我很想听听任何优化想法。

使用 6502 技术的结果-使用的纹理图像

0 投票
2 回答
3212 浏览

opengl - OpenGL 3D 纹理和四边形部分的映射

我正在制作一个类似于Minecraft的地形引擎来学习一些 OpenGL 和 3D,除了我不满意的 FPS 之外,一切都运行良好。

大约 66 fps,50k 顶点/帧

当前:我目前只绘制可见面并使用平截头体剔除,立方体为 16 x 16 x 32 立方体块(目前)。

我每个块使用 6 个显示列表,每边一个(左、右、前、后、上、下),所以立方体不是一个一个地绘制,而是整个块的一面。

使用这种方法,我得到大约 20-100fps,这不是很好。分析说我向显卡发送了大约 100k 个顶点,当我看到天空并且顶点低于 10k 时,我的速度达到了 200+fps,所以我想这是我的瓶颈。

我想做的是:因为少即是多,我继续前进并发现了这个: http://ogre3d.org/forums/viewtopic.php?f=2&t=60381&p= 405688#p404631

据我了解,Kojack使用巨大平面的 3D 网格,并以某种方式将 2D 纹理图集中的纹理绘制到这些巨大平面的某些位置。他说他使用 256x256x256 的 3D 纹理和绿色和蓝色通道来映射到 2D 纹理图集。

他的方法总计平面的顶点数量是恒定的,如果我的地图被应用的话,有时是无用的,但它仍然比我现在拥有的少。

我的问题:我没听懂他说的任何话像素)。他如何将纹理从纹理图集中映射到平面的一部分,而这通过使用一些 3D 纹理贴图......

任何人都可以解释Kojack做了什么或指向一些有用的地方,即使谷歌现在也没有任何帮助。

0 投票
1 回答
1507 浏览

android - android opengl 纹理映射如何受顶点顺序影响?

我试图了解在android平台上将纹理映射应用于opengl三角形的正确方法。我发现了一个奇怪的行为:纹理映射似乎受到我指定顶点的顺序的影响。

这是具体的问题。在这张图片中,您可以看到纹理、三角形和所需的映射:(我不得不将 2 个图像组合成一个链接,抱歉)

组合图像

实际的纹理图片是 2x2 png。

代码基本上分为 2 个类:渲染器和模型。

  • 渲染器

这是opengl初始化(这里有很多东西我还没有完全理解,我只是从一个例子中采用了这段代码:

这里是帧渲染函数(实际绘图在 m.draw(gl) 调用中完成):

  • 该模型

这是模型类:

最后是 AssetTextureLoader 类,它从项目的“assets”文件夹中加载纹理文件(清除了无聊的异常处理代码):

行。正如您在 OneTriangle 类中看到的那样,有一个注释为“正确”的初始化,它基本上以 ABC 顺序列出了顶点,并以红-绿-黄顺序列出了映射。该代码产生正确的纹理映射。

然后我尝试简单地更改“错误”部分中顶点的顺序:BCA 和绿-黄-红。我希望得到完全相同的输出,因为 A 总是映射到红色,B 映射到绿色,C 映射到黄色。但相反,我得到了完全不同的输出。

在这里您可以看到 2 个输出:(参见之前图像的第二部分)

但还有更多!如果我以这种方式再次更改模型初始化:

..我得到了正确的映射!事实上,我可以为 idx 数组选择任意顺序,这并不重要:只要 vt 数组处于特定的 rgy 顺序,我就会得到正确的图像。

为什么opengl对我如此敌对?

对于很长的帖子,我很抱歉,但是错误(如果有的话)可能隐藏在实现中的任何地方..

0 投票
4 回答
1572 浏览

opengl - OpenGL纹理映射顽固地拒绝工作

我正在使用 D 编程语言中的 SDL 和 OpenGL 编写 2D 游戏。目前它只是尝试将纹理映射的四边形渲染到屏幕上。问题是,整个纹理映射部分似乎不太有效。尽管纹理显然加载良好(分配了一个非零纹理编号,不会导致 glGetError 返回零以外的值),但使用 glColor 中设置的最后一个颜色渲染四边形,完全忽略纹理。

我一直在寻找纹理映射失败的常见原因,包括这个问题,但无济于事。正在加载的图像文件是 64x64,一个有效的 2 次方大小。

请不要害怕,因为这是在 D 中——它几乎完全是 C 风格的 SDL 和 OpenGL 调用。

SDL初始化代码:

OpenGL初始化代码:

纹理加载代码:

渲染代码:

我的程序使用 Derelict2,这是一个为 D 提供 SDL 和 OpenGL 绑定的库。

关于这里到底出了什么问题的任何想法?

编辑:供将来参考,这是我的问题的解决方案:

http://www.opengl.org/wiki/Common_Mistakes#Creating_a_Texture

我需要在调用之前设置几个参数,glTexImage2D否则我的纹理在技术上是不完整的。在该调用之前添加以下四行就可以了:

0 投票
2 回答
1493 浏览

php - 使用 PHP 制作 3D 纹理

我想用 PHP 和两个源图像生成这个http://de.novumpro.com/typo3temp/pics/0512014950.jpg http://de.novumpro.com/typo3temp/pics/0512014950.jpg:灰皮书背景和书籍封面纹理(正面,未旋转)。

使用 GD 组合两张图像不会有问题,但我需要先对书皮进行 3D 旋转。

Image_3D不做纹理。

ImageMagic 会帮助我吗?

还有其他选择吗?

0 投票
1 回答
114 浏览

ipad - 有人可以确认运行 3.2.x 的 iPad 是否支持片段着色器中的纹理映射?

在模拟器中,我在 3.2 下测试时没有遇到任何问题,但是,在设备上,纹理没有出现。在 4.2 下,它在模拟器和设备中都可以正常工作。

我试图查明问题并想知道是否有人可以确认 3.2.x(仅限 iPad)中该特定功能是否存在错误。如果您对可能出现的问题有其他想法,请告诉我。我对OpenGL不是很有经验。

0 投票
2 回答
1855 浏览

iphone - OpenGL ES Tiled Texture Mipmap 问题 - iPad/iPhone

在此处输入图像描述我在使用 OpenGL ES 的 iPad 上遇到了传统的 tile/mipmap 问题。基本上,如果你有一个大的纹理(大于 1k X 1k),你可以把它分成几块并将这些块映射到单独的多边形上。您可以将纹理坐标钳制到边缘,它通常可以工作,但是您会沿着边界得到伪影。

现在我知道你为什么会得到这个并且知道传统的解决方案是什么。也就是说,您在每个较小的纹理(例如 6 像素)的外部制作一个边框。你从小纹理采样到大纹理,所以你只使用那些内部像素(比如 256-2*6)。然后将有效像素涂抹到边界区域。最后,您映射纹理坐标以仅使用那些有效的内部像素。工作正常。

如果您此时没有点头,请不要尝试回答。:-)

无论如何,OpenGL 早在过去就引入了钳位模式来解决这个问题。我在 OpenGL ES 中看不到这些模式(至少在这个硬件上),我看到了对这个问题的其他参考。我想知道我是否遗漏了什么。有没有更新的方法来解决我不知道的瓷砖/边缘问题?

[更新] 此处附上结果的屏幕截图。可见线位于一个纹理的末端和另一个纹理的起点。这是使用 CLAMP_TO_EDGE。

0 投票
2 回答
459 浏览

android - 纹理映射

我正在尝试使用 opengl 将纹理应用于精灵,如下所示:

......

我在android中使用andEngine框架并使用Sprite的onManagedDraw方法来做到这一点。

任何人都可以在这个方向上提供帮助吗?

0 投票
1 回答
846 浏览

objective-c - 我的opengl纹理底部有奇怪的细线或圆点

我制作了一个与此类似的应用程序:http ://www.youtube.com/watch?v=U2uH-jrsSxs (声音有点响亮而且很糟糕)。问题是每个纹理的底部都有一条非常细的线/点/任何东西。它几乎不明显,但它就在那里,我不知道为什么。我的纹理大小是 256x256。我早些时候用纹理大小 128x128 进行了测试,我认为那里什么都没有,但不确定。这没什么大不了的,因为它很薄,但我觉得很烦人。这是一个截图。我用 RED 选择了这些行。我是 OpenGL(ES) 的菜鸟,所以可能我做错了什么。任何帮助表示赞赏。