Opengl 深度缓冲区和剔除

2024-01-10

OpenGL 中使用背面剔除和深度缓冲区有什么区别?


背面剔除是指 OpenGL 确定哪些面背对观看者,因此不可见。想象一个立方体。无论你如何旋转立方体,三个面始终是不可见的。找出这些面是哪些面,将它们从要绘制的多边形列表中删除,这样您就将绘制列表减半了。

深度缓冲相当简单。对于绘制的每个多边形的每个像素,将其 z 值与 z 缓冲区进行比较。如果它小于 z 缓冲区中的值,则将 z 缓冲区值设置为新的 z 缓冲区值。如果不是,则丢弃该像素。深度缓冲提供了非常好的结果,但可能相当慢,因为每个像素都需要查找值。

实际上,这两种方法没有任何相似之处,并且经常同时使用。给定一个立方体,您可以首先使用剔除切出一半的多边形,然后使用 z 缓冲绘制它们。

剔除可以减少渲染的多边形,但它不是排序算法。这就是 Z 缓冲。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Opengl 深度缓冲区和剔除 的相关文章

  • 法线在 openGL 中表现得很奇怪

    我一直在为 openGl 编写一个 obj 加载器 几何体加载得很好 但法线总是混乱的 我尝试在两个不同的程序中导出模型 但似乎没有任何效果 据我所知 这就是将法线放入 GL TRIANGLES 的方法 glNormal3fv norm1
  • OpenGL:调试“单通道线框渲染”

    我正在尝试实现论文 单通道线框渲染 它看起来很简单 但它给了我所期望的厚暗值 论文没有给出计算海拔高度的确切代码 所以我按照自己认为合适的方式进行了操作 代码应该将三个顶点投影到视口空间中 获取它们的 高度 并将它们发送到片段着色器 片段着
  • OpenGL z轴指向哪里?

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • WebKit 是否使用 OpenGL 来渲染 CSS 过渡?

    WebKit 是使用 OpenGL 来渲染 CSS 过渡 还是使用软件渲染 WebKit 只是一个前端 这取决于后端和硬件支持 谷歌浏览器使用skia http code google com p skia 作为后端 它可以使用软件或硬件
  • Eclipse 标记 OpenGL 函数无法解析

    我尝试在 Eclipse C C 中使用一些 OpenGL 函数 一些 标准 函数如 GlClear 可以被 eclipse 识别 而其他函数如 glBindBuffer 和 glEnableVertexAttribArray 则不能 它们
  • 使用draw()而不是eventloop时的pyglet

    我正在尝试用 pyglet 画一个圆 但当我使用 draw 函数而不是 app run 循环时 它是不可见的 有什么建议我可以做什么吗 谢谢 from math import from pyglet gl import window pyg
  • 使用 OpenGL 着色器进行数学计算 (C++)

    我有一个矩阵 例如 100x100 尺寸 我需要对每个元素进行计算 matrix i j tt 8 5例如 我有一个巨大的矩阵 我想使用 OpenGL 着色器来实现该算法 我想使用着色器 例如 uniform float val unifo
  • SDL 鼠标位置调整大小后裁剪

    我在 SDL 中的鼠标位置上遇到了一些奇怪的行为 如果我将窗口大小调整得更大 则任一鼠标事件的 x y 位置似乎都限制为原始窗口的宽度和高度 如果我缺少一些函数调用来告诉 SDL 鼠标区域的大小已增加 应用程序的相关部分 void Resi
  • 如果我用opengl绘图的话SDL Renderer就没用了吗?

    我正在学习 SDL2 但我也在使用使用 OpenGL 调用的 imgui 库 从我在网上各种博客上读到的内容来看 我无法轻松混合 SDL2 渲染器和 opengl 调用 我要么使用其中之一 要么使用另一个 我读过的大多数教程都使用渲染器 所
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • GL_CULL_FACE使所有对象消失

    我正在尝试在 openGL3 3 中创建一些简单的多边形 我有两种类型的对象 具有以下属性 对象 1 10 个顶点 按顺序在下面列出 存储在GL ARRAY BUFFER并使用GL TRIANGLE FAN v x y z w v 0 0
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • Opengl 像素完美 2D 绘图

    我正在研究 2d 引擎 它已经工作得很好 但我不断收到像素错误 例如 我的窗口是 960x540 像素 我从 0 0 到 959 0 画一条线 我希望扫描线 0 上的每个像素都会被设置为一种颜色 但事实并非如此 最右边的像素没有被绘制 当我
  • Visual Studio 2010 中的 SOIL 设置

    我无法得到SOIL http www lonesock net soil html正确使用 Visual Studio 2010 我远非 VS 专家 但据我所知 只需执行以下步骤即可使环境正常运行 属性 gt gt C C gt 常规 gt
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 如何使用边缘和内部镶嵌因子完成三角形面片镶嵌?

    I am just learning tessellation and i came across with below example for triangle patch tessellation but i am not sure h
  • LWJGL3:重载的 glBufferData 方法

    我正在使用 LWJGL 调用 OpenGL 函数 方法org lwjgl opengl GL15 glBufferData http javadoc lwjgl org org lwjgl opengl GL15 html glBuffer
  • 帧缓冲区/颜色缓冲区?

    有人可以指出我两者是否相同吗 我的意思是我一直在阅读有关它的信息 这里的红皮书说 颜色缓冲区本身可以由多个子缓冲区组成 系统上的帧缓冲区包含所有这些缓冲区 here http glprogramming com red chapter10
  • 如何在 GLSL 1.3 和 OpenGL 2.1 中使用位运算

    我正在尝试编写一个使用许多位操作的着色器 事实上 从 glsl 1 30 开始就支持它们 但我只使用 OpenGL 2 1 有没有办法在我的 OpenGL 版本中使用位运算 所有 SM3 兼容 OpenGL 2 1 硬件支持limited整
  • 如何在 SceneKit 中以编程方式将 png 纹理包裹在立方体周围

    我是 SceneKit 的新手 试图让一些基本的东西工作 但到目前为止还没有取得多大成功 由于某种原因 当我尝试将 png 纹理应用于 CNBox 时 我最终除了黑色之外什么也没有 这是我在 viewDidLoad 中的简单代码片段 let

