(OpenGL 3.1 - 4.2) 动态统一数组?

2023-11-25

假设我有 2 个物种,例如人类和小马。它们具有不同的骨骼系统,因此每个物种的统一骨骼阵列必须有所不同。我是否必须实现两个单独的着色器程序才能正确渲染每个骨骼数组,或者是否有办法动态声明统一数组并迭代该动态数组?

牢记性能(所有着色器在决策分支方面都很糟糕)。


在 OpenGL 4.3 之前,GLSL 中的数组必须具有固定的编译时大小。 4.3 允许使用着色器存储缓冲区对象,这允许它们的最终长度“无界”。基本上,你可以这样做:

buffer BlockName
{
  mat4 manyManyMatrices[];
};

OpenGL会根据你的使用方式在运行时计算出这个数组中有多少个矩阵glBindBufferRange。所以你仍然可以使用manyManyMatrices.length()获取长度,但它不会是编译时常量。

但是,此功能(在进行本次编辑时)非常新,并且仅在测试版中实现。它还需要 GL 4.x 级硬件(又名:Direct3D 11 级硬件)。最后,由于它使用着色器存储块,因此访问数据可能比人们希望的要慢。

因此,我建议您只使用具有最大数量矩阵的统一块。如果这成为内存问题(不太可能),那么您可以根据数组大小拆分着色器或使用着色器存储块或其他方式。

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

(OpenGL 3.1 - 4.2) 动态统一数组? 的相关文章

  • 如何创建一个 numpy 数组来描述三角形的顶点?

    我喜欢使用 Numpy 创建要传递到的顶点数组glsl Vertices将是一个包含 3 个顶点信息的 numpy 数组 Each vertex包括 pos x y 具有 32 位的 64 位有符号浮点格式 R 分量位于字节 0 3 中 3
  • 3D 图形矩阵 4x4 中最后一行的 magic 4 的用途是什么?

    当我阅读有关WebGL的书时 我看到了下一个矩阵描述 有关于书中最后一行的信息 WebGL 初学者指南 初学者指南 Diego Cantor Brandon Jones 神秘的第四排 第四排没有任何特殊之处 意义 元素 m4 m8 m12
  • 如何以编程方式在 qml 中渲染 vtk 项目?

    到目前为止 我了解到我们在 QML 中有两个线程 我们的主应用程序线程和我们的 场景图 线程 http doc qt io qt 5 qtquick visualcanvas scenegraph html http doc qt io q
  • OpenGL NURBS 曲面

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

    我有 9 个由三角形组成的四边形 如下所示 我在用着VBO存储有关它们的数据 它们的位置和纹理坐标 我的问题是 是否可以仅使用一个来使四边形 5 具有与其余四边形不同的纹理VBO and shader 绿色代表纹理 1 黄色代表纹理 2 到
  • 如何将 3D 图像输出到 3D 电视?

    我有一台 3D 电视 如果我不至少尝试让它显示我自己创作的漂亮 3D 图像 我就会逃避我的责任 作为一个极客 我之前已经完成了非常基本的 OpenGL 编程 因此我了解所涉及的概念 假设我可以为自己渲染一个简单的四面体或立方体并使其旋转一点
  • 纹理openGl。 C++、qt

    我试图用草纹理覆盖我的地形 由高度图制成 但它没有按预期工作 我什至无法在简单的 GL QUAD 上获取纹理 结果是多色网络 void GLWidget initializeGL glEnable GL TEXTURE 2D 在 QGLwi
  • OpenGL:调试“单通道线框渲染”

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

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • 使用 Qt 在 xoverlay 之上绘制

    我希望在使用 Xoverlay 渲染的视频流之上绘制一些 UI 我正在使用 gstreamer 播放视频并使用 xoverlay 在 xvimagesink 上渲染它 我的小部件继承自 QGLWidget 我希望使用 QPainter 绘制
  • openGL转png

    我正在尝试将包含大量纹理 没有移动 的 openGL 编辑 我画的卡片 thx unwind 转换为一个 PNG 文件 我可以在框架的另一部分中使用该文件我正在与 有 C 库可以做到这一点吗 thanks 如果您的意思只是 获取由 Open
  • 使用 GLSL 着色器在同一片段着色器中定义的多个子例程类型无法正常工作

    我正在开发一个使用 GLSL 着色器的程序 我编写了 2 种不同的方法来用 2 种不同的方法计算 ADS 环境光 漫反射 镜面反射 着色 为了正确完成这项工作 我使用子例程来使用一种或另一种方法来计算 ADS 着色 这是片段着色器代码的一部
  • 使用draw()而不是eventloop时的pyglet

    我正在尝试用 pyglet 画一个圆 但当我使用 draw 函数而不是 app run 循环时 它是不可见的 有什么建议我可以做什么吗 谢谢 from math import from pyglet gl import window pyg
  • 使用 OpenGL 着色器进行数学计算 (C++)

    我有一个矩阵 例如 100x100 尺寸 我需要对每个元素进行计算 matrix i j tt 8 5例如 我有一个巨大的矩阵 我想使用 OpenGL 着色器来实现该算法 我想使用着色器 例如 uniform float val unifo
  • 解决 Three.js / webGL 中的 gl_PointSize 限制

    我正在使用 Three js 创建交互式数据可视化 此可视化涉及渲染 68000 个节点 其中每个不同的节点具有不同的大小和颜色 最初我尝试通过渲染网格来实现此目的 但事实证明这非常昂贵 我当前的尝试是使用 Three js 粒子系统 每个
  • 当 OpenGL 中同时绑定 1D 和 2D 纹理时,正确的行为是什么?

    假设你有这样的东西 glBindTexture GL TEXTURE 2D my2dTex glBindTexture GL TEXTURE 1D my1dTex glBegin 正确的 OpenGL 行为是什么 要绘制一维纹理 二维纹理还
  • PyQt5 的 OpenGL 模块和版本控制问题(调用不正确的 _QOpenGLFunctions_(ver))

    我一直在努力得到PyQt5 helloGL 示例代码 https github com baoboa pyqt5 blob master examples opengl hellogl py编译 当我尝试构建解决方案时 我得到 Traceb
  • 无法在 WSL2 上运行 OpenGL

    我尝试在 WSL2 上运行 OpenGL 代码 但在尝试运行可执行文件时出现以下错误 GLFW error 65543 GLX Failed to create context GLXBadFBConfig Unable to create
  • OpenGL ES 2.0 中的纹理点?

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

    我想在 OpenGL GLUT 程序中使用鼠标滚轮来放大和缩小场景 我怎么做 Freeglut 的 glutMouseWheelFunc 回调与版本相关 并且在 X 中不可靠 使用标准鼠标功能并测试按钮 3 和 4 OpenGlut 对 g

