问题标签 [render-to-texture]

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

c++ - OpenGL ES 将位图字形渲染为纹理定位问题

我只是在测试这些东西,所以我不需要替代方法(没有 GL 扩展)。只是希望有人在我使用 GLES 时看到一个明显的错误。

我想获取一个小于 32x32 的字形位图(宽度和高度不一定是 2 的幂)并将其放入纹理中,以便我可以渲染它。我首先创建了一个空的 32x32 纹理,然后将像素复制到更大的纹理中。

然后我尝试使用纹理坐标仅绘制纹理的位图部分:

现在,如果世界上一切正常,由顶点创建的正方形的大小将与纹理的位图部分大小相同,并且它会准确地绘制我的位图。

例如,我的字形是 16x16,那么它应该占据 32x32 纹理的左下象限。然后 texCoords 似乎与 (0, 0.5)、(0.5, 0.5)、(0, 0) 和 (0.5, 0) 是正确的。

但是我的 12x12 'T' 字形看起来像这样:替代文字

有谁知道为什么?

顺便提一句。我首先为 2D 工作设置投影矩阵,如下所示:

0 投票
1 回答
713 浏览

xna - XNA - 渲染到纹理的 Alpha 通道

我有一个纹理,我想在运行时修改它的 alpha 通道。
有没有办法在纹理的 alpha 通道上绘制?
或者也许用另一个纹理替换通道?

谢谢,
西南。

0 投票
2 回答
2592 浏览

opengl - GLSL 顶点着色器查找表问题

我在调试我的程序时遇到了一些困难。我正在尝试使用数组作为查找表来偏移我的顶点着色器中的顶点位置,但我什至无法判断我是否正确链接了我的数组。偏移因子总是以零结束(使我的向量变平,而不是给它们一个形状),所以要么我访问了 texture1D 坐标错误,要么数组没有正确绑定到纹理。

坦率地说,我不知道应该使用哪个坐标来从一维纹理中获取值……但我已经尝试了所有组合。

在这里,我设置了数组并将其绑定到着色器:

还有我的顶点着色器:

0 投票
1 回答
4347 浏览

iphone - 从 iPhone 上的屏幕外 FBO 写入然后读取;适用于模拟器但不适用于设备?

我正在尝试在 iPhone 上进行一些图像处理,基于 Apple 的 GLImageProcessing 示例。

最终我想做的是将图像加载到纹理中,执行示例代码中的一个或多个操作(色调、饱和度、亮度等),然后将生成的图像读回以供以后处理/保存。在大多数情况下,这永远不需要触摸屏幕,所以我认为 FBO 可能是要走的路。

首先,我拼凑了一个小例子,它创建了一个屏幕外 FBO,绘制到它,然后将数据作为图像读回。当这在模拟器中完美运行时,我感到很兴奋,然后当我意识到我只是在实际设备上出现黑屏时感到沮丧。

免责声明:我的 OpenGL 已经足够老了,以至于我已经有相当多的学习曲线去 OpenGL ES,而且我从来都不是一个纹理向导。我确实知道该设备在帧缓冲区访问方面与模拟器具有不同的特性(设备上的强制屏幕外 FBO 和交换,模拟器上的直接访问),但我无法找到我做错了什么,即使经过相当广泛的搜索。

有什么建议么?

编辑:

答案当然是位图格式应该是 GL_RGBA,而不是 GL_BGRA:

0 投票
2 回答
5038 浏览

c++ - DirectX 10 将文本绘制到纹理

我正在尝试将文本绘制到带纹理的网格对象上。网格基本上是一个立方体,已粘贴到屏幕的前面。(总的来说,我的目标是菜单系统)。经过一番谷歌搜索后,我发现关于如何将文本绘制到纹理的信息非常少。我读过它应该像制作纹理一样简单,将其设置为渲染源然后绘制到它,但我无法弄清楚这一点。

任何想法、建议或带有必要函数调用的骨架代码让我快速开始?

0 投票
2 回答
13843 浏览

iphone - 在 iPhone 上渲染为非二次幂纹理

是否可以在 iPhone(2G 及更早版本)上使用 OpenGL ES 1.1 渲染到纹理?如果我将纹理绑定为渲染缓冲区,它必须是渲染缓冲区的大小,而不是 POT 大小。但是 OpenGL ES 1.1 要求纹理是 POT。

