OpenGL - 固定管线着色器默认值(使用着色器模仿固定管线)

2024-04-06

谁能给我提供类似于固定功能管道的着色器?

我最需要默认的片段着色器,因为我在网上找到了类似的顶点着色器。但如果你有一双应该没问题!

我想使用固定管道,但具有着色器的灵活性,因此我需要类似的着色器,以便我能够模仿固定管道的功能。

非常感谢!

我是新来的,所以如果您需要更多信息,请告诉我:D

这就是我想要复制的:(纹理单元 0)

  • glTranslatef 的功能
  • glColor4f 的功能
  • glTexCoord2f 的功能
  • glVertex2f 的功能
  • glOrtho 的功能(我知道它在幕后使用着色器做了一些神奇的事情)

就是这样。这就是我想从固定功能管道复制的所有功能。谁能向我展示如何使用着色器复制这些东西的示例?


这里有几个问题将使使用着色器实现这一点变得更加困难。

首先也是最重要的,除了使用固定功能之外,您还可以使用即时模式。在转换到着色器之前,您应该切换到顶点数组。您可以编写一个类,它采用类似立即模式的命令,这些命令将介于glBegin (...) and glEnd (...)如果您绝对需要以这种方式构建您的软件,请将它们推入顶点数组。

As for glTranslatef (...) and glOrtho (...)这些并没有什么特别的。他们创建平移矩阵和正交投影矩阵,并将“当前”矩阵乘以该矩阵。目前尚不清楚您使用的是什么语言,但这些函数的一种可能的替代可能来自使用类似的库glm http://glm.g-truc.net/0.9.4/index.html (C++).

最大的障碍将是摆脱固定功能管道思维带来的“当前”状态心态。使用着色器,您可以完全控制几乎每个状态,并且不必使用乘以“当前”矩阵或设置“当前”颜色的函数。您只需将所需的确切矩阵或颜色值传递给着色器即可。这是解决这些问题的一种更好的方法,这就是为什么我真诚地认为你应该完全放弃固定功能方法而不是试图模仿它。

这就是为什么您希望“使用固定功能管道但具有着色器的灵活性”从根本上来说没有什么意义。

话虽如此,在 OpenGL 兼容模式下,GLSL 中有一些保留字引用了许多固定功能结构。这些包括诸如gl_MultiTexCoord<N>, gl_ModelViewProjectionMatrix等等。它们可以用作过渡援助,但从长远来看确实不应该依赖。

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

