- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正如 jar 头上所说:是否有任何理由使用 gl_FragColor
而不是 gl_FragData[0]
?如果不是,那么为什么gl_FragColor
存在呢?它仅仅是 gl_FragData
不存在时期的遗留物吗?
(是的,我知道最新的 GLSL 版本中已弃用两者,但我仍然想编写可以在旧卡上运行的代码。)
最佳答案
我将向您推荐 GLSL 1.1 的 OpenGL 规范,因为除了说它们是互斥的之外,它对两者几乎没有什么区别。
If a shader statically assigns a value to gl_FragColor, it may not assign a value to any element of gl_FragData. If a shader statically writes a value to any element of gl_FragData, it may not assign a value to gl_FragColor. That is, a shader may assign values to either gl_FragColor or gl_FragData, but not both.
考虑到这种语言,在不使用 MRT(多个渲染目标)的着色器中,gl_FragColor
可能是首选。对于输出到多个缓冲区的着色器,请使用 gl_FragData [n]
。但切勿混合搭配,即使您可能从逻辑上假设 gl_FragColor
是 gl_FragData [0]
的别名。
GLSL 规范早于 FBO,因此拥有一组位置来输出片段数据并不总是有意义。由于 GLSL 和 FBO 都是 OpenGL 3.0 的核心,因此很容易认为这是理所当然的。片段着色器的旧 ARB 扩展规范对这个主题有一个简介:
14) What is the interaction with a possible MRT (Multiple Render Target) extension?
The OpenGL Shading Language defines the array gl_FragData[] to output
values to multiple buffers. There are two situations to consider.
1) There is no MRT extension support. A shader can statically assign a
value to either gl_FragColor or gl_FragData[0] (but not both).
Either way the same buffer will be targeted.
2) There is MRT support. In this case what happens is defined in the
relevant MRT extension documentation.
他们正在提前思考,但还没有完全准备好所有的部分。无论如何,这都是古老的历史。
关于opengl - gl_FragColor 是否做了 gl_FragData 不做的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075125/
有没有人熟悉某种OpenGL魔法来摆脱在片段着色器中计算一堆像素而不是只有一个?尤其是这个问题对于 OpenGL ES 来说很热门,事实上这意味着移动平台存在缺陷,并且有必要以更准确的方式(在性能意义
没有将任何内容写入 gl_FragColor 定义为等同于丢弃或简单地将 gl_FragColor 设置为 vec4(0, 0, 0, 0)? (为了记录,我问这个是因为我正在创建仅写入 gl_Fra
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 2 年前。 Improve t
我仍在尝试从片段着色器读取像素,但有一些问题。我知道 gl_FragColor 返回 vec4 意味着 RGBA,4 个 channel 。之后,我使用 glReadPixels 读取 FBO 并将其
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 2 年前。 Improve t
本站(GPGPU programming with OpenGL ES 2.0)讲如何用opengl es2.0做gpgpu我的问题是如何检索的值gl_FragColor 回到 cpu 站点(主机)?
正如 jar 头上所说:是否有任何理由使用 gl_FragColor 而不是 gl_FragData[0]?如果不是,那么为什么gl_FragColor存在呢?它仅仅是 gl_FragData 不存在
我正在使用 Three.js 和 ShaderMaterial 用片段着色器绘制点几何图形。 我希望每个点都有一个模糊的边缘,但我无法让 alpha 工作,它只是变成白色。 当它们完全透明时我可以丢弃
关于gl_FragColor似乎有很多歧义被弃用。例如,它在 GLSL 4.40 specification 中缺失,但它包含在 GLSL 4.60 specification 中. 什么是最安全、最
如标题所示,gl_FragColor.a = 0 应该使事物透明。那么与丢弃有什么区别? 对于以下代码 varying vec3 f_color; uniform sampler2D mytextur
我正在尝试为 NDK 掌握 OGLES2 并坚持使用 GLSL 着色器。情况类似于 the one already highlighted here ,但背后的原因似乎有些不同。 我有最简单的着色器。
我正在尝试编写一个简单的着色器,其中一半的场景将被显示,一半的场景将是透明的。我似乎无法弄清楚为什么透明度不起作用: uniform sampler2D tDiffuse; varying v
我不明白这里的错误是什么。请告诉我如何解决我是 openGL 开发新手的错误。它没有编译它显示这样的错误 ERROR: 0:4: Use of undeclared identifier 'gl_Fr
下面的代码用 {premultipliedAlpha: false} 绘制了三个 alpha 值 0.5 的三 Angular 形。 const gl = document.querySelector
我有一个 OpenGL ES Android 应用程序,我想找到一种方法让屏幕的多个部分同时以不同颜色发光。该应用程序本身将屏幕分为 6 列,当用户触摸该列时,该列会以独特的颜色亮起。 我遇到的问题是
经过几天的大量研究和测试,我终于能够实现显示的 fragment 着色器是这本书(我可以说是一本好书):http://arcsynthesis.org/gltut/Basics/Tutorial%20
我是一名优秀的程序员,十分优秀!