OpenGL ES 2.0 中的多通道着色器

2024-02-06

首先 - 是否子程序需要 GLSL 4.0+?那么它在 OpenGL ES 2.0 的 GLSL 版本中不可用吗?

I quite了解什么是多通道着色器。
那么我的照片是什么:

  1. 使用一些着色器将一些东西(例如精灵)绘制到 FBO。
  2. 将 FBO 视为大屏幕尺寸四边形的大纹理,并使用另一个着色器,例如,将纹理颜色转换为灰度。
  3. 使用灰度颜色将 FBO 纹理四边形绘制到屏幕上。

或者这叫别的?

那么多通道 = 使用另一个着色器输出到另一个着色器输入?那么我们渲染一个对象两次或更多次?着色器输出如何到达另一个着色器输入?

例如

glUseProgram(shader_prog_1);//Just plain sprite draw
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, /*some texture_id*/);
 //Setting input for shader_prog_1
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
//Disabling arrays, buffers
glUseProgram(shader_prog_1);//Uses same vertex, but different fragment shader program
//Setting input for shader_prog_2
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

谁能以基本方式提供简单的例子?


一般来说,术语“多通道渲染”是指使用不同的着色器多次渲染同一对象,并将结果累积在帧缓冲区中。累积通常是通过混合完成的,而不是使用着色器。也就是第二个着色器doesn't取第一个的输出。它们各自执行部分计算,混合阶段将它们组合成最终值。

如今,这主要是为了前向渲染场景中的照明而完成的。您为每个灯光渲染每个对象一次,传递不同的照明参数,并且每次渲染灯光时可能使用不同的着色器。用于累积结果的混合模式是可加的,因为光反射率是可加的属性。

子例程是否需要 GLSL 4.0+?那么它在 OpenGL ES 2.0 的 GLSL 版本中不可用吗?

这是一个与您帖子的其余部分完全不同的问题,但答案是肯定的和否定的。

不,从某种意义上说,ARB_shader_subroutine 是 OpenGL 扩展,因此可以通过任何 OpenGL 实现来实现。是的,从实际意义上讲,任何硬件实际上could实现 Shader_subroutine 还可以实现 GL 4.x 的其余部分,因此已经在宣传 4.x 功能。

实际上,您不会发现非 4.x OpenGL 实现支持 Shader_subroutine。

它在 GLSL ES 2.0 中不可用,因为它是 GLSLES。不要混淆桌面OpenGL与OpenGLES。它们是两个不同的东西,具有不同的 GLSL 版本和不同的功能集。他们甚至不分享扩展(最近的极少数除外)。

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

