问题标签 [google-angle]
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.
qt - 根据 CodeXL,我没有成功禁用 Qt 中的 ANGLE 层
我已经非常小心地禁用了我的 Qt 应用程序中的 ANGLE 层,但显然它没有发生。当我在 CodeXL 调试器中运行应用程序时,事件日志包含如下行:
加载的 DLL:C:\Windows\SysWOW64\d3d11.dll
所以它正在加载 Direct3D,我认为这在 Qt 中只能通过 ANGLE 发生。在 CodeXL 中点击“Break”按钮也无济于事,这对我来说意味着没有发生真正的 OpenGL 调用,它们仅被转换为 D3D。
事件日志还说:
调试字符串:加载 opengl32.dll 失败(找不到指定的模块。)
为什么会发生这种情况,我该如何解决?
我想禁用 ANGLE 的原因是因为否则我无法使用 CodeXL 进行调试(它不支持 D3D 调试)。
我的系统:
- 视窗 10
- 第一个 GPU:Intel HD Graphics 5500
- 第二个 GPU:AMD Radeon R5 M330(我认为这是我的应用程序使用的)
我的代码:
主.cpp:
main.qml:
Z:/disable_angle.txt :
qt - DEPTH_COMPONENT 上的 glReadPixels 抛出 GL_INVALID_OPERATION
我在读取屏幕外帧缓冲区渲染通道的深度缓冲区时遇到问题。使用 OpenGL 4.5 时,它按预期工作,但在 OpenGL ES 2.0(角度)上,我的glReadPixels(0, 0, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, depthBuffer)
通话出错。错误是 0x502,这是一个 GL_INVALID_OPERATION 错误代码。
一些更多的背景。我在一个 Qt 环境中工作,它有一个主要的渲染例程,现在我正在做一些离屏渲染。通常我们使用 opengl 桌面实现,但是在某些机器上,我们遇到了一些糟糕的 opengl 版本的问题。因此,我目前正在努力使整个设置更加健壮。我做的一件事是改用角度。所以我只是想让角度工作,这应该对应于使用 OpenGL ES 2.0。
那么这里的帧缓冲区创建:
帧缓冲区是完整的并且没有抛出错误。上一段和下一段之间的代码也不会引发任何错误。
通常我使用GL_DEPTH_COMPONENT24
,由于某种原因它不起作用。所以我GL_DEPTH_COMPONENT16
改用了。也许这暗示了什么是错的。仅供参考,主帧缓冲区使用 24 位深度和 8 位模板。(我也尝试使用该GL_DEPTH24_STENCIL8
格式,但 glReadPixels 调用没有成功)。
使用纹理代替或 pbuffer 不起作用,因为此解决方法 ( glGetTexImage(...)
, glMapBuffer(...)
) 所需的功能未在我坚持使用的 GL 版本中实现。
c++ - 如何使用 C++/WinRT 和 ANGLE 创建 EGLSurface?
我正在使用ANGLE 项目的 Microsoft 分支来访问通用 Windows 应用程序中的 OpenGL。此外,我尽可能多地使用C++/WinRT 绑定来编写标准 C++ 代码。
我从 ANGLE 项目中的一个示例开始,并尝试将 C++/CX 代码转换为 C++/WinRT 代码,但我找不到创建 EGL Surface 部分的解决方案:
在 C++/CX 中,他们使用以下代码,但我必须承认,我不知道他们如何从带有 CoreWindow 的 PropertySet 到 EGLNativeWindowType(在本例中为 HWND)以及如何将其转换为 C++/WinRT 代码:
编辑:当天真地将代码转换为 C++/WinRT 约定时,reinterpret_cast 会给出“无效转换”错误(从 IInspectable 到 EGLNativeWindowType)。
编辑:为了完整起见,window
参数是 Windows::UI::Core::CoreWindow。
编辑:实际上这个类似问题的答案提供了很多很好的信息,我会进一步调查。
编辑:在阅读了上一个编辑中链接的答案并查看了 ANGLE 源代码中的正确位置后,我发现我的困惑是由 ANGLE 的 Windows 端特定的实现细节引起的。该函数不期望传统意义上的 HWND 句柄,而更像是伪装成 HWND 的设置字典。此外,reinterpret_cast 错误是由于我试图将对象强制转换为指针,我很傻。
c++ - 在 Windows 上使用 ANGLE 和 GLFW 设置 C++ 项目
我正在尝试使用 ANGLE 在 Windows 上设置一个基本的 OpenGL ES 2.0 应用程序。我已经通过 vcpkg 和 ANGLE 安装了 GLFW(通过使用#7923和#8785修补 vcpkg或在本地构建)并且可以构建应用程序。我在输出目录中也有 d3dcompiler_47.dll。不幸的是,在运行时看起来没有一个 OpenGL ES 调用成功。
我正在初始化 GLFW,如下所示:
在调用之后,glfwMakeContextCurrent
我希望 OpenGL ES 上下文可用。然而:
- 调用
glGetString(GL_VERSION)
,glGetString(GL_RENDERER)
并且glGetString(GL_VENDOR)
都返回一个空指针。 - 调用
glCreateShader(GL_VERTEX_SHADER)
返回 0(即失败),但glGetError()
返回GL_NO_ERROR
.
相同的代码在同一台机器上的 Linux 上正常工作,所以我假设我需要做一些其他事情才能让事情在 Windows 上工作。
我的搜索几乎没有提供这样做的有用信息(但它确实建议进行glGetString
检查)。我认为我所缺少的已经足够明显了,没有人会费心把它放在解释中,所以当我知道出了什么问题时,我会觉得很傻。
对于我在这里缺少的东西有什么建议吗?
macos - 如何在 MacOS 上通过 ANGLE 使用集成显卡?
如何在 MacOS 上通过 ANGLE 使用集成显卡?
我有一个使用https://chromium.googlesource.com/angle/angle (ANGLE)渲染的程序,可以在 MacOS 上运行,我想知道如何使用集成显卡而不是独立显卡,我有已经尝试将 NSSupportsAutomaticGraphicsSwitching 设置为 true,但它让我的视图消失了,并且仍然以某种方式使用显卡。
是否有某种方法可以强制它使用集成 GPU(如果可用),因为我认为使用显卡对我的应用程序来说太过分了?
winapi - 在 Windows 上支持 32 位的 Google ANGLE 的最新版本
我正在使用谷歌的 ANGLE,所以我可以在 Windows 上正确使用 OpenGL ES。我真的希望它可以在 32 位版本的 Windows 上运行,这样我就可以支持尽可能多的 PC。尽我所能,我无法说服当前版本的 ANGLE 去做。因此,我的印象是,当谷歌对 Chromium 做了同样的事情时,他们停止了对 32 位 Windows 的支持。
我确实知道旧版本的 ANGLE 可以很好地将 ES3.1 转换为 D3D。我想找到适用于 32 位的最新版本。有谁知道它是什么版本以及在哪里可以找到它?
或者,如果有人知道如何说服当前版本的 ANGLE 实际编译 32 位库,那就更好了。我自己对此并不走运。