深度缓冲区大小与视口大小相同吗?

发布于 2024-12-24 20:13:01 字数 181 浏览 2 评论 0原文

如果我执行

#define SCREEN_SIZE 512
glEnable(GL_DEPTH_TEST);
glViewport(0, 0, SCREEN_SIZE, SCREEN_SIZE);

这会使我的深度缓冲区大小 SCREEN_SIZE x SCREEN_SIZE 吗?

If I perform

#define SCREEN_SIZE 512
glEnable(GL_DEPTH_TEST);
glViewport(0, 0, SCREEN_SIZE, SCREEN_SIZE);

Does this make my depth buffer size SCREEN_SIZE x SCREEN_SIZE?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彼岸花似海 2024-12-31 20:13:01

这会使我的深度缓冲区大小 SCREEN_SIZE x SCREEN_SIZE 吗?

不。深度缓冲区是窗口帧缓冲区的一部分。通常这样的窗口帧缓冲区由

  • 前颜色平面、
  • 后颜色平面
  • 深度缓冲区、
  • 模板缓冲区

组成。所有这些平面都具有相同的大小,即在其上创建 OpenGL 上下文的窗口的大小。视口仅定义将映射标准化设备坐标的 [-1, 1] 范围的窗口子集,即它选择帧缓冲区的一部分用作投影目标。视口甚至不需要裁剪视口范围“外部”的东西。如果您需要此功能,则必须将其与剪刀测试结合起来。

Does this make my depth buffer size SCREEN_SIZE x SCREEN_SIZE?

No. The depth buffer is part of the window frame buffer. Usually such a window framebuffer consists of

  • front color plane
  • back color plane
  • depth buffer
  • stencil buffer

All these planes have the same size, namely the size of the window on which the OpenGL context has been created on. The viewport just defines the subset of the window that will be mapped the [-1, 1] range of normalized device coordinates, i.e. it selects a part of the framebuffer which will be used as projection target. The viewport doesn't even need to clip things "outside" the viewport range. If you need this, you must combine it with a scissor test.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文