gpt4 book ai didi

glsl - SceneKit - 获取屏幕坐标中的位置

转载 作者:行者123 更新时间:2023-12-04 02:31:58 26 4
gpt4 key购买 nike

如何从几何着色器入口点获取屏幕引用中点的坐标? SceneKit 公开了一堆矩阵变换及其逆矩阵( https://developer.apple.com/reference/scenekit/scnshadable > 使用 SceneKit 提供的输入),但我不知道如何使用它们......

例如,在顶点着色器中执行的几何入口点中,我尝试过:

varying vec2 screen_coords;

#pragma body
screen_coords = (u_inverseModelViewProjectionTransform * _geometry.position).xy

但这似乎不起作用:(

为了澄清,我想 screen_coords如果点在屏幕上取决于它的确切位置,则在 [0, 1] * [0, 1] 中,如果不在,则为其他内容。

最佳答案

我花了一段时间,但这里是:

vec4 screenPos = u_modelViewProjectionTransform * _geometry.position;
screen_coords = (screenPos.xy / screenPos.w + 1.0) * 0.5;

解释: screenPos大致对应于屏幕空间中的坐标。 screenPos.xy / screenPos.w重新调整这些坐标。然后奇怪的是,这给出了输入 [-1, 1] * [-1, 1] 所以我最后添加了一个偏移量和比例以获得 [0, 1] * [0, 1] 中的结果

关于glsl - SceneKit - 获取屏幕坐标中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39479184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com