屏幕坐标跟窗口坐标的区别是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了屏幕坐标跟窗口坐标的区别是啥?相关的知识,希望对你有一定的参考价值。

如题,请各位大侠<举例>指教!

文字叙述的很详细的话也可以!谢谢!

相对坐标问题
屏幕坐标是以显示器实际显示的左下角为原点
窗口坐标是以某一窗口的左下角为原点
参考技术A 你要问的是屏幕座标和世界座标吧。
屏幕座标是有摄像机控制的,也就是会随着适口的改变而改变。世界座标是东南西北固定的。

金属中使用的坐标系是啥?

【中文标题】金属中使用的坐标系是啥?【英文标题】:What is the coordinate system used in metal?金属中使用的坐标系是什么? 【发布时间】:2020-03-01 06:38:45 【问题描述】:

在金属中,在着色器内部(进出)使用什么坐标系?当我们渲染到纹理时是一样的吗?也有z缓冲区?有没有不一致的地方?最后metal,opengl和directX有什么区别?

【问题讨论】:

【参考方案1】:

金属坐标系

Metal 定义了几个标准坐标系来表示转换后的图形数据 渲染管道中的不同阶段。


1) NDC(归一化设备坐标):开发人员使用此坐标来构建他们的几何图形,并通过模型和视图矩阵在顶点着色器中转换几何图形。Point( NDC 中的-1, -1) 位于左下角(Y 向上)。


2)帧缓冲坐标(视口坐标):当我们写入附件或从附件读取或在附件之间复制/blit时,我们使用帧缓冲坐标来指定位置。 origin(0, 0) 位于左上角(Y 向下)


3)纹理坐标:当我们将纹理上传到内存或从纹理中采样时,我们使用纹理坐标。 origin(0, 0) 位于左上角(Y 向下)


D3D12 和金属

NDC: +Y 向上。 Point(-1, -1) 在左下角。帧缓冲坐标: +Y 向下。 Origin(0, 0) 位于左上角。纹理坐标: +Y 向下。 Origin(0, 0) 在左上角。


OpenGL、OpenGL ES 和 WebGL

NDC: +Y 向上。 Point(-1, -1) 在左下角。Framebuffer 坐标:+Y 向上。 Origin(0, 0) 位于左下角。纹理坐标: +Y 向上。 Origin(0, 0) 在左下角。


Vulkan

NDC: +Y 已关闭。 Point(-1, -1) 在左上角。Framebuffer 坐标:+Y 向下。 Origin(0, 0) 位于左下角。纹理坐标: +Y 向上。 Origin(0, 0) 在左下角。


【讨论】:

仍然令人困惑的是,虽然这些坐标系在 Metal 文档中,所以必须是正确的,但为什么在执行如下所示的操作时图像显示左下角的原点:***.com/questions/55821459/…?如果原点位于左上角,我希望深黑色角位于左上角。

以上是关于屏幕坐标跟窗口坐标的区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

屏幕坐标和当前窗口坐标如何转换???

将屏幕坐标中的 NSPoint 转换为窗口坐标

minigui 屏幕坐标系 窗口坐标系 客户坐标系之间的关系

QT 中控件内坐标转换为父窗口坐标或屏幕坐标

QT 中控件内坐标转换为父窗口坐标或屏幕坐标

Qt学习笔记2.窗体Widget && 屏幕坐标 && 布局