OpenGL - 固定管线着色器默认值(使用着色器模仿固定管线) 的相关文章

  • glGenerateMipmap 是否在 sRGB 纹理的线性空间中执行平均?

    OpenGL 3 3 规范似乎没有要求 mipmap 生成在线性空间中完成 我能找到的只有以下内容 派生的 mipmap 数组的内部格式都与 levelbase 数组和派生数组的维度如下 第 3 8 14 节中描述的要求 的内容 派生数组是
  • libgdx 中帧缓冲区的结果不明确

    我得到以下奇怪的结果帧缓冲区 http libgdx badlogicgames com nightlies docs api com badlogic gdx graphics glutils FrameBuffer htmllibgdx
  • 如何在 Spark Pipeline 中使用随机森林

    我想通过网格搜索和 Spark 交叉验证来调整我的模型 在 Spark 中 它必须将基础模型放入管道中 即管道办公室演示 http spark apache org docs latest ml guide html example mod
  • 从文件中读取 GLSL 着色器

    我正在尝试从如下所示的文件中读取顶点和片段着色器 version 330 core in vec3 ourColor out vec4 color void main color vec4 ourColor 1 0f but when i
  • OpenGL Z 偏置(多边形偏移)限制

    我有两个共面的多边形 我尝试做 glEnable GL POLYGON OFFSET FILL glPolygonOffset 0 1 并期望其中一个明显 位于 另一个之上 这种情况直到大约 70 75 个单位之外 近剪裁平面为 1 远剪裁
  • 将颜色渐变应用于网格上的材质 - Three.js

    我有一个 STL 文件加载到我的场景中 并将单一颜色应用于 phong 材质 我想要一种方法 将两种颜色应用于该网格物体的材质 并在 Z 轴上应用渐变效果 如下例所示 渐变花瓶 https i stack imgur com Ty9gq j
  • CPU 到 GPU 法线映射

    我正在创建一个地形网格 然后这个答案 https stackoverflow com a 5284527 1356106我正在尝试将 CPU 计算法线迁移到基于着色器的版本 以便通过降低网格分辨率并使用在片段着色器中计算的法线贴图来提高性能
  • 如何在 Github Action 中使用 Github 发布版本号

    我创建了一个 Github 存储库 其中包含构建 npm 包并将其发布到 npmjs com 的操作 我的行动的触发因素是在 Github 上创建一个新版本 创建新版本时 Github 要求我提供版本号 我很想在操作中使用这个版本号并将其提
  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • openGL转png

    我正在尝试将包含大量纹理 没有移动 的 openGL 编辑 我画的卡片 thx unwind 转换为一个 PNG 文件 我可以在框架的另一部分中使用该文件我正在与 有 C 库可以做到这一点吗 thanks 如果您的意思只是 获取由 Open
  • 不理解 gluOrtho2D 函数

    我不能做什么gluOrtho2D 函数是做什么的 是否将原点固定在 OpenGL 窗口上的某个特定点或其他位置 这是因为gluOrtho2D 1 1 1 1 将原点固定在窗口的中间 如果它在某个时刻没有修复原点 那么有什么方法可以修复原点
  • lwjgl 3 , glUniformMatrix4 导致 jre 崩溃

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

    我编写了一个简单的程序 可以在 3D 环境中渲染球体 并根据球体周围的四个光源为其着色 当我在桌面上运行该程序时 它工作得很好 但在 Android 设备上 球体只是纯色的 下面是一些图片来说明我正在谈论的内容 gt Desktop gt
  • 将像素传递给 glTexImage2D() 后会发生什么?

    例如 如果我创建一个像素数组 如下所示 int getPixels int pixels new int 10 pixels 0 1 pixels 1 0 pixels 1 1 etc glTexImage2D getPixels glTe
  • 对齐坐标系

    Let s say I have 2 coordinate systems as it is shown in image attached 如何对齐这个坐标系 我知道我需要将第二个坐标系围绕 X 平移 180 度 然后将其平移到第一个坐标
  • 在 SciKit-Learn 中使用 Pipeline 计算排列重要性

    我正在使用来自的确切示例SciKit https scikit learn org stable auto examples inspection plot permutation importance html sphx glr auto
  • glut 库中缺少 glutInitContextVersion()

    我正在练习一些 opengl 代码 但是当我想通过以下方式强制 opengl 上下文使用特定版本的 opengl 时glutInitContextVersion 它编译过程失败并给出以下消息 使用未声明的标识符 glutInitContex
  • 如何从spark管道逻辑模型中提取变量权重?

    我目前正在尝试学习 Spark Pipeline Spark 1 6 0 我将数据集 训练和测试 导入为 oas sql DataFrame 对象 执行以下代码后 生成的模型是oas ml tuning CrossValidatorMode
  • 为什么OpenGL使用float而不是double? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 当 OpenGL 中同时绑定 1D 和 2D 纹理时,正确的行为是什么?

    假设你有这样的东西 glBindTexture GL TEXTURE 2D my2dTex glBindTexture GL TEXTURE 1D my1dTex glBegin 正确的 OpenGL 行为是什么 要绘制一维纹理 二维纹理还

