问题标签 [rendertarget]

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

c# - RenderTarget2D 将所有 alpha 紫色着色

所以,我正在尝试将我的游戏玩法渲染到 XNA 中的 RenderTarget2D,这样我就可以将着色器应用到场景中。它在某种程度上是有效的,但任何以 255 以外的 alpha 级别绘制的东西似乎都被染成了紫色。alpha 效果有效,但也有紫色色调。我试图四处寻找解决方案,我似乎唯一能找到的要么是全屏呈现紫色,要么是 alpha 被紫色替换。

我的问题不完全是那些......

染紫!

这是我抛出的一个场景,向你展示发生了什么。如您所见,alpha 效果正在工作,但对象被染成紫色。

这是我发布渲染代码的部分:

这是我正在使用的初始化。

renderEffect 是效果文件,Sprite 是处理相对于假定屏幕尺寸的绘图(以应对不同的分辨率)的类。

我在 XNA 3.1 中工作。我知道我现在应该使用 4.0,但我不是因为我有 3.1 的书,这在某些情况下很有帮助。

无论如何,这里的一些帮助将不胜感激......

0 投票
1 回答
1563 浏览

directx - DirectX 11 仅在屏幕的一部分?

我正在尝试设置 Direct X 仅参与一半屏幕的窗口。

我的交换链 desc 宽度是半屏,我的视口宽度是半屏,但是当我将渲染目标清除为蓝色时,整个屏幕都是蓝色的,而不是我指定使用的一半。

0 投票
2 回答
169 浏览

c# - 将渲染从 RenderTarget2D 存储到颜色数组错误

所以我试图将渲染目标的结果存储到一个颜色数组中,这样我就可以使用迭代器单独操作它们。出于某种原因,以下代码将数组中的每个值设置为 R=0、G=0、B=0、A=0。好像它从未初始化过一样。GetData 方法是否使用不当?是别的吗?它应该是一个非常彩色的图像,并且绝对不透明。

问题不在于纹理没有正确绘制,我在没有设置渲染目标的情况下执行了代码(使用默认的后缓冲区)并且游戏运行得非常好。

0 投票
1 回答
1583 浏览

c++ - OMSETRENDERTARGETS_INVALIDVIEW 切换 RenderTargets (DirectX)

我试图渲染到纹理以将其用于后处理。我已经阅读了很多关于这些东西的教程并且现在已经为自己尝试过,但显然我做错了什么。我已经在问关于这个主题的另一个问题,但由于这个问题是一个不同的问题,我认为创建一个新问题是一个更好的主意。所以首先这些是我一遍又一遍的错误消息:

和:

我很确定我误解了这个渲染目标切换和东西的一个主要方面。创建我的 DirectX 设备时,我也在创建这个:

所以我正在创建一个 ShaderResourceView 和一个 RenderTargetView 以及一个带有顶点缓冲区的立方体来绘制这个将绘制纹理的立方体。

现在,在所有其他东西被绘制之后的每一帧更新中,我都使用这个:

我没有明确创建 depthStencilView 我猜这是我的主要错误。但我不知道如何创造这样的权利。我对这一切在后台如何运作感到非常困惑……也许有人愿意解释一下。我在这里做任何事情还是这只是错误的?:p

感谢任何关心帮助的人。

0 投票
1 回答
667 浏览

xna - xna 4.0 精灵 + MRT + 像素着色器

我正在尝试组合 2 个渲染目标,颜色和法线,用于漫反射闪电并在屏幕上渲染结果。这个想法是使用具有仅包含像素着色器的效果的精灵来组合来自纹理的渲染目标。XNA 代码:

由于某种原因, spriteBatch.Draw() 中使用的渲染目标会影响结果。

像素着色器:

两个渲染目标中的 alpha 值始终为 1。将顶点着色器添加到效果会导致黑色。使用 spriteBatch.Draw() 绘制一个没有任何效果的渲染目标表明每个渲染目标的内容都很好。我无法理解这一点。有任何想法吗?

0 投票
1 回答
991 浏览

graphics - directx 11 中的 getBuffer() 和 CreateRenderTargetView 有什么区别?

我是 DirectX11 的新手并且正在学习它。(我来自openGL背景)。