OpenGL ES 2.0 中的多通道着色器 的相关文章

  • 如果使用多个 EAGLView,则不会绘制纹理

    我在使用Apple EAGLView 和Texture2D 时遇到了一些问题 如果我创建 EAGLView 的实例并绘制一些纹理 效果会很好 但是 每当我创建 EAGLView 的第二个实例时 都不会绘制新视图中的纹理 作为 OpenGL
  • OpenGL:调试“单通道线框渲染”

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

    我正在使用 glDrawElements 绘制三角形网格 并且希望能够使用鼠标单击来拾取 选择三角形 三角形的网格可以很大 在固定功能 OpenGL 中 可以使用 GL SELECT http content gpwiki org inde
  • Cocos2d:CCSpriteBatch 节点是否仅绘制可见属性设置为 true 的精灵?

    CCSpriteBatch 节点是否仅绘制可见属性设置为 true 的精灵 或者它也考虑屏幕尺寸 换句话说 如果节点内的精灵位于屏幕之外 opengl 绘制调用的性能是否会反映这一点 不 不 CCSpriteBatchNode 始终绘制所有
  • GLSL 棋盘图案

    我想用跳棋来遮蔽四边形 f P 下限 Px 下限 Py mod2 我的四边形是 glBegin GL QUADS glVertex3f 0 0 0 0 glVertex3f 4 0 0 0 glVertex3f 4 4 0 0 glVert
  • 安装 OpenGL ES 并编译 Android 代码

    我刚刚开始在 android 上学习 OpenGL ES 使用这本书 https rads stackoverflow com amzn click com 1430226471 并遇到了采用的问题source http apress co
  • WebGL - 如何传递无符号字节顶点属性颜色值?

    我的顶点由具有以下结构的数组组成 Position colour float float float byte byte byte byte 传递顶点位置没有问题 gl bindBuffer gl ARRAY BUFFER this vbo
  • OpenGL ES 2.0 中的纹理点?

    我正在尝试在 OpenGL ES 2 0 中为粒子系统实现纹理点 例如点精灵 我遇到的问题是所有点都渲染为实心黑色方块 而不是正确映射纹理 我已经验证 gl PointCoord 实际上返回从 0 0 到 1 0 的 x y 值 这将映射到
  • iPhone OpenGL ES 单视图还是多视图?

    我很困惑为 iPhone 编写游戏时最好的方法是什么 游戏将使用 OpenGL 渲染 但我很好奇创建开始屏幕 菜单 高分页面等 您是否使用 OpenGL 完成所有这些操作 或者创建额外的 UIView 并使用 UIKit 我认为没有最好的方
  • 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 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • Android 纹理仅显示纯色

    我正在尝试在四边形上显示单个纹理 我有一个可用的 VertexObject 它可以很好地绘制一个正方形 或任何几何对象 现在我尝试扩展它来处理纹理 但纹理不起作用 我只看到一种纯色的四边形 坐标数据位于 arrayList 中 the ve
  • Cocos2d - 将 GLImageProcessing 效果应用于 CCSprite

    苹果的oplenglGL图像处理 http developer apple com library ios samplecode GLImageProcessing Introduction Intro html加载图像并应用图像调整 亮度
  • 旋转后平移

    我正在使用适用于 Android 的 OpenGL ES 2 0 我正在使用触摸屏平移和旋转模型 我的平移仅在 x y 平面内 并且我的旋转仅围绕 z 轴 想象一下 直接向下看桌子上的地图 移动到地图上的各个坐标 并且能够旋转地图在你正在看
  • 对于某些纹理尺寸,glFramebufferTexture2D 在 iPhone 上失败

    当我尝试将纹理附加到帧缓冲区时 glCheckFramebufferStatus 报告某些纹理大小的 GL FRAMEBUFFER UNSUPPORTED 我已经在第二代和第四代 iPod Touch 上进行了测试 两个模型之间失败的纹理尺
  • OPENGL ES 不工作:无当前上下文

    我尝试了 OpenGL ES2 for Android 一书中所示的程序 但它不起作用 我已经在Odroid E 三星s3 三星y 三星star上进行了测试 the gl version suported returns 2 but i g
  • 从哪里开始使用适用于 Retina 显示屏的 OpenGL 绘制程序

    我知道由于这里提到的错误 我无法将 GLPainter 示例从苹果适应到视网膜 在 Retina iPad 上显示全屏 CAEAGLLayer 时出现问题 https stackoverflow com questions 9757052
  • 不明确的 OpenGL 默认相机位置

    在我的Opengl程序中 在我应用透视投影矩阵之前 每当我绘制一些对象时 我都会在世界坐标系的原点处绘制它 但是几乎所有Opengl教程都指出相机 我的投影视图 位于原点朝向正 z 轴 这取决于您稍后如何处理投影矩阵中的 z 值 但是如果这
  • 在没有 SurfaceView 的 Android 上获取 GPU 信息

    在Android上 有没有一种方法可以在不创建SurfaceView的情况下获取GPU信息 我不想使用 OpenGL 绘制任何内容 但我只需要获取硬件信息 例如供应商 OpenGL ES 版本 可用扩展等 抱歉 我不知道如何在 Androi
  • Android OpenGL ES 支持无处不在?

    我需要了解如果我选择在 OpenGL 而不是 android graphics 中的 android 原生 2D 图形 API 进行绘图 我会损失多少潜在安装量 android 文档似乎暗示 OpenGL ES API 基本上在所有手机上都