也许它不能在 ES 1.1 上完成?

0 投票
1 回答
665 浏览

graphics - 托管 DirectX 后处理片段着色器渲染问题

我正在使用带有 C# 的 Managed Direct X 2.0,并且我正在尝试将片段着色器应用于通过使用 RenderToSurface 帮助器类将屏幕渲染到纹理而构建的纹理。

我用来执行此操作的代码是:

渲染到我的 Surface,RenderSurface,它附加到一个名为 RenderTexture 的纹理对象

然后我调用以下代码将表面渲染到屏幕上,将第二个着色器“PostProc”应用于渲染的纹理。此着色器基于每个像素组合颜色值并将场景转换为灰度。我在这里学习教程:http ://rbwhitaker.wikidot.com/post-processing-effects

然而,我看到的只是原始渲染场景,渲染到纹理,但未被第二个着色器修改。

FX文件在下面,以防它很重要。

0 投票
1 回答
646 浏览

xna - 了解纹理寄存器和采样器并考虑优化

我有 3 种不同的 xna 效果,一种称为初始化,一种称为迭代,一种称为终结。

Initialise 不接受纹理输入,并渲染到 3 个目标。迭代将这 3 个作为纹理输入,并渲染到 3 个目标,迭代运行多次。Finalize 需要 1 个纹理输入并渲染到一个目标。

我有一些辅助类,但从下面的渲染循环中应该很明显:

我的纹理声明使用以下宏,并与我的输出结构一起定义如下:

我想知道的是,我可以将输入和输出渲染目标放在不同的纹理寄存器中,然后可以交替运行 2 个迭代像素着色器,其中一个从前 3 个寄存器读取,写入最后 3 个寄存器,另一个从最后 3 个并写入前 3 个?

我猜想多次设置渲染目标和输入纹理会产生成本,而我不再需要这样做。这会避免它吗,是否值得?

请注意,我可以单独优化着色器中的代码,如果需要,我会提出单独的问题。

0 投票
3 回答
4698 浏览

c# - 写入 RenderTarget 后,如何高效克隆输出?

XNA 菜鸟在这里,每天都在学习。我刚刚研究了如何使用 RenderTarget2D 将多个纹理合成为一个。然而,虽然我可以将 RenderTarget2D 作为 Texture2D 用于大多数用途,但有一个关键区别:这些渲染的纹理在调整后缓冲区大小时会丢失(毫无疑问,在其他情况下,例如图形设备内存不足)。

目前,我只是将完成的 RenderTarget2D 复制到一个新的非易失性 Texture2D 对象中。不过,我这样做的代码非常丑陋。有没有更优雅的方法来做到这一点?也许我只是累了,但我在 Google 或 SO 上找不到答案。

稍微简化:

我想我应该检查 IsContentLost 并根据需要重新渲染,但这发生在我的主绘图循环的中间,当然你不能嵌套 SpriteBatches。我可以维护一个“渲染 TODO”列表,在主 SpriteBatch 结束后处理它们,然后它们可用于下一帧。这是首选策略吗?

这段代码只被调用了几次,所以性能不是问题,但我想学习如何正确地做事。

0 投票
1 回答
3757 浏览

iphone - 对于某些纹理大小,glFramebufferTexture2D 在 iPhone 上失败

当我尝试将纹理附加到帧缓冲区时,glCheckFramebufferStatus 报告某些纹理大小的 GL_FRAMEBUFFER_UNSUPPORTED。我已经在第 2 代和第 4 代 iPod Touch 上进行了测试。两个模型之间失败的纹理大小不相同。

以下是一些有趣的结果:

第二代 - 8x8 失败,16x8 失败,但 8x16 成功!

第 4 代 - 8x8 成功,8x16 成功,但 16x8 失败!

这是我用来测试附加不同大小纹理的一些代码:

似乎只要两个尺寸至少为 16 像素,那么两个设备上的一切都可以正常工作。不过,困扰我的是,我还没有看到任何关于附加到帧缓冲区对象的纹理大小要求的文章。目前,一种解决方案是将我的纹理大小限制为至少 16 像素,但这可能会在未来中断或已经在我未尝试过的某些设备上中断?我也可以在启动时执行此测试代码,以便动态确定允许哪些纹理大小,但这似乎有点做作。