问题标签 [opengl-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
236 浏览

opengl - GLSL 扩展在应该可用时不可用

我在华硕 RoG fx553 笔记本电脑的 Nvidia GeForce GTX 1050 上进行 GPU 计算,出于某种原因,尽管 Nvidia 官方网站将此 GPU 列为与线程内在指令(GL_NV_shader_thread_group等)兼容,但使用#extension GL_NV_shader_thread_group : require不断抛出错误和报告扩展名不可用,即使我使用的是 4.3 上下文#version 430(我也尝试了 4.4 无济于事)。由于我是加载扩展的新手,我不知道我是否缺少 Glad/GLFW 端的一些设置。

编辑:我下载了 OpenGL 扩展查看器,它继续告诉我我的 GPU 应该支持GL_NV_shader_thread_group,即使在 OpenGL 4.3 上下文中也是如此。

OGLEV 显示 GL_NV_shader_thread_group 在 OpenGL 4.3 下可用

0 投票
1 回答
361 浏览

opengl - GLSL 中“pixel_interlock_ordered”的语法是什么?

我正在尝试使用 OpenGL 4.5 中的 ARB_fragment_shader_interlock 扩展,但在尝试使用 pixel_interlock_ordered 时无法编译着色器。

以下着色器编译失败:

对于任何随机名称而不是 pixel_interlock_ordered,您都会得到相同的错误。我猜语法有所不同,但规范(https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt)将其称为“布局限定符”。

谷歌搜索“pixel_interlock_ordered”只是链接到官方规格,所以我找不到一个例子。什么是正确的语法?

0 投票
2 回答
3017 浏览

c++ - 如何使各向异性过滤扩展工作?

在我的(C++/OpenGL)程序中,我正在加载一组纹理并设置纹理参数,如下所示:

我发现各向异性过滤可以帮助我增强场景的外观。因此,我使用这条线来实现它:

虽然我在我的笔记本电脑(有 AMD GPU 供应商)上编译这行代码没有问题,但我无法使用 Intel(R) HD Graphics 530 (Skylake GT2) 在我的另一台计算机上编译这段代码。具体来说,尝试使用 g++ 编译那段代码会输出以下错误:

更具体地说,在我的 Linux 终端中运行以下命令:

揭示了有关我的 GPU 供应商和 OpenGL 支持的以下详细信息:

在此处输入图像描述

我知道 ANISOTROPIC FILTERING 已在 中启用ARB_texture_filter_anisotropic,但老实说,我不知道如何检查我的 GPU 供应商是否支持扩展,如果他支持,我如何才能使用 ANISOTROPIC 过滤?

顺便说一句:我正在使用 glfw3 和 GLAD 加载程序。

0 投票
1 回答
117 浏览

opengl - 在 OpenGL 中启用快速 Z 清除

为了分层渲染,我发现自己需要每帧多次清除深度缓冲区。

在 2000 年代初期,由于当时带宽有限,清除 Z 实际上非常昂贵。因此,AMD 提出了HyperZ之类的技术,其中包括针对深度缓冲区的快速 Z 清除操作。

在这个时代,我是否可以假设所有制造商都实现了深度值的快速清除,并且默认启用它?

或者是否有我应该注意的 OpenGL 扩展,或者我需要在某处切换的设置?

顺便说一下,我的目标是 OpenGL Core Profile 3.2。

0 投票
1 回答
113 浏览

opengl - gl3w 和 GL 扩展

我的目标是 Linux 上的 GL Core Profile。当我像这样直接使用系统 GL 标头时:

...然后一切都按预期工作,我也可以使用 GL 扩展,例如glPushGroupMarkerEXT()调用。

但是由于我已经集成了 imgui,我不得不通过一个GL 加载器(没有加载器我无法使 imgui 工作。)所以我遵循了 imgui 示例,现在使用gl3w

现在我通过了 gl3w,我不能再使用那些 GL 扩展:

我看了看,但是 gl3w 似乎没有像 glew 那样带有单独的扩展头:glxew.h文件。

glPushGroupMarkerEXT()这是否意味着如果我将 gl3w 用作 GL 加载程序,我将无法使用?

0 投票
1 回答
184 浏览

android - 如何在 Android 上的 OpenGL ES 3.1 中使用 GL_MAP_PERSISTENT_BIT?

我最近从 using 切换glBufferDataglMapBufferRangewhich 让我可以直接访问 GPU 内存,而不是每帧都将数据从 CPU 复制到 GPU。

这工作得很好,在 OpenGL ES 3.0中我每帧执行以下操作:

  • 通过 .获取指向我的 GPU 缓冲内存的指针glMapBufferRange
  • 使用此指针直接更新我的缓冲区。
  • 用于glUnmapBuffer取消映射缓冲区以便我可以渲染。

但是某些 Android 设备可能至少具有 OpenGL ES 3.1,并且据我所知,可能还具有EXT_buffer_storage扩展名(如果这是错误的扩展名,请纠正我?)。使用此扩展,可以设置不需要使用标志映射/取消映射每个帧的持久缓冲区指针。GL_MAP_PERSISTENT_BIT但是我无法弄清楚或在网上找到很多如何访问这些功能的方法。

我如何在 Android 上的 OpenGL ES 3.1 中glMapBufferRange使用set 调用?GL_MAP_PERSISTENT_BIT

检查glGetString(GL_EXTENSIONS)似乎确实显示扩展程序存在于我的设备上,但我似乎无法找到GL_MAP_PERSISTENT_BIT某个地方,例如在GLES31orGLES31Ext中,我只是不确定如何继续。

0 投票
1 回答
252 浏览

c++ - vkEnumerateInstanceExtensionProperties : pLayerName 参数的含义是什么?

我想知道运行我的软件的 PC 是否具有特定的 GPU 扩展。为了实现这一点,我使用了这个函数vkEnumerateInstanceExtensionProperties,但我不明白第一个参数。

如果我用 NULL 为 pLayerName 参数调用此函数,则 pPropertyCount 设置为 12。

但根据OpenGL Extensions Viewer,我的 GPU 上有超过 12 个可用的扩展。OpenGL Extensions Viewer 按前缀(GL_KHR、GL_EXT、GL_NV、GL_ARB...)对扩展进行排序,这是“层”吗?