- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在Unity中,是WaitForEndOfFrame
void Update()
{
StartCoroutine(_c());
}
IEnumerator _c()
{
yield return new WaitForEndOfFrame();
BuildTexturesForExample();
}
与OnRenderImage
相同吗?
void OnRenderImage()
{
BuildTexturesForExample();
}
(不用说,这两个调用中的最小/无用的统一 doco 没有帮助。)
如果不是,OnRenderImage
之后直到调用 WaitForEndOfFrame
之前会做什么?
有人有比较使用这两者的经验吗?
您能否始终安全地使用 OnRenderImage
替换 WaitForEndOfFrame
模式?1
这是怎么回事?
1(当然,gizmos/ongui 是无关紧要的。)
最佳答案
我想我刚刚在 OnPostRender
中找到了实际答案
OnPostRender
is called after the camera renders all its objects. If you want to do something after all cameras and GUI is rendered, useWaitForEndOfFrame
coroutine.
因此(除了我的想法和ExecutionOrder使它看起来/听起来像)渲染 block 中的所有方法(除了OnGUI
和OnDrawGizmos
)都被调用每个相机基础,还要注意
OnPostRender: This function is called only if the script is attached to the camera and is enabled.
或
OnRenderImage: This message is sent to all scripts attached to the camera.
其目的是Post-Processing (我只是通过查看示例才了解它们是如何工作的。),因此它实际上需要 2 个参数!
OnRenderImage(RenderTexture src, RenderTexture dest)
因此您可以在接收输入 (src
) 后使用一些渲染效果覆盖输出纹理 (dest
),如示例所示
Material material;
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
// Copy the source Render Texture to the destination,
// applying the material along the way.
Graphics.Blit(source, destination, material);
}
还有例如OnRenderObject
它在所有游戏对象(MonoBehaviour
)上调用,而不仅仅是相机
。再次强调,直到我看到这个示例,我才真正理解它的作用(或者它与 OnRenderImage 的不同之处)。但这里的例子有帮助:
void OnRenderObject()
{
// Render different meshes for the object depending on whether
// the main camera or minimap camera is viewing.
if (Camera.current.name == "MiniMapcam")
{
Graphics.DrawMeshNow(miniMapMesh, transform.position, transform.rotation);
}
else
{
Graphics.DrawMeshNow(mainMesh, transform.position, transform.rotation);
}
}
奖励:我终于明白了 Camera.current
的真正用途! :D
WaitForEndOfFrame
另一方面,在所有摄像机完成渲染之后调用,并且不仅在摄像机
游戏对象上的任何地方调用。
Waits until the end of the frame after all cameras and GUI is rendered, just before displaying the frame on screen.
所以我想说不,你可以/不应该使用OnRenderImage
替换WaitForEndOfFrame
!
关于unity-game-engine - WaitForEndOfFrame 和 OnRenderImage 一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55455963/
在Unity中,是WaitForEndOfFrame void Update() { StartCoroutine(_c()); } IEnumerator _c() { yield retu
在Unity中,是WaitForEndOfFrame void Update() { StartCoroutine(_c()); } IEnumerator _c() { yield retu
我是一名优秀的程序员,十分优秀!