随机推荐

  • 使用新的日期时间 API 设置日期格式

    我正在使用新的日期时间 API 但运行时 public class Test public static void main String args String dateFormatted LocalDate now format Dat
  • Delphi XE2:如何使用序数值 > 255 的整数集

    我想做的就是定义一组值可能高于 255 的整数 但我没有看到任何好的选择 例如 with MyObject do Visible Tag in 100 155 200 225 240 Works just fine but with MyO
  • Django 和 uWSGI 的内部服务器错误

    我正在尝试按照本指南中的步骤操作 http uwsgi docs readthedocs org en latest tutorials Django and nginx html http uwsgi docs readthedocs o
  • 如果不需要的话 CSS 隐藏滚动条

    我正在尝试找出如何隐藏overflow y scroll 如果不需要 我的意思是 我正在构建一个网站 我有一个将显示帖子的主要区域 如果内容不超过当前宽度 我想隐藏滚动条 另外 我的第二个问题 我想做到这一点 以便当帖子超过当前宽度时 宽度
  • 将清单嵌入到 exe 文件中

    我有一个 manifest链接到的文件 exe程序文件 以便在打开时要求管理员权限 现在它是一个单独的文件 名为program name exe manifest这是与以下相同的文件夹program name exe 有什么方法可以将清单文
  • 通过宏/环境变量定义解决方案中的项目路径

    有没有办法使用用户宏 环境变量在解决方案中定义项目文件路径 我似乎无法做到这一点 有点像环境变量用于定义 C 项目中的附加包含目录 但我想对解决方案中项目文件的位置执行相同的操作 我尝试在文本编辑器中编辑解决方案以更改以 MyMacroNa
  • Fiddler 不解压缩 gzip 响应

    I use Fiddler调试我的应用程序 每当服务器压缩响应而不是解压缩响应时 Fiddler 都会显示不可读的二进制数据 Response to my request POST HTTP 1 1 200 OK Server xyz co
  • linq to sql loadwith 与 Associatewith

    loadwith 和 Associatewith 之间有什么区别 从我读到的文章看来 loadwith 用于加载附加数据 例如客户的所有订单 而AssociateWith用于过滤数据 这是正确的理解吗 如果有人可以用基于示例的解释来解释这一
  • Laravel 4:发布包的资产

    如何发布包资源 我在这里找到了一个教程 http laravel recipes com recipes 279 http laravel recipes com recipes 279 但是当我尝试从工作台发布资产时 出现以下错误 Run
  • PHP、MySQL:接收电子邮件,在数据库中自动搜索并根据结果发送电子邮件

    访客可以通过联系表联系工作人员 访客还需要提交电子邮件 这将存储在数据库中 现在考虑到工作人员回复此消息 工作人员的回复将直接发送到访客的电子邮件中 假设用户想要跟进工作人员发送的消息 我希望访问者只需点击电子邮件服务中的回复按钮 然后向我
  • 标准化整数与浮点的转换

    我需要将标准化整数值与实际浮点值相互转换 例如 对于 int16 t 值 1 0 用 32767 表示 1 0 用 32768 表示 尽管对每个整数类型 有符号和无符号 执行此操作有点乏味 但手动编写仍然很容易 然而 我想尽可能使用标准方法
  • 增加 Java 中主题的分区数量

    我正在使用名称 卡夫卡 2 12版本 2 3 0 根据我想更改的流量 负载最大分区某个主题的编号 Kafka启动后是否可以进行这种更改 并且可以通过代码完成吗 是的 您可以通过代码增加分区 使用AdminClient createParti
  • Android 当主题为深色时更改品牌启动背景颜色

    我在我的应用程序中实现了深色主题 一切正常 当系统处于深色模式时 应用程序也处于深色模式 反之亦然 问题是品牌启动 我有 2 个可绘制文件 Dark
  • 如何使用 ruby​​ 通过 ssl 通过 smtp 发送邮件(不使用 Rails,gmail 没有 TLS)

    我想要的只是使用 SSL 通过 SMTP 从我的 ruby 脚本发送电子邮件 我只找到了从 Rails 或使用 TLS 的 Gmail 执行此操作的示例 我发现人们谈论 ruby 1 8 5 的 SMTPS 支持 但是libdoc http
  • 显示没有索引的 pandas 数据框

    我想在没有索引列的情况下显示此数据框 我正在使用制表模块来更好地可视化数据 但不想在这里看到索引 我在 dftabulate 中尝试了index False 但它不接受这个参数 import pandas as pd from tabula
  • 如何在 jasper 报告中将文本字段旋转 90 度?

    我正在使用 iReport 设计器创建一些报告 在生成报告时 我遇到一个要求 必须以 90 度旋转显示静态文本字段 标签 如下图所示 我在互联网上搜索以获得解决方案 我发现 jaspersoft 不支持文本字段旋转 我在解决方案中读到了这个
  • 从 Admin SDK 调用 Firebase Callable Cloud 函数

    我有一个 Firebase 云函数 我想创建一个可调用函数 以便我可以从内置身份验证的 Web 客户端调用它 但我也想使用 Admin SDK 从我自己的后端代码调用它 特别是来自 Java 如果这很重要的话 我看到协议已记录 https
  • 在 Android 中的 Fragment 中使用 Google 地图

    我正在尝试在片段中加载 Google 地图 无论我尝试实现什么解决方案 我都会不断收到相同的错误 我已经解决了所有类似 如果不相同 的问题 并尝试按照前几个最佳答案的建议进行操作 但遗憾的是没有运气 因此 如果您能帮助我 我将不胜感激 我的
  • java 中像 read() 这样的 I/O 方法如何将线程置于阻塞状态?

    因此 如果我理解正确的话 当我们对对象调用 wait 时 线程会进入等待状态 而当它等待对象上的锁时 例如尝试进入同步块或方法时 线程会进入阻塞状态 像 read 这样的 I O 方法如何将线程置于阻塞状态 我理解为什么它必须处于阻塞状态
  • OpenGL - 固定管线着色器默认值(使用着色器模仿固定管线)

    谁能给我提供类似于固定功能管道的着色器 我最需要默认的片段着色器 因为我在网上找到了类似的顶点着色器 但如果你有一双应该没问题 我想使用固定管道 但具有着色器的灵活性 因此我需要类似的着色器 以便我能够模仿固定管道的功能 非常感谢 我是新来