问题标签 [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.
opengl - GLEW 和我的着色器不同意——我有没有那个扩展?
我正在通过使用发现着色器,并且遇到了一个奇怪的问题。
我需要ARB_robustness
片段着色器的扩展才能正常工作。GLEW 肯定我有这个扩展:
...但是当我require
在我的着色器中...
...着色器编译器无法识别它。
GLEW 已正确初始化,只要我不尝试使用该扩展,一切正常。
这个问题的原因可能是什么,我该如何解决?提前致谢。
更新:在朋友的帮助下,我在我身边戳它,我按照glxinfo
他的建议运行,扩展名确实出现在输出中。
opengl-es - GL 错误:尝试使用 glBindVertexArrayOES 时内存不足?
我在网上搜索过,但没有找到glBindVertexArrayOES
确切的工作方式。
目前 VAO 的使用导致GL Error: Out of Memory
. 任何人都可以给我建议或分享指向具有适当 VAO 使用示例的文档的链接吗?
注意: 此链接可能涵盖了我的用例中的问题。
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()?
或者也许我误解了它,我仍然需要检查?
opengl - 不支持 GL_ARB_sparse_texture
我有这段代码检查是否GL_ARB_sparse_texture
支持:
它打印出它是受支持的。问题是我的着色器说它不是:
输出:
我在 Windows 8.1 上有带有 350.12 驱动程序的 GTX 660Ti。
我究竟做错了什么?
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 驱动程序有“优化稀疏纹理”选项并且它已打开。这个设置是做什么的?有什么经验吗?
- 有什么建议可以改善整个事情吗?
opengl - 使用 NVPath 扩展和 Pango 渲染多行文本
我正在使用 Pango 来布局我的文本和 NV Path 来呈现字形。
难以找到获取每个字形位置的正确方法。正如您目前所看到的,我正在根据行和字形索引计算这些值。
但是 Pango 对此有更好的方法;像每个字形,每行,范围查询。我的问题是这种方法没有文档,我找不到任何样本。
对于这种类型的应用程序,我怎样才能从 Pango 获得正确的字形位置?
opengl - 如何使用 GL_ARB_stencil_texturing
根据我的阅读,要在着色器中对模板纹理进行采样,我需要设置GL_DEPTH_STENCIL_TEXTURE_MODE
,所以我这样做了:
但我得到一个无效的枚举......为什么会这样?
opengl-es - 哪些扩展成为 OpenGL ES 3.2 中核心的一部分
随着 Open GL ES 3.2 的引入,一些扩展成为核心 API 的一部分。
其中一些扩展是 Android 扩展包的一部分,根据 GLES 3.2 规范,在所有 AEP 扩展中,只有 sGRB 解码没有成功。
哪些扩展使它成为最新版本的 OpenGL ES 3.2?
windows - wgext - 扩展未安装在 OpenGL 上下文中
我正在尝试使用 wglSwapIntervalEXT(int 间隔)在带有 WGL_EXT_swap_control 的 OpenGl 中禁用 vsync。
我正在尝试包含 wgext 标头,但经过大量搜索后,它似乎没有安装在我的电脑上(使用 opengl 扩展查看器找到它)。我已尝试安装 windows sdk 并更新 .net 框架,但仍然无法安装此扩展。
反正有没有包括这个。我的显卡是 nVidia GTX 770m。或者有没有更简单的方法来禁用 vsync。
谢谢
opengl - glXGetProcAddress 为以“gl”开头的任何 procName 返回非 null
当我发现以下代码及其许多变体产生非空内存地址时,我感到非常惊讶。我尝试的变化包括:
- 调用
glXGetProcAddressARB
而不是glXGetProcAddress
. - 有一个活跃的 GL 上下文,使用 GLFW 创建。
使用 GLFW 提供的跨平台替代方案:
/li>glfwGetProcAddress
.
这些程序是用-lGL
(-lglfw
在需要时)编译的,没有警告也没有错误。
获得0
输出(NULL
指针)的唯一方法是询问名称不以 开头的函数的地址gl
,例如manny
。
我对这种行为感到非常惊讶,因为glottis
并且manny
应该同样不存在,而且我希望两者都会产生一个NULL
指针。
资源
这是文档的摘录glXGetProcAddress
。
笔记
如果被查询的实现不支持请求的函数,则返回 NULL 指针。
由于在查询时可能未加载库,因此 GLU 函数不可查询。