Opengl 和 Webgl:从附加到当前帧缓冲区的纹理中采样

2023-12-05

我有一个带有两个纹理的帧缓冲区t0 and t1随附的。

在第一遍中,我使用多个片段着色器输出渲染它们。

在第二遍之前,我执行以下操作:

  • 打开仅具有一个输出的着色器
  • Bind t1到纹理单元
  • 调用 glDrawBuffers 禁用写入t1的附件

注意t1用于采样,但它仍然绑定到当前帧缓冲区。据我了解,这种配置中没有环回。

它在 OpenGL 和 WebGL 中都合法吗?

我做了一个example它在 Linux 下的 Chrome 和 Firefox 中完美运行,但在 Windows 下的两种浏览器中都会呈现黑屏。这是 D3D 支持的 Webgl 实现中的原因,并且正如所指出的那样,它是积极的纹理解除绑定here?


据我了解,这种配置中没有环回。

但有一个。

在 GL 4.5 之前的版本(包括 WebGL)中,反馈回路每当您从当前附加到帧缓冲区的纹理读取数据时都会发生这种情况。如果你现在不写信也没关系。你没关系can't此刻写信给它。只要它附加到帧缓冲区,您就会在读取它时得到未定义的行为(除非它们是从未附加的 mipmap 级别读取的)。

