问题标签 [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 投票
2 回答
1289 浏览

opengl - 上传ASTC压缩纹理使用glCompressedTexImage2D花费太多时间?

我正在开发一个 opengl 应用程序。我使用了 opengl 函数:glCompressedTexImage2D(),以 ASTC 纹理压缩格式上传视频帧纹理。在GPU支持opengl扩展:GL_KHR_texture_compression_astc_ldr,压缩纹理格式为:GL_COMPRESSED_RGBA_ASTC_8x8_KHR的手机上运行良好,上传时间约为每帧2ms。

我想用opengl 4.5和Nvidia GTX 750硬件将应用程序移植到Windows平台,发现上传成功,但上传时间太长,每帧大约200ms~300ms。我查看了硬件数据库:http ://delphigl.de/glcapsviewer/listreports.php ,发现 GTX 750 不支持GL_KHR_texture_compression_astc_ldr扩展。然后我使用了 Intel(R) HD Graphics 530,它支持GL_KHR_texture_compression_astc_ldr扩展,上传时间约为每帧 2ms。所以我想知道为什么 Nvidia GTX 750 可以成功上传 ASTC 纹理但要花费这么多时间,有没有办法使用 Nvidia GTX 750 在正常时间(每帧 2 毫秒)上传 ASTC 纹理。Intel(R) HD Graphics 530无法支持复杂的 3D 应用程序。

这是上传代码:

0 投票
1 回答
373 浏览

android - Is glDebugMessageCallbackKHR implemented in Android 6?

I am trying to implement the OpenGL function for debug callbacks added with the Android OpenGL ES 3.1 extension pack in Android 5.0. When I try to setup a callback: GLES31Ext.glDebugMessageCallbackKHR(myCallback); it throws java.lang.UnsupportedOperationException: not yet implemented. This is on a Sony Xperia Z5 running Android 6.0, querying OpenGL context version returns OpenGL ES 3.1. Querying the list of supported OpenGL extensions returns that the extension GL_KHR_debug is avaialble (which this function is a part of).

Googling returned no useful results, my only hint is this file in the Android source repo: https://android.googlesource.com/platform/frameworks/native/+/android-6.0.1_r63/opengl/tools/glgen/stubs/gles11/glDebugMessageCallbackKHR.cpp

Does this mean Google has not implemented this function although my device reports that this functionality is supported? Or this is just an issue with my device?

0 投票
2 回答
474 浏览

c++ - 如何在 Qt5 中使用 glGenBuffersARB 之类的扩展?

我正在拼命地了解Qt5中OpenGL支持的架构。

我目前的问题是:我有一些现有的 OpenGL 代码(桌面,不是 OpenGL ES),它们使用一些 OpenGL 扩展,包括glGenBuffersARB. 在 Qt5 之外访问这样的扩展功能是微不足道的,例如通过使用GLEW,我可以简单地这样做:

一切都会按预期神奇地工作,我可以立即开始使用glGenBuffersARB。如果我担心,我可以打个电话来glewIsSupported确保它得到支持。

但在 Qt5 中有一个警告,即 GLEW 并QOpenGLFunctions不能很好地配合使用(复制自qopenglfunctions.h):

因此,假设我为了这个问题并满足好奇心,完全放弃了 GLEW,完全依赖 Qt5 来实现纯 Qt5 方法。在不手动绑定每个扩展函数的情况下,如何让我现有的依赖 glGenBuffersARB 的 OpenGL 代码工作?

注意:我知道我可以按照答案中的提示进行操作:

但是我必须在现有的 OpenGL 代码的每一行前面加上functions->我不想这样做的前缀。

0 投票
1 回答
2888 浏览

android - 如何在 Android 上启用 OpenGL 扩展 GL_EXT_shader_framebuffer_fetch?

我正在使用 OpenGL ES 2.0 开发一个 Android 应用程序,我想使用GL_EXT_shader_framebuffer_fetch扩展

据我了解,我需要先使用#extension片段着色器顶部的指令启用它,然后才能使用内置变量gl_LastFragData.

所以这是我的片段着色器:

但是,当我编译着色器时,出现以下编译错误:

错误非常明确: 支持此扩展。

我的技术规格:

  • 硬件:三星 Galaxy S4
  • 安卓版本:5.0.1
  • Android API 级别:21
  • OpenGL版本glGetString(GL_VERSION)):OpenGL ES 3.0 V@84.0 AU@(CL@)

