是否值得在代码中缓存 glsl 统一位置?

2023-11-23

我希望能够通过着色器中的实际名称设置制服

myProgram.uniform3fv("uniformVector", 0.0f, 0.1f, 1.0f);

我是否必须以某种形式的地图缓存位置?

std::map<std::string, unsigned int> // or unordered_map 

或者也许OpenGL(在桌面上)无论如何都会缓存这个,所以我不会有任何性能差异?


OpenGL 规范定义的是功能,而不是性能。因此,没有办法知道任何特定的 OpenGL 实现将如何存储活动制服列表或多快glGetUniformLocation将是,相对于std::map表现。

所以说真的,这取决于你。如果你想保持一致,known性能,自己做。如果您想尝试一下 OpenGL 实现的变幻莫测,请随时查询它。就我个人而言,我会说放弃名字并选择地点。这样你就能获得最大的性能。

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

是否值得在代码中缓存 glsl 统一位置? 的相关文章

  • 使用 glGetFloatv 检索 pyglet 中的模型视图矩阵

    我正在使用 pyglet 在 python 中进行 3D 可视化 并且需要检索模型视图和投影矩阵来进行一些选择 我使用以下方式定义我的窗口 from pyglet gl import from pyglet window import wi
  • 在 3D 场景中实现“抓取”相机平移工具

    在我的场景中 我有想要 抓取 的地形 然后在移动光标时让相机平移 其高度 视图向量 视野等全部保持不变 因此 最初的 抓取 点将是世界空间中的工作点 我希望在拖动时该点保留在光标下方 我当前的解决方案是获取前一个和当前的屏幕点 取消投影它们
  • OpenGL中背景对象绘制在前景对象前面?

    为了测试目的 我们假设我画了 2 个茶壶glutSolidTeapot 像这样 glColor3f 1 0f 0 0f 0 0f Red teapot glutWireTeapot 1 0f glColor3f 0 0f 1 0f 0 0f
  • 如何计算正切和副法线?

    谈谈OpenGL着色语言 GLSL 中的凹凸贴图 镜面高光之类的东西 I have 顶点数组 例如 0 2 0 5 0 1 0 2 0 4 0 5 法线数组 例如 0 0 0 0 1 0 0 0 1 0 0 0 世界空间中点光源的位置 例如
  • 为什么我的 CAOpenGLLayer 更新速度比之前的 NSOpenGLView 慢?

    我有一个在 Mac OS X 上渲染 OpenGL 内容的应用程序 最初它渲染到 NSOpenGLView 然后我将其更改为渲染到 CAOpenGLLayer 子类 当我这样做时 我看到了巨大的性能损失 帧速率减半 鼠标响应能力降低 卡顿
  • OpenGL什么时候完成函数中指针的处理?

    OpenGL有多项功能 http www opengl org wiki GLAPI glTexSubImage2D直接获取指针 他们中有一些从这些指针读取数据 http www opengl org wiki GLAPI glBuffer
  • GLSL聚光投影体积

    在我的开源项目中 我使用 Qt3D 设置了延迟渲染管道 到目前为止一切顺利 但现在我想通过添加聚光灯投影量来继续前进 例如场景中好像有烟雾 像这样 我正在使用的片段着色器位于问题的末尾 我读过 对于每个片段 我应该从光位置进行光线行进并找到
  • 渲染缓冲区大于窗口大小 - OpenGL

    我正在尝试绘制大于屏幕尺寸 即 320x480 的渲染缓冲区 512x512 执行 glReadPixels 后 图像看起来是正确的 除非图像的尺寸超过了屏幕尺寸 在本例中 超过了水平 320 和垂直 480 是什么原因导致这种异常现象呢
  • matplotlib:渲染到缓冲区/访问像素数据

    我想使用 matplotlib 生成的图作为 OpenGL 中的纹理 到目前为止 我遇到的 matplotlib 的 OpenGL 后端要么不成熟 要么已经停止使用 所以我想避免使用它们 我当前的方法是将图形保存到临时 png 文件中 并从
  • 纹理采样:根据LOD值计算BIAS值

    GL ES 2 0 中的功能纹理2DLod在片段着色器中不可用 我需要移植 GLSL 着色器 在 GL ES 2 0 中我只能使用二维纹理 sampler2D 采样器 vec2 坐标 浮点数bias 告诉我如何计算 a 的值bias相当于已
  • 带有 std::vector 的 VBO

    我用 C 和 OpenGL 编写了一个模型加载器 我用过std vectors 来存储我的顶点数据 但现在我想将其传递给glBufferData 但是数据类型却截然不同 我想知道是否有办法可以相互转换std vector至已记录的const
  • OpenSceneGraph 将相机设置在初始位置

    我是第一次使用 OpenSceneGraph 我有点迷失 因为文档确实不太清楚 所以 我有这段代码加载一个带有房子的 obj 文件 并且我在我想要的 人 所在的地方淹没了一个小盒子 所以现在 我不想把那个盒子放在那里 而是想把相机放在那里
  • OpenGL 与 OpenCL,选择哪个以及为什么?

    哪些功能使 OpenCL 能够独特地选择 OpenGL 和 GLSL 进行计算 尽管有与图形相关的术语和不实用的数据类型 OpenGL 是否有任何真正的警告 例如 可以通过使用其他纹理将 a 渲染到纹理来完成并行函数评估 减少操作可以通过迭
  • OpenGL 缓冲区、glFlush 和 glutSwapBuffers()

    使用之间有什么区别吗 glutInitDisplayMode GLUT SINGLE GLUT RGB with glFlush and glutInitDisplayMode GLUT DOUBLE GLUT RGB with glutS
  • 是否可以在 Mac OS X 上构建 FreeGLUT?

    我正在做一些关于 OpenGL 的教程 http www arcsynthesis org gltut Basics Tutorial 2001 html那个使用FreeGLUT http freeglut sourceforge net
  • 新显卡上的 nvoglv32.dll 中的绘制调用崩溃

    几天前 由于一些硬件更改 我设置了计算机并安装了新的 Windows 8 副本 其中 我将显卡从 Radeon HD 7870 更改为 Nvidia GTX 660 再次设置 Visual Studio 11 后 我从 Github 下载了
  • sRGB 纹理。它是否正确?

    我最近阅读了一些有关 sRGB 格式以及它们如何允许硬件自动对典型显示器执行色彩校正的文章 作为我阅读的一部分 我发现您可以使用普通纹理和返回结果上的 pow 函数来模拟此步骤 无论如何 我想问两个问题 因为我以前从未使用过此功能 首先 有
  • 并排显示图像的一半 - OpenGL

    我为两个图像创建了两个纹理 现在我想在opengl中按图像2的左侧部分 完整的图像1 图像2的右侧部分的顺序显示该纹理 我已经做了如下 Image1 显示在 opengl 屏幕的中央 但屏幕的左右部分不正确 应分别显示 image2 的左侧
  • 如何在 Moderngl EGL 后端添加深度缓冲区?

    此代码渲染一个带有抗锯齿功能的彩色三角形 samples 8 当深度缓冲线depth attachment ctx depth texture 512 512 samples 8 被评论 但是当我添加深度缓冲区时 它会在绑定处返回 GL 错
  • 改进OpenGL粒子系统

    我正在寻找一种提高粒子系统性能的方法 因为它在 FPS 方面的成本非常高 这是因为我打电话 glDrawElements GL TRIANGLE STRIP mNumberOfIndices GL UNSIGNED SHORT 0 我为应用

