问题标签 [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 回答
139 浏览

opengl - GLEW 和我的着色器不同意——我有没有那个扩展?

我正在通过使用发现着色器,并且遇到了一个奇怪的问题。

我需要ARB_robustness片段着色器的扩展才能正常工作。GLEW 肯定我有这个扩展:

...但是当我require在我的着色器中...

...着色器编译器无法识别它。

GLEW 已正确初始化,只要我不尝试使用该扩展,一切正常。

这个问题的原因可能是什么,我该如何解决?提前致谢。

更新:在朋友的帮助下,我在我身边戳它,我按照glxinfo他的建议运行,扩展名确实出现在输出中。

0 投票
0 回答
176 浏览

opengl-es - GL 错误:尝试使用 glBindVertexArrayOES 时内存不足?

我在网上搜索过,但没有找到glBindVertexArrayOES确切的工作方式。

目前 VAO 的使用导致GL Error: Out of Memory. 任何人都可以给我建议或分享指向具有适当 VAO 使用示例的文档的链接吗?

注意:链接可能涵盖了我的用例中的问题。

0 投票
1 回答
1024 浏览

android - ETC1 纹理压缩保证在 OpenGL ES 2.0 Android 设备上可用?

我对 Android 设备上 ETC1 Textue 压缩的可用性(或不可用)有点困惑。

我看到这个(来自 Android Docs)在不同的地方被引用:

注意:大多数 Android 设备都支持 ETC1 格式,但不保证可用。要检查设备是否支持 ETC1 格式,请调用 ETC1Util.isETC1Supported() 方法。

我也相信(如果我错了,请纠正我)ETC1 支持是 OpenGL ES 2.0 强制要求的。

因此,有人可以澄清一下文档中的上述声明是否仅仅意味着不保证 ETC1 压缩支持可用 OpenGL ES 1.x 设备,但可能通过扩展的方式可用,因此在这些设备上,您应该调用ETC1Util.isETC1Supported() 方法来检查可用性

如果我的假设是正确的,我也会假设我可以100% 保证ETC1 在我的所有目标设备上可用(因为我的应用程序使用 OpenGL ES 2.0,我检查了应用程序内的可用性)。因此我不需要检查 ETC1Util.isETC1Supported()?

或者也许我误解了它,我仍然需要检查?

0 投票
1 回答
506 浏览

opengl - 不支持 GL_ARB_sparse_texture

我有这段代码检查是否GL_ARB_sparse_texture支持:

它打印出它是受支持的。问题是我的着色器说它不是:

输出: 在此处输入图像描述

我在 Windows 8.1 上有带有 350.12 驱动程序的 GTX 660Ti。

我究竟做错了什么?

0 投票
0 回答
262 浏览

c++ - ARB_sparse_texture 崩溃,导致计算机重新启动

我在可视化项目中使用 ARB_sparse_texture OpenGL 扩展。我在 glTexturePageCommitmentEXT 调用时遇到随机异常。当我在 NVidia Mosaic 模式下运行我的应用程序时,它会导致计算机重新启动。

我这样调用 glTexturePageCommitmentEXT :

其中 textureId 指向生成的稀疏纹理:

level 是 mipmap 级别,0 和 0 x 和 y 偏移量,layer 是 GL_TEXTURE_2D_ARRAY 中切片的索引,width 和 height 是 mipmap 级别中的纹理大小

1是深度。最后一个参数(false)是我要求扩展取消提交给定纹理区域的地方。为了提交纹理特定区域,我对这个函数进行了类似的调用,最后一个参数设置为 true。

  • 我有 12 个屏幕在 NVidia Mosaic 模式下运行。
  • 我的电脑上安装了 3 个 NVidia Quadro M6000。
  • 我有一个片段着色器来告诉应用程序这个纹理的哪个部分/mipmap 级别是可见的:

    布局(std430,绑定 = 4)缓冲区 TexUsage { uint texUsage []; //[ layer{level, level, level..}...] };

    atomicAdd(texUsage[layer * levelCount + int(textureQueryLod(tex, texCoord.xy).y)], 1);

  • 当我找到图层的 mipmap 级别时的每一帧都是可见的,我通过上述步骤提交并创建一个 Framebuffer:

    glGenFramebuffers(1, &id);

    glBindFramebuffer(GL_FRAMEBUFFER, id); glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, textureId, level, layer);

    // 做一些绘图

    glBindFramebuffer(GL_FRAMEBUFFER, 0);

  • 或者,如果我发现一个层的 mipmap 级别不再可见,我使用上面的代码取消提交它。

  • 在我遇到这种随机崩溃后,我尝试了:

    • 使用较小的纹理 256x256x100 => 崩溃。
    • 不使用稀疏纹理 => 我没有崩溃。
    • 试图隔离删除 mipmap 级别的问题(通过将级别设置为 1)=> 没有帮助。
    • 尝试禁用马赛克模式并强制 1 个 GPU 而不是 3 个 GPU 来完成工作 => 有些更好,至少我得到了 glTexturePageCommitmentEXT(..., false) 调用的异常。但仍然有随机崩溃。

我的问题:

  • 我该如何解决这个问题?
  • 怎么了?
  • 为什么我没有得到任何 glError?
  • 为什么它只能在 1 个 GPU 处于活动状态(马赛克被禁用)时抛出异常?
  • 这如何导致计算机重新启动,我该如何防止它?
  • 我看到 NVidia 驱动程序有“优化稀疏纹理”选项并且它已打开。这个设置是做什么的?有什么经验吗?
  • 有什么建议可以改善整个事情吗?
0 投票
0 回答
272 浏览

opengl - 使用 NVPath 扩展和 Pango 渲染多行文本

我正在使用 Pango 来布局我的文本和 NV Path 来呈现字形。

难以找到获取每个字形位置的正确方法。正如您目前所看到的,我正在根据行和字形索引计算这些值。

但是 Pango 对此有更好的方法;像每个字形,每行,范围查询。我的问题是这种方法没有文档,我找不到任何样本。

对于这种类型的应用程序,我怎样才能从 Pango 获得正确的字形位置?

0 投票
2 回答
369 浏览

opengl - 如何使用 GL_ARB_stencil_texturing

根据我的阅读,要在着色器中对模板纹理进行采样,我需要设置GL_DEPTH_STENCIL_TEXTURE_MODE,所以我这样做了:

但我得到一个无效的枚举......为什么会这样?

0 投票
1 回答
922 浏览

opengl-es - 哪些扩展成为 OpenGL ES 3.2 中核心的一部分

随着 Open GL ES 3.2 的引入,一些扩展成为核心 API 的一部分。

其中一些扩展是 Android 扩展包的一部分,根据 GLES 3.2 规范,在所有 AEP 扩展中,只有 sGRB 解码没有成功。

哪些扩展使它成为最新版本的 OpenGL ES 3.2?

0 投票
2 回答
1073 浏览

windows - wgext - 扩展未安装在 OpenGL 上下文中

我正在尝试使用 wglSwapIntervalEXT(int 间隔)在带有 WGL_EXT_swap_control 的 OpenGl 中禁用 vsync。

我正在尝试包含 wgext 标头,但经过大量搜索后,它似乎没有安装在我的电脑上(使用 opengl 扩展查看器找到它)。我已尝试安装 windows sdk 并更新 .net 框架,但仍然无法安装此扩展。

反正有没有包括这个。我的显卡是 nVidia GTX 770m。或者有没有更简单的方法来禁用 vsync。

谢谢

0 投票
1 回答
1128 浏览

opengl - glXGetProcAddress 为以“gl”开头的任何 procName 返回非 null

当我发现以下代码及其许多变体产生非空内存地址时,我感到非常惊讶。我尝试的变化包括:

  • 调用glXGetProcAddressARB而不是glXGetProcAddress.
  • 有一个活跃的 GL 上下文,使用 GLFW 创建。
  • 使用 GLFW 提供的跨平台替代方案:glfwGetProcAddress.

    /li>

这些程序是用-lGL-lglfw在需要时)编译的,没有警告也没有错误。

获得0输出(NULL指针)的唯一方法是询问名称不以 开头的函数的地址gl,例如manny

我对这种行为感到非常惊讶,因为glottis并且manny应该同样不存在,而且我希望两者都会产生一个NULL指针。

资源

这是文档的摘录glXGetProcAddress

笔记

如果被查询的实现不支持请求的函数,则返回 NULL 指针。

由于在查询时可能未加载库,因此 GLU 函数不可查询。

完整文件

有关此主题的更多信息