随机推荐

  • iOS 7 和 Helvetica Neue UltraLight:用作较旧 iOS 版本的默认设置

    据我所知 iOS 7的默认字体是Helvetica Neue UltraLight 与大胆的前身相比要薄很多 为了提供一致的设计并使我即将推出的应用程序在所有常见 iOS 版本中看起来都相同 我想应用 Helvetica Neue Ultr
  • 当新消息进入服务总线队列时,Azure 函数(服务总线触发器)无法启动

    创建了一个 Azure Function 它是在 Visual Studio 中触发并从 Visual Studio 发布到 Azure 的服务总线 每当消息进入队列时 手动运行时该函数都会在本地正常运行 但期望的是当消息在队列中时该函数应
  • 无法添加对我的项目的引用 - 它根本没有检测到它

    所以我发现了这个很棒的图书馆WatiN http watin org 我已经下载了最新版本 v2 1 我打开了一个控制台应用程序 显然是 C 并编写了我最简单的程序 using WatiN Core FireFox browser new
  • 如何将会话生命周期设置为无限

    如何将会话生命周期设置为无限 有一个设置session cookie lifetime 但我找不到需要将其设置为无限生命周期的值 我已经尝试过 0 但一旦浏览器关闭它就会过期 ini set session cookie lifetime
  • MongoDB 查找文档的所有属性

    如何在 mongodb 中创建查询以按文档的任何属性进行过滤 我有一个对象集合如下 id name John city Rio de Janeiro state RJ address Street 1 我的页面上有一个字段 允许用户检索任何
  • 我们可以从 Visual Studio 任务运行器资源管理器运行 npm start

    我正在 Visual Studio 中设置 Angular 4 代码 我可以从 Visual Studio 成功构建 但是如果我想启动角度代码 我会进入命令提示符并手动输入npm start运行应用程序 运行后npm start 我使用注册
  • SQLAlchemy 中的元数据到底是什么?

    元数据 SQLAlchemy 到底是什么 我很难理解这一点 元数据和引擎有什么区别 元数据是表定义的集合 引擎是特定数据库的方言和连接详细信息 以及保存已与该数据库建立的任何连接的连接池
  • 如何更改 Umbraco 中的 URL 名称

    这是我第一次使用 Umbraco 我使用错误的命名格式创建了文档类型 页面 现在这已经变成了我的页面 URL 例如 about page 我该如何将它们更改为 about因为我搜索了后端管理面板 似乎没有一个选项可以更改他们的link to
  • 在 .rc 文件中设置发布者字段

    我收到这样的消息 我需要在 rc 资源文件 中设置我的发布者名称才能在此窗口中显示它 您需要设置您的 FileDescription 和 CompanyName 字段版本资源 http msdn microsoft com en us li
  • 尊重代码中的空间但忽略 CSS?

    使用CSS我可以让浏览器忽略 nbsp 字符但尊重正常的空白 So this Some text nbsp nbsp More text 显示如下 一些文字 更多文字 Not 一些文字 更多文字 更新我的代码中实际上有更多的空白 我需要默认
  • Android 意图让 SD 卡准备就绪

    我有一个使用 SD 卡上的文件的应用程序 该应用程序在手机启动时运行 并且很明显 当该程序首次运行时无法访问该文件 因为它在 SD 卡可用之前开始工作 是否有广播接收器可以用来告知 SD 卡何时准备就绪 Update 只是总结一下注册意图的
  • 如何在绘图表达散点图中只有一条多种颜色的趋势线?

    我想创建一个只有一条趋势线的散点图 Plotly Express 为点列表中的每种颜色创建不同的趋势线 import plotly express as px value 15 20 35 40 48 years 2010 2011 201
  • EA14.0 中的“覆盖属性初始值设定项”行为更改为 EA12.5 中的“设置运行状态”

    我观察到 EA14 0 中的行为与 EA12 5 中的行为有所不同 Summary 在 EA12 5 中使用时Deployment Specification必须设置Instance Classifier on the Deployment
  • Protractor:Protractor 中的ignoreSynchronization 和async/await 有什么区别

    我是量角器的新手 我正在做测试来熟悉它 在这里 我遇到了一个问题 我无法区分ignoreSynchronization和async await方法 我有 3 个区块来测试它们 第一个是量角器自己的异步功能 it without await
  • https 在 Fiddler 和 .NET 中给出 ERR_CONNECTION_RESET

    谁能向我解释一下为什么在 Chrome 中输入此链接 https secure malindoair com MalindoAirCIBE OnlineBooking aspx https secure malindoair com Mal
  • MVC3 默认模板在哪里存储用户帐户信息?

    你能告诉我当我注册新帐户时 asp net mvc3默认模板将登录信息存储在哪里吗 它在调试模式下本地运行 在没有安装SQLExpress的情况下 注册功能根本不起作用 由于我安装了它 所以我可以使用注册 登录功能 但我在SQLExpres
  • stdin 上的 close/fclose 是否保证正确?

    似乎以下调用执行了您所期望的操作 关闭流并不允许任何进一步的输入 等待流上的输入的任何操作都会返回错误 但它是否保证在所有编译器 平台上都是正确的 close fileno stdin fclose stdin fclose stdin 导
  • .val() 未从输入获取更新值

    我有两个输入字段 我试图通过单击按钮使用 jquery 获取它们的值 这似乎是一个非常简单的操作 但我一生都无法让它发挥作用 这是代码片段 Name
  • 累加值,例如通过扫描,但可以随着时间的推移重置累加器

    我有一个可观察的 obs1 它代表一段时间内的数字流 我需要累积这些数字的总和并逐步发出它 即 很长一段路要说我需要使用scan操作员 然后是第二个 Observable obs2 代表某种 重置时间 换句话说 当obs2发出 我必须重置我
  • Opengl 深度缓冲区和剔除

    OpenGL 中使用背面剔除和深度缓冲区有什么区别 背面剔除是指 OpenGL 确定哪些面背对观看者 因此不可见 想象一个立方体 无论你如何旋转立方体 三个面始终是不可见的 找出这些面是哪些面 将它们从要绘制的多边形列表中删除 这样您就将绘