我有几个问题:

  • 我可以做些什么来在我的设备上安装此扩展程序吗?
  • 如果没有,我可以在模拟器上安装/使用它吗?
  • 软件问题还是硬件问题?
0 投票
4 回答
12363 浏览

c - #包括:没有这样的文件或目录(即使源和头在同一个目录中)

我最近开始将我用 Java(使用 lwjgl)编写的游戏引擎转换为 C/C++。我在 Fedora 25 上使用 Qt Creator 和 CMake(我很确定这不会影响任何东西)来链接所有目录、文件等。 GLFW 安装在我的系统上,但我决定使用源版本,而不是比包含的版本。我正在为我的扩展加载器使用高兴,并按照GLFW 网站上的教程对其进行配置。我没有通过“Hello World”测试,因为当我将glad.h文件包含在我的main.c文件中时,我收到一个错误:

<glad/glad.h>: No such file or directory

同样奇怪的是,我在glad.c文件中遇到了同样的错误,这个错误是使用高兴自己的生成器创建的。我的main.c文件看起来像这样

我也尝试过使用"glad.h:而不是(我在这里<glad/glad.h>找到了这个建议)。这确实适用于我的文件,但我仍然对文件有同样的问题,即使在我编辑它以反映.main.cglad.cmain.c

我的项目目录如下所示:

如您所见,我的所有.c头文件和它们的所有头文件都在一个目录中。该lib目录是我保持高兴和 glfw 的地方。我只是将文件从lib/glad目录复制到主项目之一。

我的CMake长相是这样的

我尝试过四处搜索,但是人们在尝试调用系统上安装的库时遇到的所有问题。我的没有安装。我有一个单独的目录 ( lib),其中保存了我使用的所有内容。我发现的唯一接近我正在寻找的解决方案是关于替换<glad/glad.h>"glad.h". 正如我之前所说,这不起作用。GLFW 网站上的教程不提供任何其他信息或故障排除。

非常感谢任何帮助或建议。谢谢你。

0 投票
1 回答
100 浏览

qt - QtOpenGLExtensions 模块是官方的吗?

我需要做一些非常简单的事情——在我的 Qt 代码中使用 OpenGL 扩展。为此,我发现这个链接说最好的方法是QtOpenGLExtensions模块。但是这个模块在文档中不存在。有谁知道为什么?

0 投票
1 回答
292 浏览

opengl-es - 如何使用 glDrawTexiOES 绘制纹理?

我尝试以下代码,但没有任何成功:

我像这样创建我的纹理:

然后稍后在我的主渲染循环中,我尝试使用 glDrawTexiOES 绘制纹理,如下所示:

但这不起作用:(我错过了什么?

注意:此行的函数崩溃:glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, @aParams[0]); 错误 1280

0 投票
3 回答
375 浏览

qt - Qt+OpenGL不能做的OpenGL扩展有什么用?

由于 Qt 可以正常处理 OpenGL,它是跨平台的,可以处理鼠标、键盘、游戏手柄等。将 Qt 与 OpenGL 一起使用而不是使用带有扩展的 OpenGL 有什么缺点?

0 投票
1 回答
465 浏览

opengl - 很高兴,未加载扩展

当我尝试运行 GLSL3.3 着色器时,我的应用程序向我发送了此消息

所以我回过头来为 GLAD 生成器添加了上述扩展:你可以在下面看到我的选择!
http://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3&extensions=GL_ARB_explicit_uniform_location

之后,我将我的glad.c 和glad.h 文件复制粘贴回我的文件并编译……令我惊讶的是,我得到了同样的错误!(不包括 KHR.h 文件)

我究竟做错了什么?

0 投票
1 回答
231 浏览

python - PyOpenGL glReadPixels 在最终 POINTER 创建后导致 ctypes 参数错误

我对 pyopengl 及其导入有一个奇怪的问题,下面是一个从一个更大的测试程序中剪下来的小测试程序,但这足以说明问题。您需要安装 PyOpenGL,如果您按原样运行它,它会显示一个空白窗口,如果您单击并拖动它会打印出一些 0。如果您取消注释下面的行HANDLE.final = True,则它会停止工作,请参阅下面的回溯。

未注释该行时,它会执行以下操作:

在我更大的程序中,当尝试导入 OpenGL.raw.WGL._types(由任何 WGL Opengl 扩展导入但这是仍然导致错误的最小片段时)时,此 HANDLE 代码被深埋 5 或 6 个导入。

我不明白为什么这条线的存在会对看似不相关的 gl 调用产生影响——如何在不破坏 PyOpenGL 其他部分的情况下使用加载这个扩展?