问题标签 [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 回答
240 浏览

3d - 在后期处理中模糊某个点周围所有内容的最快方法

我正在使用 Ogre3D 和它的合成器。

基本上,我想知道在视口中模糊动态点周围的一切的最快方法是什么。该点由 2D 屏幕坐标给出。像素离该点越远,它应该越模糊。为了让您了解它应该有多少模糊,如果模糊点正好在屏幕的中间,则边缘应该最大程度地模糊。所以像素的模糊系数可以认为是

MIN ( (normalizedDistanceBetween(pixel, blurringPoint)/0.5), 1.0 )

所以我假设正确的方法是首先使用着色器制作完全模糊的场景版本。那部分我已经有了。

现在,如何将这个模糊的图像与原始场景混合?我看到两种方法:

  1. 将原始版本和模糊版本输入到合成着色器中,让它计算距离和上面公式的结果,使用结果进行混合。
  2. 设置一个额外的渲染到纹理通道,它将使用上面的公式来渲染“混合纹理”。关键是混合纹理可以比屏幕小很多,甚至可能是16x16,结果不会有太大差异。然后,将原始场景、模糊版本和混合纹理输入到最终的合成着色器,它会简单地从混合纹理中为每个像素采样一个值,并使用该值将 2 个场景版本混合在一起。

第二种方法有意义吗?它会比第一个有明显的性能提升吗?(甚至几 fps?)或者创建一个额外的 RTT 通道和纹理是否会通过不为每个输出像素计算(相当简单的)距离函数来降低所有性能?我假设屏幕尺寸是正常的,例如 1024x768,即比 16x16 混合纹理大得多。或者还有其他更简单的方法吗?

0 投票
1 回答
801 浏览

ios - CCSprite.draw 不适用于线程中的 CCRenderTexture (iOS cocos2d 2.0 rc2)

CCRenderTexture我正在尝试在线程中绘制。我有:

在线程的开头。除此之外,一切正常CCSprite.draw。我已经测试了渲染纹理:

调用[CCSprite visit]不会绘制精灵。 glGetError在所有步骤中返回 0。

为了进一步研究这个问题,我将所有内容都放在 UI 线程中,并删除了上下文调用,我将看到使用相同代码正确绘制的精灵。我还通过将此精灵添加到场景中来验证精灵是否正确。

即使我不使用线程,放置上面的“上下文设置调用”也会CCSprite.draw停止工作,但只有在绘制到CCRenderTexture. 如果它在屏幕上绘图,它工作正常。

任何想法如何解决这个问题?提前致谢!

0 投票
2 回答
308 浏览

opengl - OpenGL 正确显示纹理

我在实际上具有相同位置和位置的两个表面上渲染纹理。

在这种情况下,我只想显示其中一种纹理,同时我得到关注

在此处输入图像描述

即我只想显示第一种材料的纹理。

所以我想知道我在哪里寻找解决方案,我应该玩混合材料吗?

0 投票
1 回答
471 浏览

android - 渲染纹理和轨迹不消失

我正在尝试使用点精灵来实现烟花,然后通过将烟花渲染到两个不同的纹理来绘制轨迹,然后每隔一次将它们相互拉回,并将 alpha 设置为 < 1,从而使之前的每次绘制逐渐消失。

它看起来不错,并且取决于我在绘制先前渲染的纹理时使用的 alpha,轨迹会变长或变短,正如预期的那样。但是,在大多数设备(不是全部)上,这些轨迹永远不会完全消失。在它们应该消失之后,它们会留下非常透明但仍然引人注目的痕迹。

这就是我目前所做的:

根据名为 second 的布尔值,我将帧缓冲区设置为渲染到名为 buff1 和 buff2 的两个纹理之一。

然后我在当前的纹理上渲染之前绘制的纹理,使用的 alpha 值 < 1。buff 对象只是绘制带有纹理的四边形的助手。draw 函数将 alpha 预乘到其他颜色通道。

之后我绘制点精灵烟花。还使用预乘 alpha 和 gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);

最后,我重置了帧缓冲区,并让我的新纹理包含了旧轨迹的褪色和顶部的当前烟花以 100% 的 alpha 绘制。然后我使用这个纹理与烟花纹理后面和前面的所有其他对象一起绘制到我的场景中。