随机推荐

  • 如何获取进程ID来杀死nohup进程? [关闭]

    Closed 这个问题是与编程或软件开发无关 目前不接受答案 我正在服务器上运行 nohup 进程 当我尝试杀死它时 我的腻子控制台会关闭 这是我尝试查找进程 ID 的方法 ps ef grep nohup 这是杀死命令 kill 9 17
  • 如何保持对话框中的沉浸模式?

    当我的活动显示自定义对话框时 如何维护新的沉浸模式 我使用下面的代码来维护对话框中的沉浸模式 但是使用该解决方案 当我启动自定义对话框时 导航栏会出现不到一秒钟 然后就会消失 以下视频更好地解释了该问题 当导航栏出现时 请查看屏幕底部 ht
  • Flutter:Streambuilder 导致 Firestore 上的读取次数过多

    我正在尝试构建一个简单的报价 Flutter 应用程序 在其中显示报价列 表并允许用户 喜欢 报价 我正在为此使用 Streambuilder 我的问题是 Firestore 使用仪表板显示的读取次数非常多 每个用户几乎 300 次 即使我
  • 服务帐号需要哪些预定义 IAM 角色才能完成 Google Cloud Run 快速入门:构建和部署?

    我想将 Google Cloud Run 与 Google App Engine 和 Google Cloud Functions 进行比较 云跑快速入门 构建和部署似乎是一个很好的起点 我的应用程序默认凭据太宽泛 无法在开发过程中使用 我
  • 如何在离散BarChart nvd3.js上设置y轴上的域和比例

    我在我的一个应用程序中使用 d3 js 图表 他们在这张图片中 看Charts 对于货币图表上的 Y 轴 参见图片 我希望最大值四舍五入为 400 无论这里的最大条形大小是多少 它都是 358 72 美元 但我想将条形保持在 358 72
  • 在RecyclerView中显示SQLite数据

    我搜索了很多 但没有找到任何有关如何在 RecyclerView 中显示 SQLite 数据的分步指南 谁能向我解释我该怎么做 My 数据库适配器 public class DataBaseAdapter DataBaseHelper he
  • SQL CE 最大长度

    我需要在 WP7 应用程序中存储文章 我只想使用数据库 这样我就可以通过未读的文章等进行查询 我在 Mango 中遇到了 SQL CE 的一个大问题 似乎有 4000 个字符的限制 而我的文章是 4200 个 而这还不是最大的问题 如果有的
  • T-SQL 中“\”和“$”的用法是什么?

    正如我发现的 在 SQL Server 书籍中 Backslash Transact SQL 将长字符串常量分成两行或更多行以提高可读性 and SELECT Clause Transact SQL IDENTITY ROWGUID And
  • 将元数据存储在 CSV 文件中

    我知道这是对 CSV 格式的滥用 我确实明白更合适的解决方案是导出xls xlsx文件 或为用户提供 OData 端点并让他们使用 power hub 检索数据 此时我想坚持使用 CSV 因为它更容易实现 我需要将平面行列表 报告 导出为
  • 如何最好地在 C# 中实现可公开访问的常量

    在 C 中实现可公开访问的常量似乎有三种选择 我很好奇是否有任何充分的理由选择其中之一 或者这只是个人喜好问题 Choice 1 私有字段加上属性获取器 private const string someConstant string th
  • 如何将表单添加到控制台应用程序以便用户可以选择文件?

    我创建了一个控制台应用程序并让它按照我想要的方式工作 使用VS2010中的 添加项目 gt 添加Windows窗体 选项 它已经自动创建了我需要的内容 我添加了一个按钮和代码来检索 Excel 文件 如下 我的问题是 我如何获取他们创建的文
  • 在 Open ES iPhone 应用程序中使用 VAO 围绕 VBO 会导致调用 glDrawElements 时 EXC_BAD_ACCESS

    我正在尝试将我的代码提升到一个新的水平 遵循 Apple 的一些最佳实践 我尝试围绕我的顶点缓冲区对象 VBO 实现顶点数组对象 我像这样设置我的 VBO 和 VAO void setupVBOs glBindBuffer GL ARRAY
  • 如何使用Python在屏幕上绘制一个空矩形

    我不是专家 我试图在屏幕上显示一个矩形 该矩形从固定起点开始跟随鼠标移动 就像您在文字或绘画中选择某些内容一样 我带着这个代码 import win32gui m win32gui GetCursorPos while True n win
  • 如何将 ATL/MFC CString 转换为 QString?

    鉴于项目的编码可能是 Unicode 但不确定 将 ATL CString 转换为 QString 的最佳方法是什么 我想到的是这样的 CString c T SOME TEXT std basic string
  • 将 Guice 组件集成到 Spring 应用程序中

    我们有一个基于 Spring 框架的应用程序 需要集成使用 Google Guice 构建的组件 有人能给我们一些关于如何做到这一点的建议吗 我们遇到了以下链接 展示了如何将 Spring 集成到 Guice 中 但我们需要相反的方式 ht
  • 匹配文件对象中的多行正则表达式

    如何从文件对象 data txt 中提取此正则表达式中的组 import numpy as np import re import os ifile open data txt r Regex pattern pattern re comp
  • 一个xib,几个子类

    我有一个用于自定义 UIView 子类的 xib 文件 工作正常 我能够加载正确的 nib 并创建我的类的实例 它包含我添加到 xib 文件中的所有子视图 但是 我也对该视图进行了子类化 但我不知道如何创建此类的实例并让它使用父类使用的 x
  • 如何从apireact.js下载excel响应

    我的 api 的响应类似于此演示 URL https mytutari com webservices contract exportcallnote 10377431 如果我单击 url 它会自动下载 但是当我尝试在 axios 响应中使
  • 将整数拆分为 bin

    给定一个整数和 bin 的数量 如何将整数分成尽可能相等的部分 例如 输出的总和应等于输入整数 in x 20 num bins 3 out 7 7 6 另一个例如 in x 20 num bins 6 out 4 4 3 3 3 3 我试
  • (OpenGL 3.1 - 4.2) 动态统一数组?

    假设我有 2 个物种 例如人类和小马 它们具有不同的骨骼系统 因此每个物种的统一骨骼阵列必须有所不同 我是否必须实现两个单独的着色器程序才能正确渲染每个骨骼数组 或者是否有办法动态声明统一数组并迭代该动态数组 牢记性能 所有着色器在决策分支