随机推荐

  • 如何在android中的通知中添加按钮?

    我的应用程序播放音乐 当用户通过从屏幕顶部 或通常从平板电脑屏幕的右下角 滑动打开通知屏幕时 我想向他们展示一个按钮来停止当前播放的音乐并在以下情况下重新启动 他们要 我不打算将小部件放在用户的主屏幕上 而只是放在通知中 我怎样才能做到这一
  • 如何使用无法删除的值初始化输入,但允许用户在输入后写入

    我正在使用 Angularjs 和 bootstrap 创建一些表单 我想使用无法删除的默认值来初始化输入 我不想使输入只读或禁用它 我想用一些无法删除的文本初始化输入 但让用户在该文本后写入 Example 代码 xyz 用户想要写入的任
  • 在新版本的 matplotlib 中使用 twinx 时定义宽高比

    当前版本的 matplotlib 不允许box forced再说了 我应该怎么做同样的事情answer https stackoverflow com a 24742133 11840592 我正在使用 matplotlib 3 1 0 当
  • 如何在CSS中倾斜虚线边框?

    我正在尝试使用 CSS 为邮件应用程序设计一个信封 我的客户想要这种方式的虚线边框 如何用 CSS 边框达到这种效果 您可能需要稍微调整一下颜色 enveloppe padding 1em border 16px solid transpa
  • 在 Storybook v6.4 中加载 css 模块类时出现问题

    我在让故事书与我的 Gatsby 项目中的 css 模块完美配合时遇到问题 我能够渲染按钮组件 但它没有添加任何我的样式 在检查元素时 我只得到undefined undefined从下面的代码 按钮 jsx import React fr
  • 如何关闭 Nifi 处理器计划

    我有 GetHttp 和 InvokeHttp Nifi 处理器 它们在 Nifi 中启动流 但我希望它们仅从 URL 获取一次并将数据传递到下一个进程 使用处理器配置 我无法关闭调度 如何实现这一点 Apache NiFi 处理器和流程专
  • lambda 表达式中的返回类型错误

    以下代码在 IntelliJ 和 Eclipse 中可以正常编译 但 JDK 编译器 1 8 0 25 会报错 首先 代码 import java util function Predicate public abstract class
  • 如何将多个收件人添加到mailitem.cc字段c#

    好的 我正在处理 Outlook msg 模板 以编程方式打开它们 根据我的数据库中的内容插入值 前任 当我想在 收件人 字段添加多个收件人时 而不是执行以下操作 mailitem To a b c 我执行下面的操作 这更简单 尤其是当我循
  • iPhone:线程+释放池+[对象释放]=“消息发送到已释放的实例”

    我在 iPhone 上运行一些小代码时遇到了麻烦 基本上 我只需按一个按钮 它就会调用runTest 它运行test后台线程上的方法 这就是我创建自动释放池的原因 如果我运行下面的代码 我会在控制台上收到一条漂亮的消息 2010 09 07
  • AWS 公共 IP 限制是多少? (公共IP不是弹性IP)

    对于给定的 AWS 区域 您可以使用的公共 IP 数量是否有限制 不是弹性 IP 注意 我知道您最多只能使用 5 个弹性 IP 但是 如果您在创建 AWS 实例时选择 自动分配 IP 您将获得一个 IP 该 IP 在重新启动时会发生变化 我
  • 有没有办法将 ProGuard 与 MonoDroid 一起使用?

    我们的开发团队刚刚 大部分 在 Visual Studio 中使用 MonoDroid 完成了一个 Android 应用程序 因为它与银行业务有关 所以我们想尝试对其进行混淆 以增加一些安全性 防止任何人试图反编译它 最初 我认为我可以只使
  • 如何验证域凭据(来自本机代码)?

    我想针对域控制器验证一组凭据 例如 Username joel Password splotchy Domain STACKOVERFLOW 在 NET 3 5 及更高版本中您可以使用PrincipalContext ValidateCre
  • 使用 Schedule 库安排异步函数。 (使用discord.py重写)

    我的上一篇文章被错误地标记为重复 我不想做 asyncio sleep 因为它在几周内太不准确了 我需要时间表库 我发现了一个类似的线程 如何使用计划库运行异步函数 https stackoverflow com questions 515
  • 如何保持带有长标签的ggplot的大小

    我有一个图 它是每种事件类型的数量的简单条形图 我需要将情节的标签放在情节下方 因为某些事件的名称很长并且会横向挤压情节 我尝试将标签移动到图下方 但现在当有很多事件类型时 它会被向上挤压 有没有办法拥有静态绘图大小 即条形图 以便长图例不
  • 将 Bazaar 存储库转换为 SVN

    我编写了一些利用 pysvn 来分析项目的 python 脚本 我想在一个现在位于 bazaar repo 中的项目上运行这些 所以我想知道如何在我的机器上获取 bazaar repo 的副本 然后将其转换为 svn 标准 以便 pysvn
  • 无法在 Visual Studio 2010 中编辑或添加参考文件的路径

    无法编辑或添加参考文件的路径 我无法编辑或添加参考文件的路径 我在工作中继承了一个项目 当我打开项目并转到 Visual Studio 2010 IDE 中的引用部分时 会出现一些黄色的小警告标志 表明那里列出的引用有问题 但是 当我单击该
  • BIRT 中使用的多个 SQL 标准的 IF-ELSE 替代方案

    我想使用 BIRT 创建报告 我有 5 个 SQL 标准作为报告的参数 通常 当我有 3 个条件时 我会使用嵌套的 if else 作为带有 javascript 的 WHERE 语句 由于现在我有更多的标准 因此编写代码并检查可能性变得更
  • 从friend_request FQL表中检索已发送的好友请求列表

    我需要显示我已发送的好友请求列表 我尝试使用 FQL 选择时间 消息来自friend request WHERE uid from me 但是 这总是返回错误消息 uid from 字段未建立索引 有什么办法可以实现这一点吗 这是不可能的
  • Visual Studio 2013 无法保存、生成或重建解决方案

    突然 在我单击 清理解决方案 后 我无法再保存 构建或对解决方案执行任何操作 这似乎是一个错误 因为每次我点击 CTRL S 或只是 重建 或 构建 甚至 开始 按钮时 我都会收到此消息 我还仔细检查了所有组件 它们什么也没有 不见了 我需
  • OpenGL ES 2.0 中的多通道着色器

    首先 是否子程序需要 GLSL 4 0 那么它在 OpenGL ES 2 0 的 GLSL 版本中不可用吗 I quite了解什么是多通道着色器 那么我的照片是什么 使用一些着色器将一些东西 例如精灵 绘制到 FBO 将 FBO 视为大屏幕