glGenerateMipmap 需要哪个内存屏障?

2023-12-19

我已使用 GL_ARB_shader_image_load_store 写入纹理的第一个 mipmap 级别。文档指出,在其他操作中使用该图像的内容之前,我需要调用 glMemoryBarrier,以便适当地刷新缓存。

例如,在执行 glTexSubImage2D 操作之前,我需要发出 GL_TEXTURE_UPDATE_BARRIER_BIT​,而在使用对纹理进行采样的着色器发出绘制调用之前,我需要发出 GL_TEXTURE_FETCH_BARRIER_BIT​。

但是,在确保 glGenerateMipmap 将使用最近写入的数据之前,我需要发出哪个屏障?


OpenGL 4.6 规范澄清了这一点:

执行此缩减之前所需的任何同步都将完成 内Generate*Mipmap命令自己。

所以你不需要任何类型的同步。如果您以任何方式将数据写入基本 mipmap 级别,glGenerateMipmap将执行足够的同步以使读取工作。

鉴于此,这可能是一个really好主意是不要在渲染帧的过程中调用它。

之前的规范没有给出答案,尽管此错误报告中的信息表明先前的实现正是执行上述操作 https://www.khronos.org/bugzilla/show_bug.cgi?id=1429.

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

glGenerateMipmap 需要哪个内存屏障? 的相关文章

  • 从文件中读取 GLSL 着色器

    我正在尝试从如下所示的文件中读取顶点和片段着色器 version 330 core in vec3 ourColor out vec4 color void main color vec4 ourColor 1 0f but when i
  • OpenGL NURBS 曲面

    我正在学习 OpenGL 我想要一个中间有轻微驼峰的表面 我目前正在使用这段代码 但我不确定如何调整 ctrl 点以使其达到我想要的方式 它目前就像 我想要这样的 我不完全确定我应该使用哪些控制点 并且我对其工作原理感到困惑 include
  • 使用 openGL、SOIL 加载图像

    我尝试了很多使用 SOIL 在 openGL 中加载和显示图像的示例 运行下面的源代码时 它仅显示一个没有图像的白色四边形 我尝试打开一个名为 foto 的图像 我将图像文件放在程序的文件夹中 bool keyStates new bool
  • 纹理openGl。 C++、qt

    我试图用草纹理覆盖我的地形 由高度图制成 但它没有按预期工作 我什至无法在简单的 GL QUAD 上获取纹理 结果是多色网络 void GLWidget initializeGL glEnable GL TEXTURE 2D 在 QGLwi
  • 三角形未在 OSX 上的 OpenGL 2.1 中绘制

    我正在学习有关使用 OpenGL 在 Java 中创建游戏引擎的教程 我正在尝试在屏幕上渲染一个三角形 一切运行良好 我可以更改背景颜色 但三角形不会显示 我还尝试运行作为教程系列的一部分提供的代码 但它仍然不起作用 教程链接 http b
  • 法线在 openGL 中表现得很奇怪

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

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

    我正在尝试使用 GLFW GLEW 添加着色器 我收到一个错误 指出着色器已加载 但它们没有有效的对象代码 这是我用于加载着色器的代码 class SHADER public void LoadShaders const char vert
  • 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
  • glut 库中缺少 glutInitContextVersion()

    我正在练习一些 opengl 代码 但是当我想通过以下方式强制 opengl 上下文使用特定版本的 opengl 时glutInitContextVersion 它编译过程失败并给出以下消息 使用未声明的标识符 glutInitContex
  • 如果我用opengl绘图的话SDL Renderer就没用了吗?

    我正在学习 SDL2 但我也在使用使用 OpenGL 调用的 imgui 库 从我在网上各种博客上读到的内容来看 我无法轻松混合 SDL2 渲染器和 opengl 调用 我要么使用其中之一 要么使用另一个 我读过的大多数教程都使用渲染器 所
  • 无法在 WSL2 上运行 OpenGL

    我尝试在 WSL2 上运行 OpenGL 代码 但在尝试运行可执行文件时出现以下错误 GLFW error 65543 GLX Failed to create context GLXBadFBConfig Unable to create
  • 为什么拥有单独的投影矩阵但结合模型和视图矩阵会有好处?

    当您学习 3D 编程时 您会被告知用 3 个变换矩阵来思考是最简单的 模型矩阵 该矩阵对于每个模型都是独立的 它根据需要旋转和缩放对象 最后将其移动到 3D 世界中的最终位置 模型矩阵将模型坐标转换为世界坐标 视图矩阵 对于大量对象 如果不
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • GLSL NVidia 方形神器

    当 GLSL 着色器在以下 GPU 上生成不正确的图像时 我遇到了问题 GT 430 GT 770 GTX 570显卡760 但在这些上正常工作 英特尔高清显卡 2500英特尔高清4000英特尔4400显卡740MRadeon HD 631
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • Opengl 像素完美 2D 绘图

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

    是否可以在不将文件复制到 C 的情况下构建并链接 Glew 和 GLFW 我找不到任何说明如何在不将 DLL 复制到 C 上的 Visual Studio 目录的情况下使用这些库的文档 我只想包含项目目录中所需的所有 dll 和 lib 文