正如我所说,几乎一切都在工作,除了那些几乎透明的痕迹在痕迹应该已经消失后留下。绘制前一个缓冲区的 alpha 值越高,永久保留的痕迹“剩余物”就越明显。

我一直在尝试不同的混合模式,预乘而不是预乘 alpha 等。但由于这是一个 android opengl es 1.1,我认为混合应该是 GL_ONE 和 GL_ONE_MINUS_SRC_ALPHA,因为默认情况下所有位图都是预乘的。

我究竟做错了什么?有一个更好的方法吗?

感谢您的帮助,安德斯

0 投票
1 回答
294 浏览

android - Android OpenGL ES 的 3D 对象中的图像纹理与颜色?

如果我们只是为 3D 对象使用颜色(例如,绿色)或加载纹理图像文件(例如,green.png 文件),在渲染开销方面是否有任何区别?

OpenGL ES不应该最终为彩色对象创建纹理吗?

我正在使用 Android API v8 和模拟器,目标是真正的 Android 手机。

0 投票
1 回答
1532 浏览

glsl - GPGPU - 有效的乒乓球技术?

我正在尝试使用 WebGL 和 GLSL 着色器编程在 GPU 上实现有效的流体求解器。

我发现了有趣的文章: http ://http.developer.nvidia.com/GPUGems/gpugems_ch38.html

参见:38.3.2 板操作

我想知道这种强制边界条件的技术是否可以通过乒乓渲染实现?如果我只渲染线条,那么纹理的内部呢?我一直认为必须将整个输入纹理复制到临时纹理(在该过程中更新 ofc 边界),因为它们在该操作之后被交换。

这很有趣,特别是考虑到示例 38-5。边界条件片段程序(可视化:http: //i.stack.imgur.com/M4Hih.jpg)显示了恕我直言需要乒乓技术的方案。

你怎么看?我误解了什么吗?

一般来说,我发现纹理写入非常昂贵,这就是为什么我想以某种方式限制它。不幸的是,乒乓技术强制执行大量纹理写入。

0 投票
1 回答
539 浏览

large-files - Cocos2d-x 加载非常大的图片

我必须在我的游戏中加载一个非常大的图像(格式为png)作为背景,并且游戏是在cocos2d-x中开发的。问题是如果我将图像保存在内存中,它会占用太多的内存空间,如果我将它分成许多块并动态加载它,当它将图像数据渲染到纹理时,帧速率将下降到非常低。那么有没有办法让我同时获得“更少的记忆”和“流利的”?谢谢!

0 投票
1 回答
1407 浏览

android - 如何使用 OPEN GL 在 android 中的另一个纹理之上设置纹理

这两天我一直在寻找这个。我正在使用Open GL开发一个android游戏,在这种情况下我必须同时显示两个图像,一个应该是背景图像,第二个是显示的视情况而定。我已经使用 Open GL Texture 属性显示了背景图像。但是当我尝试使用纹理显示第二个图像时,第一个没有显示。因为我正在处理多个纹理,所以我使用了 GLTexture 类来操作纹理(http: //tkcodesharing.blogspot.in/2008/05/working-with-textures-in-androids.html)。即使那样我也无法同时显示两个图像。

这是一些代码:

在 onDrawFrame

在绘制代码中

0 投票
1 回答
563 浏览

opengl - glOrtho 和 RenderToTexture

我想将正交投影渲染到纹理中。

网格的渲染效果很好,但是当我添加 FrameBuffer 时,屏幕保持黑色。

创建 FBO:

渲染对象:

渲染纹理:

主游戏循环:

哪里出了问题?为什么我的渲染窗口在使用渲染到纹理时仍然是黑色的?没有渲染到纹理一切正常......

0 投票
1 回答
2560 浏览

android - 如何使用 OpenGL ES 将纹理加载到圆上

我在将纹理加载到圆上时遇到问题。我的圆圈是用三角扇做成的。它给出了一个糟糕的输出。

原图: 原始图像

结果 : 结果

我的代码:

请帮我解决这个问题