我很困惑,并试图了解以下 API 调用的确切作用以及它们之间的区别:

GetBuffer真正做什么?那么我们如何使用pBackBufferinCreateRenderTargetView呢?另外,有人可以解释或指向一个链接来解释什么是渲染目标视图msdn 文档对我来说没有多大意义。

0 投票
0 回答
199 浏览

webgl - 新版本中的粒子系统问题

在我寻找一种渲染云状纹理的方法时,我了解到我需要使用纹理等来存储下一帧的数据。进一步研究这让我找到了一些使用 FBO 和 webgl 渲染目标进行粒子的示例。即使听起来不错,似乎任何示例都可以在更新版本的threejs(如50或51)中使用。如果我要切换到three49,它将呈现它应该如何。

为了说明这个问题,我做了这个(小提琴):

这是 mrdoob 用于的代码magicdust,您可以在那里看到如何只渲染一个粒子而不是所有粒子。此外,几乎(如果不是全部)来自https://github.com/mrdoob/three.js/issues/1183的示例都不起作用。

所以我的问题是:

  1. 谁能告诉我我能做些什么来解决这个问题?
  2. (即使标题中没有提到)谁能给我一个关于如何使用最后一帧计算下一帧的基本且简单但相关的示例?我想这是我的云模拟所需要的。

编辑1:

调查这个问题,似乎所有粒子都渲染在同一个地方。并且粒子系统对象上的缩放只会在一个轴或另一个轴上移动它。(就好像它们被几何的边界推到了一起……)

有谁知道如何解决这个问题?

编辑2:

似乎它们以某种方式呈现,但从一个版本到另一个版本,它们的尺寸和比例不同。我设法以某种方式在three52中看到了它们,将相机移动到非常接近0,0,0的地方,它们在那里,但现在就像我所期望的那样立方体,而是一个简单的平面。在three51中,我需要使用的,根本没有。

那么,任何人都可以告诉我如何使用粒子系统吗?

0 投票
1 回答
3185 浏览

resources - RenderTargetView 到 ShaderResourceView

我来自 XNA,在那里我可以轻松创建渲染目标并将其用作简单的“Texture2D”。我创建了一个 ID3D11RenderTargetView 对象和一个 ID3D11ShaderResourceView 对象。我将精灵绘制到渲染目标,然后想将其用作 ShaderResourceView 以将其发送到着色器。

我尝试查询渲染目标的界面,例如:

上面的代码不会为“资源”对象生成任何可用的值,我想每帧都将其发送到我的着色器(我正在尝试做一个简单的反射)。

0 投票
1 回答
806 浏览

gpu - ID2D1DCRenderTarget 与 ID2D1HwndRenderTarget

我正在尝试将一些 GDI/GDI+ 代码移植到 Direct2D,但对于哪种类型的目标更适合使用(DC 或 Hwnd)我仍然有点困惑,因为我发现不同的性能取决于我是否使用了显卡。特别是,我发现了以下问题:

如果我使用 DCRenderTarget 我不能使用硬件加速(或默认),因为我继续违反内存的保护区。如果我使用 HwndRenderTarget,这不会发生。

如果我使用 HwndRenderTarget,通常一切都很好,但如果我有很多窗口(如按钮),我会失去对主窗口的关注,它无法识别 KeyPressed 消息,并且,如果我使用 Gpu,性能下降很多并且强烈依赖于活动目标的数量(如果我使用软件加速则不会发生)。

有没有人遇到过同样的问题?你能推荐一些关于它的东西吗?

非常感谢!

0 投票
1 回答
303 浏览

c# - 动态调整纹理大小

我正在使用 RenderTarget2D 将我的地图绘制到屏幕上,然后再将其渲染到屏幕上,因为它很少更改并且地图本身由很多非常小的图块组成。因此,我不是每帧都将所有图块绘制到缓冲区,而是将它们绘制到 RenderTarget2D,然后将其绘制到缓冲区。

我的问题是关于 RenderTarget2D “纹理”。如果玩家要调整窗口的大小,我希望至少可以玩一点,那么在尺寸方面修改 RenderTarget2D 对象的正确方法是什么?

目前我只是在调整窗口大小时重新创建对象,这可能很好,但我想我应该要求安全,我不会错过更简单的东西。