问题标签 [openglcontext]
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 - OSG 将场景渲染成图像
我试图在我的 Qt 程序中将 OSG 场景渲染为图像。参考 SnapImageDrawCallback 的例子(https://www.mail-archive.com/osg-users@lists.openscenegraph.org/msg45360.html)。
我将此设置为 osg::Viewer 的相机的 FinalDrawCallback,但我因空白图像而失败,并在调用图像时收到此警告“警告:在 State::apply() 开始时检测到 OpenGL 错误'无效操作'”-> readPixels,我的 osgViewer::Viewer 嵌入在 QQuickFramebufferObject 中。任何人都可以提供一些建议吗?
android - 显示插页式广告时处理和重新加载纹理?
我的问题是 - 当我展示插页式广告时,我真的需要处理和重新加载我的纹理吗?
情况是 - 当我在我的游戏中显示插页式广告(例如来自 Admob)时,我的暂停和恢复方法被调用(广告在我的应用程序中显示为一个新的 Android 活动,最终关闭)。相应地,我处理并重新加载我的纹理。每次展示广告时,这似乎是一种矫枉过正的做法。有没有办法确保我的 GL 上下文不丢失?
如果我没有离开我的应用程序,它是否真的丢失了,或者这只是一种保险,以防广告活动在例如广告被点击时真正暂停我的应用程序?还是插页式广告实际上是在新流程中展示的?...
python - 从 OpenGLContext 导入 testingcontext 我无法导入 testingcontext
当我这样做时:
它的导入,没有问题。但是当我写
它给出了一个错误:
怎么了?
c++ - 只为不同的 QT 小部件获取一个 QOpenGLContext
我有以下问题:
我想获得一个由许多视图组成的应用程序,这些视图从不同的角度、照明和其他选项渲染一个常见的 OpenGL 场景。
基本上,我的问题是用 qt 做到这一点的最佳方法是什么?
我的第一次尝试是创建多个 QOpenGLWidget 并获得一个常见的 QOpenGLContext ,我在其中存储纹理以及网格和着色器。但它不适用于网格,因为顶点数组对象似乎不可共享。经过多次尝试,一个可能的解决方案是为每个需要网格的小部件存储一个 VAO,但这看起来真的很糟糕。
所以,我想知道这种问题是否有一个很好的替代方案,或者可能有一个很好的文档来理解这些 QOpenGLContext 是如何工作的。
我想象的最简单的想法是只创建一个 QOpenGLContext 并在不同的小部件中使用它。但我不知道如何单独创建一个 QOpenGLContext 也不知道什么样的 QWidgets 能够显示这些渲染。
这是我的第一篇文章,所以我不知道它是否足够清楚,或者我是否需要描述我的整个架构。
c++ - 如何在 Qt5 中使 QOpenGLContext 当前没有表面?
我正在开发一个项目,该项目将使用 OpenCL 渲染图形以在QOpenGLWidget
. 执行此操作的推荐方法似乎是QOpenGLContext
在 . 中已经存在的那个旁边创建第二个QOpenGLWidget
,然后创建一个线程,这个辅助上下文可以与 OpenCL 代码一起存在。
这样,Qt 就可以像往常一样在主线程中运行事件循环。并且无论何时QOpenGLWidget
决定绘制它都会简单地从第二个线程中由辅助上下文和在那里设置的 OpenCL 互操作准备的缓冲区中获取数据。
这一切在纸上听起来都很棒,但我在让它发挥作用时遇到了一些问题。我的问题是关于如何使QOpenGLContext
线程中的辅助“当前”。因为QOpenGLContext::makeCurrent()
需要强制QSurface
作为参数,而我拥有的唯一表面是 my 可用的表面QOpenGLWidget
,但在辅助线程中使用它不起作用。我收到以下错误:
不能在不同的线程中使 QOpenGLContext 当前
那么我应该使用什么表面呢?或者,有什么我错过的,或者应该做不同的事情吗?
opengl - glClearColor 引发异常 TOpenGLComponent Lazarus
我使用 Lazarus(在 Linux 下)请任何人帮助我。我有问题。我已经安装了 LasOpenGLContext。组件面板上有“OpenGL Controll”。我想画一个简单的立方体。但我做不到。我明白raised an exception class 'External:SIGSEGV'
怎么了?请,如果有任何想法。
android - 检查 gl 上下文是否被破坏
有没有办法检测用户按下home
按钮时是否释放了opengl上下文?目前我总是在方法中重新创建整个glSurface onResume
。还有setPreserveEGLContextOnPause
可能使上下文保持活动状态。我想用它来不每次都重新创建glSurface。问题是如何检测我是否需要重新创建它?
c - 如何使用单个 OpenGL 上下文渲染到多个窗口?
我使用 GLFW 创建了两个窗口。第一个窗口有 OpenGL 上下文,而第二个窗口没有。我想要做的是使用单个 OpenGL 上下文将相同的场景渲染到两个窗口。像这样的东西。
问题是我不知道如何告诉 OpenGL 在特定窗口上绘图。而且我也不知道如何为特定窗口交换缓冲区。如果有必要,我可以使用 Win32 API。
c++ - 上下文共享在glfw3和glew的opengl中不起作用,像上下文一样的第二个窗口根本不共享
因此,我试图在 c++ 中使用 glfw、glew 和 opengl 从 glfw 复制这个上下文共享示例:https ://github.com/glfw/glfw/blob/master/examples/sharing.c 。
除了在每个窗口的上下文中独立设置的背景颜色外,第二个窗口不显示任何内容,所有 vao 和 vbo 以及着色器程序也独立地绑定在每个上下文中,但主要资源仅在第一个窗口中生成和填充上下文(所有 vbo、vao 和着色器程序),该程序应该在第一个窗口中在白色背景上显示一个红色三角形,在第二个窗口上在黑色背景上显示一个红色三角形,但如第二个之前所述即使在第一个窗口的上下文中绘制它之前绑定了所有绘制它的资源,窗口也没有显示三角形,代码非常大并且包含一些不必要的信息,所以我做了一个伪代码表示:
如果你想要完整的源代码,这里是主源文件的链接:https ://gitlab.com/Error1000/MWH/blob/master/src/OpenGLTest.cpp 。
PS对不起,如果代码不好我还在学习一点,也对不起我的英语,它不是我的母语并且有这么大的例子,如果你发现伪代码有任何问题,也请检查源并确保这是代码问题,而不是我的伪代码表示。
opengl - 带有 OpenTK 的多个 IGraphicsContext / 在单个窗口中使用多个 OpenGL 上下文
我想做的事:
主要目标:一起使用 SkiaSharp 和 OpenTK。渲染 2D 和 3D。
问题是什么:SkiaSharp 弄乱了 OpenGL 的状态,所以我不能在不保存和恢复某些状态的情况下将其用于 3D。
旧解决方案(OpenGL < 4):我使用 GL.PushClientAttrib(ClientAttribMask.ClientAllAttribBits); + 一些附加值(保存/恢复它们)。
现在我读到这不是最好的解决方案,OpenGL 4 不再有 GL.PushClientAttrib。通常的方法似乎是您应该使用单独的 OpenGL 上下文。
已经看过了:OpenTK multiple GLControl with a single Context
我没有使用 GLControl,因为我没有使用 WinForms。所以这不是很有帮助。我尝试了什么:
顶点着色器:
片段着色器:
在单个上下文中工作正常,当我使用两个上下文时会发生什么:第一个上下文被渲染但闪烁。根本看不到第二个三角形(据我了解 GL.Viewport 它应该在屏幕的左下角可见)。
您可以通过回答以下一个或多个问题来帮助我:
- 是否有另一种方法可以恢复原始上下文
- 是否有另一种方法可以在屏幕的一部分上使用硬件加速进行渲染,理想情况下为特定区域指定 OpenGL 状态
- 我怎样才能得到上面的解决方案以我想要的方式工作(没有闪烁,但在窗口的较小部分内有一个较小的屏幕)