随机推荐

  • 添加二进制数

    有谁知道如何在Java中以二进制输入的2个二进制数相加 例如 1010 10 1100 Use Integer parseInt String int radix http docs oracle com javase 7 docs api
  • PHP int类型解释为float,破坏页面

    我正在学习 PHP 7 中的 OOP 遵循一本书上的示例 关于代码
  • Java Casting 方法,但不知道要转换成什么

    今天我在玩Java 我注意到一些奇怪的事情 考虑这段代码 String foo cast hi int bar cast 1 The cast 方法在这里 public static
  • 在模式匹配中失败

    目前在 c 7 版本 15 3 4 中 以下代码可以编译 但两个变量都合法地无法使用 switch fruit case Apple apple case Orange orange impossible to use apple or o
  • 在Java中读写TCP头(选项)

    我想做的是 使用 Java 编写客户端和服务器通过 TCP 发送字符串 到目前为止使用 Socket 和输入 输出流没有问题 But now I m trying to add 3 numbers to the Options field
  • 尝试了解 .NET Core 中 appsettings.json 与 web.config 的新行为,但对 MSDN 上相互矛盾的信息感到困惑

    因此 我正在阅读 MSDN 上的所有 NET Core 基础知识文章 同时在 Visual Studio 2017 中开发新的 NET Core MVC 应用程序 我在文章中阅读的内容与实际内容之间似乎存在一些不一致 我在我的申请中看到 我
  • 查找字符串中某个字符的索引

    我有一根绳子NSString Original 88 12 sep 2012 or Original 8 blablabla 我只想打印 之前的字符 那么如何找到字符 的索引 或者我该怎么做 提前致谢 要打印第一个右括号之前的字符 您可以这
  • 使用 wicket 进行单元测试时如何设置自定义会话?

    我正在尝试在仅允许您登录后访问的 wicket 页面上运行一些单元测试 在我的 JUnit 测试中 如果不设置会话 我无法启动页面或呈现它 你如何设置会话 我在查找有关如何执行此操作的任何文档时遇到问题 WicketTester teste
  • random.setstate() 和 random.seed() 之间差异或相似之处的确切性质是什么

    我对使用种子生成随机数有一个非常高的理解 因此 在生成随机数之前设置特定的种子将导致每次调用时生成相同的数字 我假设通过以下方式恢复状态 import random test123 random getstate random setsta
  • 在 WPF MediaElement 中播放 HTTPS 视频 URL 的解决方法

    我有一个 C WPF 应用程序 我需要通过 HTTPS 播放视频流 我说的是 YouTube 视频 通过使用提取的直接 URLYouTube爆炸 https github com Tyrrrz YoutubeExplode 众所周知 WPF
  • 如何在Retrofit 2中使用gson TypeAdapter?

    我有一个工作代码 其中我的改造客户端可以从 api 检索对象列表 国家 地区 问题是 如果我用来检索所有国家 地区 则 api 使用的参数会返回一个 ARRAY 那么当我想要查询单个国家 地区时 它会返回单个 OBJECT 结果显示以下异常
  • SQLite 中空安全相等运算符 <=> 的等价物是什么?

    我需要确定 SQLite 的等价物是什么 运算符 http dev mysql com doc refman 5 0 en comparison operators html operator equal to在 MySQL 中 任何想法
  • 用于协调的 SQL 语句

    给出以下架构 create table TBL1 ID varchar2 100 primary key not null MATCH CRITERIA varchar2 100 create table TBL2 ID varchar2
  • 多处理另一个函数的函数

    我正在对模拟的时间序列进行分析 基本上 它为每个时间步骤执行相同的任务 由于时间步数非常多 并且每个时间步的分析都是独立的 因此我想创建一个可以多处理另一个函数的函数 后者将有参数 并返回结果 使用共享字典和 lib并发 futures 我
  • Storm-Kafka多个spout,如何分担负载?

    我正在尝试在多个喷口之间分担任务 我遇到一种情况 我一次从外部源获取一个元组 消息 并且我想要拥有多个 spout 实例 其背后的主要目的是共享负载并提高性能效率 我可以对一个 Spout 本身执行相同的操作 但我想在多个 Spout 之间
  • 从 64 位的 SysListView32 获取文本

    这是我的代码 public static string ReadListViewItem IntPtr lstview int item const int dwBufferSize 1024 int dwProcessID LV ITEM
  • ngx-datatable 的通用“包装”组件

    一些介绍 我们目前正在开发一个基于 Angular2 的应用程序 该应用程序数据量很大 为了显示这些数据 我们决定给出ngx 数据表 https github com swimlane ngx datatable尝试一下 需要大量组件来显示
  • Android:创建自定义容器视图

    我正在尝试在 android 中创建一个自定义视图 或更好的布局 它用作 2 个子视图的容器 将其视为垂直分隔 2 个容器的条形图 可以上下滑动 我想像 xml 中的布局一样使用它 以便您可以在其中嵌套任何视图 我想到了类似的事情
  • 更新企业应用程序的 iOS 开发和 APNs 生产 [AirWatch]

    我为我的公司开发了一个 iOS 应用程序 我们通过 AirWatch 分发它 有些证书即将过期 试图弄清楚该怎么做是非常令人困惑的 我用谷歌搜索了一下 似乎每个页面都有不同的信息 如果有人能指出我正确的方向 我真的很高兴 我有一张 iOS
  • glGenerateMipmap 需要哪个内存屏障?

    我已使用 GL ARB shader image load store 写入纹理的第一个 mipmap 级别 文档指出 在其他操作中使用该图像的内容之前 我需要调用 glMemoryBarrier 以便适当地刷新缓存 例如 在执行 glTe