In GL 4.5 后 (which doesn't包括 WebGL)或使用纹理屏障扩展,这很轻松。但还不足以解决你的问题。当您尝试从仍附加到帧缓冲区的图像读取先前调用中写入的像素时,UB 仍会被触发。

因此,您必须更改 FBO,以便不再附加图像,或者必须发出纹理屏障(如果您有权访问 4.5/ARB/NV_texture_barrier,在桌面 GL 上您可能会这样做)。

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

Opengl 和 Webgl:从附加到当前帧缓冲区的纹理中采样 的相关文章

  • OpenGL NURBS 曲面

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

    我已经阅读并看到了其他问题 这些问题通常都指向将顶点位置和颜色等交错到一个数组中的建议 因为这可以最大限度地减少从 cpu 发送到 gpu 的数据 我不清楚的是 即使使用交错数组 您仍然必须对位置和颜色指针进行单独的 GL 调用 OpenG
  • 没有着色器的 OpenGL

    我已经阅读了一些教程来编写以下代码 唯一的区别是原始教程使用 SDL 而不是 GLEW 我不明白这段代码有什么问题 它可以编译 但我没有看到三角形 教程也没有使用着色器 include
  • 使用 Opengl 绘制立方体 3D

    我想使用 OpenGL 绘制 3D 立方体这是我的代码如何纠正错误 float ver 8 3 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
  • glutPostRedisplay 不在循环内工作

    我试图让一个人在 y 轴上跳跃 所以我使用 2 秒的循环 第一秒它应该向下移动并弯曲膝盖 第二秒它应该向上移动 然后在起始位置完成 现在我刚刚开始让这个人在第一秒内跪下并弯曲膝盖 我还没有编写动画的其余部分 问题是 glutPostRedi
  • QOpenGLFunctions 缺少重要的 OpenGL 函数

    QOpenGLFunctions 似乎缺少重要的函数 例如 glInvalidateFramebuffer 和 glMapBuffer 据我了解 QOpenGLFunctions 加载桌面 OpenGL 函数和 ES 函数的交集 如果是这样
  • OpenGL z轴指向哪里?

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • 即使在顶点着色器中使用,glGetUniformLocation()也会返回-1

    我正在尝试用法线渲染一个简单的立方体 我使用以下代码来初始化着色器 void initShader const char vertexShaderPath const char fragmentShaderPath cout lt lt I
  • 为什么我的 FPS 相机一劳永逸地滚动?

    如果我忽略四元数代数的肮脏细节 我想我理解了旋转和平移变换背后的数学 但仍然不明白我做错了什么 为什么我的相机一劳永逸地滚动 更具体地说 我应该如何从相机的方向 旋转矩阵 计算相机视图矩阵 我正在用 Python 编写一个简约的 3d 引擎
  • glEnableVertexAttribArray 中“index”参数的含义以及(可能)OS X OpenGL 实现中的错误

    1 我是否正确理解 要使用顶点数组或VBO进行绘制 我需要所有属性在着色器程序链接之前调用glBindAttribLocation 或者在着色器程序成功链接后调用glGetAttribLocation 然后使用glVertexAttribP
  • 将按钮控件嵌入到现有 Direct3D 应用程序中

    我想将自己的内容覆盖在 Direct3D v9 游戏 由第三方制作 之上 叠加互动按钮 具体来说 我想覆盖一个可点击的按钮控件 就像 Steam 所做的那样 尽管我正在尝试一个更简单的界面 理想情况下 我能够覆盖 WPF 按钮或 Windo
  • lwjgl 3 , glUniformMatrix4 导致 jre 崩溃

    我正在使用 lwjgl 3 并学习现代 opengl 3 我想将统一矩阵发送到顶点着色器 以便我可以应用转换 我尝试过 但程序因此错误而崩溃 A fatal error has been detected by the Java Runti
  • 对齐坐标系

    Let s say I have 2 coordinate systems as it is shown in image attached 如何对齐这个坐标系 我知道我需要将第二个坐标系围绕 X 平移 180 度 然后将其平移到第一个坐标
  • glBlitFramebuffer 渲染缓冲区和渲染全屏纹理哪个更快?

    哪个更快更高效 使用 OpenGL 纹理作为 CUDA 表面并在四边形上渲染 新样式 使用渲染缓冲区作为 CUDA 表面并使用 glBlitFramebuffer 进行渲染 None
  • glut 库中缺少 glutInitContextVersion()

    我正在练习一些 opengl 代码 但是当我想通过以下方式强制 opengl 上下文使用特定版本的 opengl 时glutInitContextVersion 它编译过程失败并给出以下消息 使用未声明的标识符 glutInitContex
  • SDL 鼠标位置调整大小后裁剪

    我在 SDL 中的鼠标位置上遇到了一些奇怪的行为 如果我将窗口大小调整得更大 则任一鼠标事件的 x y 位置似乎都限制为原始窗口的宽度和高度 如果我缺少一些函数调用来告诉 SDL 鼠标区域的大小已增加 应用程序的相关部分 void Resi
  • 为什么OpenGL使用float而不是double? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在每一帧上更新整个 VBO 是绘制许多变化的独特三角形的最有效方法吗?

    答复我之前的问题 https stackoverflow com questions 24592099 drawing many unique triangles with a single draw call for better per
  • 三-mtl-loader 错误:THREE.MeshPhongMaterial:.shading 已被删除 -> 对象不可见

    昨天我问了这个问题 未捕获的类型错误 THREE MTLLoader 不是构造函数 2 0 https stackoverflow com questions 47741644 uncaught typeerror three mtlloa
  • Glew+GLFW Win32 无依赖项 Visual Studio

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

随机推荐

  • 如何在 ASP.NET MVC 中组织 DAL [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在尝试在 ASP NET MVC 项目中组织数据访问层 我读过很多关于此问题的不同文章 所以为了解决这个问题我仍然有一些问题 例如 我应该为数据库中的每个实体还是为所有或一个通用实例创
  • REST API设计:如何处理也可以是子资源的资源

    我必须在现有产品数据库之上放置一个 只读 REST 服务 最简单的部分是拥有顶级产品资源 例如 api products 现在 实际上该服务的调用者更需要根据商店和特定流程 例如 零售 的 ID 来获取相关产品 在幕后 这两个值的组合会产生
  • 如何制作更小的RatingBar?

    我添加了一个评级栏在布局中
  • Phonegap Build iOScamera.getPicture() 质量参数不起作用

    我编写了一个 Phonegap 应用程序并使用构建服务对其进行了编译 我的应用程序在这段代码中调用相机 函数 capturePhoto Take picture using device camera and retrieve image
  • 空间中固定数组大小是 O(n) 还是 O(1)?

    数组是这样声明的 int array M O 1 在太空中或O n 其中 M 是某个固定值 大部头书O n 这是有道理的 因为它不仅仅是一个变量 而是整个数组 但后来我想这可能是O 1 因为我们有固定的尺寸并且它不会改变 如果您的数组具有固
  • 在 AMD 处理器上运行 Android Studio 模拟器

    安卓新手 我的处理器是AMD的 不是Intel的 所以我无法在Android studio中打开模拟器 这个答案有这样的评论 您可以运行 ARM 非 Intel 模拟器映像 从您的列表中 只需选择非英特尔仿真即可 他们没有解释在哪里可以找到
  • 以原子方式更新多行

    我需要执行选择 然后更新中的一些行ResultSet以原子的方式 我正在使用的代码如下所示 简化 stmt con createStatement ResultSet TYPE SCROLL SENSITIVE ResultSet CONC
  • 平面数据的层次结构

    我有一个雇员类 它有一个employeeId int parent int 和children属性List
  • 将 XML 节点绑定到树视图节点

    我想使用 TTreeView 浏览 XML 为了将树视图节点与具有属性的 XML 节点关联起来 我使用了以下语法 var tv TTreeView tn1 tn2 TTreeNode xn IXMLNode if xn AttributeN
  • 在 MS Access 中以编程方式创建 ODBC 连接和链接表

    我们使用 MS Access 作为 Oracle 的报告前端 数据通过ODBC连接访问 Access to Oracle中有两个链接表 即原始数据表 我希望能够设置连接并链接 Access 文件中的表 这样用户就不必担心为 ODBC 连接设
  • 使用 PHP 从 XML 中的节点内部获取数据

    所以我不确定什么或如何真正描述我需要什么 但希望有人会理解 整个 xml 文件的单个元素如下所示 for counter 1 counter load file xml make sure path is correct note objD
  • 重写父类的函数[重复]

    这个问题在这里已经有答案了 class classa public virtual void foo class classb public classa public virtual void foo override void clas
  • 如何获取窗口大小调整后的高度和宽度

    我有一个 scorm 模块 它在新窗口中启动 并在我的 js 文件中的 window open 中设置 ressized 1 function OpenScormModuleWindow scormModuleId scormModuleU
  • .htaccess 将所有带有数据的 POST 请求重定向到文件

    我有一个 htaccess文件位于子文件夹 www domain com API 中 我需要将此子文件夹的所有 POST 请求重定向到子文件夹中的文件 www domain com API Sub manager php 我必须说所有 PO
  • INotifyDataErrorInfo.GetErrors(null) 是否应该返回所有错误? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 INotifyDataErrorInfo GetErrors null 是否应该返回所有
  • UITextView 的标题视图?

    我想在 UITextView 的顶部有一个自定义视图 该视图将与文本视图一起滚动 因此仅当文本视图滚动到最顶部时它才可见 这可以做到吗 我在想 因为它是 UIScrollView 的子类 所以可能可以做一些事情 Thanks 您是否尝试过更
  • Android - 使用 LinearLayout 检查 RadioGroup 中的 RadioButton ID

    有什么可能的方法来获得选择radio button在这个布局中 因为rg getCheckedRadioButtonId 不在此布局上工作 我无法得到我的每一个radiobuttons ID 这就像我的全部radio button不在我的范
  • 从 Jenkins 运行时,浏览器自动化(使用 Webdriver )作为进程运行,但不可见

    细节 使用Webdriver和TestNG开发测试自动化框架 使用 ANT 作为触发工具来驱动浏览器自动化 这工作正常 我可以看到浏览器打开并查看所有导航 在本地设置 Jenkins 并配置为调用 ANT 单击作业中的 立即构建 链接 浏览
  • 同时合并列表中的多个 data.frames

    我有一个要合并的许多 data frames 的列表 这里的问题是每个 data frame 的行数和列数都不同 但它们都共享关键变量 我称之为 var1 and var2 在下面的代码中 如果 data frames 在列方面相同 我只能
  • Opengl 和 Webgl:从附加到当前帧缓冲区的纹理中采样

    我有一个带有两个纹理的帧缓冲区t0 and t1随附的 在第一遍中 我使用多个片段着色器输出渲染它们 在第二遍之前 我执行以下操作 打开仅具有一个输出的着色器 Bind t1到纹理单元 调用 glDrawBuffers 禁用写入t1的附件