gpt4 book ai didi

opengl - 在 Vulkan/Opengl 的视口(viewport)外绘图

转载 作者:行者123 更新时间:2023-12-04 05:47:58 25 4
gpt4 key购买 nike

我有一个 viewportscreen size/framebuffer 的一半。

x, y, w, h = 0, 0, 512, 512

我的 scissor 区域是完整的 framebuffer

x, y, w, h = 0, 0, 0 1024, 512

我正在画一条线,它远离viewport,从左到右。我希望这条线只在视口(viewport)内绘制。我已经在三 block 不同的显卡上对此进行了测试,在其中两 block 上,我得到了我期望的结果。但是在第三个上,线绘制在 viewport 之外,但在 scissor 区域内。哪一个结果是正确的?据我了解,线的两个顶点应该移动到外部 viewport 位置。它不应该画在它外面。

如果您阅读本网站上的陷阱 nr 10: https://www.opengl.org/archives/resources/features/KilgardTechniques/oglpitfall/

他们正在谈论在视口(viewport)之外绘制,但这只是一些特殊情况,例如你有一条非常粗的线,我的线宽是1>/p>

最佳答案

编辑:在 KhronosGroup 的讨论之后:来自规范 Vulkan 1.0.68:

If either of a line segment’s vertices lie outside of the clip volume, the line segment may be clipped, with new vertex coordinates computed for each vertex that lies outside the clip volume. A clipped line segment endpoint lies on both the original line segment and the boundary of the clip volume.

英伟达:

We intentionally made this change for maintenance2, to allow for pop-free points and lines. Point clipping behavior is queriable but line clipping behavior is not, though I believe the "preferred" behavior for lines is to be pop-free. We changed the NVIDIA driver last year from tight clipping to pop-free, and even changed CTS tests to allow this new behavior. So this is all working as designed.

旧答案:

视口(viewport)定义了从标准化设备坐标到窗口坐标的转换。视口(viewport)变换不进行任何裁剪。

但是,裁剪确实发生在 NDC 空间之前,视锥体裁剪确实保证没有顶点可以落在视口(viewport)之外。如果您使用正交投影,剪辑空间和 NDC 空间是相同的。所以 [-1,1] 之外的所有内容都将被剪裁。如果你没有做任何特殊情况,opengl 链接会讨论顶点应该被剪裁。

如果您的两张显卡在视口(viewport)内绘制,一张在视口(viewport)外绘制,则可能是驱动程序错误。如果您使用的是相当新的 Vulkan,则很可能是这种情况。

关于opengl - 在 Vulkan/Opengl 的视口(viewport)外绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48510072/

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