随机推荐

  • 树莓派Qt5设置物理屏幕尺寸

    我正在使用交叉编译在 raspbian 上的树莓派上开发 qt5 应用程序 当我运行它时 我得到一个黑屏 试图显示一个 QFrame 弹出窗口 我想它无法定位 因为我在开头收到了错误消息 EGLFS 无法查询物理屏幕尺寸 默认为100 dp
  • 为什么 '.sort()' 会导致 Python 中的列表为 'None'? [复制]

    这个问题在这里已经有答案了 我正在尝试对 Python 列表进行排序ints 然后使用 pop 函数返回最高的一个 我尝试过以不同的方式编写该方法 def LongestPath T paths Ancestors T x for x in
  • 计算出一天已过去的百分比

    有点奇怪的问题 但希望有人能帮忙 本质上 如果时间是中午 12 点 则经过百分比为 50 上午 6 点为 25 下午 16 点为 75 给定当前时间 您如何计算出已经过去了多少天 假设您可以获得一天中的当前时间 那么计算一天过去的百分比将非
  • JSpinner.DateEditor 必须包含年份,即使开始和结束是同一年

    我有一个使用 SpinnerDateModel 的 JSpinner 其开始日期为 2010 年 1 月 1 日 00 00 00 000 结束日期为 2010 年 1 月 1 日 00 12 34 217 我希望我的 JSpinner D
  • 如何设置在整个应用程序中可访问的全局变量

    我开发了一个带有全局变量的PHP页面 如下所示 global amty imgCache amty imgCache array GLOBALS amty imgCache amty imgCache 该页面具有向该数组添加 删除条目的功能
  • 使用管道符号作为分隔符拆分字符串

    为什么下面的输出是 并不是 1 String input 1 2 3 String values input split System out println values 0 Output 但是 如果我们更改分隔符 则输出为 1 Stri
  • Grub 2 未检测到内核中的多重引导标头

    我在使用 Grub 2 以及 QEMU 的 kernel 没有检测到我的内核中的 Multiboot v1 标头 我之前将标题放在单独的部分中 text linker ld SECTIONS 1M multiboot ALIGN 4K mu
  • 如何列出 git 存储库中跟踪文件的所有不同扩展名?

    我想知道所有不同的扩展名给定存储库中 git 跟踪的文件的数量 以便创建适当的 gitattributes file 预期输出示例 bat gitignore gradle html jar java js json md png prop
  • Golang 中的泛型方法参数

    我需要帮助才能使其适用于任何类型 我有一个函数 我需要接受其他类型ID财产 我尝试过使用接口 但这对我来说不起作用ID财产案 这是代码 package main import fmt strconv type Mammal struct I
  • 如何加密非阻塞 PHP 套接字流?

    我正在尝试以非阻塞 异步 方式使用 PHP 的stream socket client 函数 PHP 网站上的文档表明 STREAM CLIENT ASYNC CONNECT 选项标志应该启用此功能 然而 下面的代码 start time
  • C# .net 更改标签文本

    您好 我尝试使用此代码 但由于某种原因它不起作用 确实需要帮助 问题是当我进入网站时 标签不会从 标签 更改名称
  • 是否可以在我的网站上禁用 IE8“加速器”?

    我是一名专注于 UI 的 Web 开发人员 我的 Web 应用程序中的许多界面功能都是基于双击的 在 IE 中 这会带来新的烦人的问题 加速器 图标干扰我的用户界面 是否可以禁用我的页面上的 加速器 也许有一些新的愚蠢的特定于 IE 的me
  • 如何捕获div中的一行文本

    我浏览过与此相关的类似 SO 帖子 但没有一个完全符合我正在寻找的内容 假设我有一些文本 我将其放入 div 中 然后向该 div 添加一些任意 甚至可能是动态 宽度 有没有什么方法可以让我以编程方式捕获和操作 div 中的各个文本行 例如
  • Json.NET 按深度和属性序列化

    例如我们有两个类 class FooA SomeSpecialAttribute public int SomeValueA get set public int SomeValueB get set public int SomeValu
  • Persistence.xml放在eclipse项目的哪里

    简单的问题 我在Eclipse环境中有一些项目MainApp 企业应用项目 其中 包含 Web控制器 EJB项目 WebModel JPA 项目 WebView 动态Web项目 问题是 persistence xml 文件放在哪里 获取异常
  • Spring Boot、静态资源和mime类型配置

    我面临着无法处理的 Spring Boot 配置问题 我正在尝试使用 Spring Boot 为 HbbTV 构建一个 HelloWorld 示例 因此我需要使用 mime type application vnd hbbtv xhtml
  • 从本地服务器迁移到 Azure:TIMEZONE UTC。怎么解决?

    我设计我的应用程序时考虑到了这样一个事实 根据规范 应该在位于意大利的服务器上运行 并且客户端只能是意大利人 大约一个月前 我的老板决定将所有内容都放在 Azure 上 一切都很顺利 唯一给我带来问题的是时间服务器是 UTC 解决方案是 一
  • 标记为“内容”->“始终复制”的文件不会被复制

    我的 C VS2010 项目的文件夹中有一个文件标记为Content and Always Copy 当我更改此文件并将其保存到 VS 外部 然后运行该项目时 修改后的文件不会复制到输出中 如果我重建 那就是 我的猜测是VS不会使用文件的修
  • 在自定义 powershell 函数中模拟 -ErrorAction

    如何在自定义 powershell 函数中模拟 ErrorAction 例如考虑以下脚本 function Foo2 Write Host in Foo2 Error occurs Foo3 function Foo1 Write Host
  • 是否值得在代码中缓存 glsl 统一位置?

    我希望能够通过着色器中的实际名称设置制服 myProgram uniform3fv uniformVector 0 0f 0 1f 1 0f 我是否必须以某种形式的地图缓存位置 std map