问题标签 [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.

0 投票
1 回答
4717 浏览

windows - OpenGL 上下文和设备上下文如何工作?

我是 U/I 编程的新手,我正在尝试开始使用 OpenGL。当我运行一个使用 GLUT 创建新 OpenGL 窗口的示例程序时,它运行良好。好的。但是,在另一个程序的上下文中,我必须响应 Draw 事件(在 Windows 上),并将设备上下文传递给我——而且我可能没有可用的 GLUT——我的困惑是:

  1. 何时创建和销毁设备上下文?我可以绘制给我的任何设备上下文,还是只绘制其中的一些(我怎么知道)?

  2. 我是否必须创建自己的 OpenGL 上下文并使用它来绘制,或者我可以使用“当前”OpenGL 上下文?每次发送绘图事件时,我是否必须重新创建上下文?

基本上我的问题是,在我收到“Draw”事件的情况下,我多久尝试一次创建 OpenGL 上下文以及这与设备上下文的创建/销毁周期有何关系?

0 投票
1 回答
492 浏览

windows - 是否可以在已经使用 GDI+ 的窗口中使用 OpenGL?

基本上,我被要求渲染到一个屏幕外 DC,该 DC 设置(我不确定如何)使用 GDI+。当我尝试将 OpenGL 上下文与 DC 相关联时,它只是失败了(即返回零但没有错误)。SetPixelFormat 也失败了(可能是因为它已经设置好了?),再次返回零,而不是错误。

任何人都知道,在这种情况下(即其他人使用 GDI+ 的窗口的屏幕外上下文)是否有可能创建 OpenGL 上下文并使用 OpenGL 进行我自己的渲染?(如果可能,为什么 wglCreateContext 会失败?)

0 投票
1 回答
518 浏览

python - 在 Python 中创建向前兼容的 OpenGL 3.x 上下文

我正在使用 wxPython,并且我想使用基于 OpenGL 的画布,但我不希望上下文支持已弃用的功能。我已经在 Eclipse 中浏览了 pyopengl 和 pyglet,但它们看起来并不支持这一点。我这样说是因为我找不到用于将属性分配给上下文的 WGL 函数,如AMD 的这篇白皮书中所述。在为上下文指定配置时,pylget 的文档中也没有提及兼容性状态参数。我忽略了什么吗?是否有“Python”解决方案,或者我需要开始研究 ctypes 之类的东西吗?

编辑:阅读更多文档后,看起来OpenGLpyopengl 模块有一个标志,称为FORWARD_COMPATIBLE_ONLY,它将过滤不推荐使用的入口点OpenGL.GL,但仅限于此模块。pyopengl 网站上的OpenGL 3.x Deprecations部分甚至也提到了这一点,我以前没有注意到。如果这意味着也将防止 GLSL 弃用,那么这看起来是一个解决方案。

0 投票
1 回答
343 浏览

opengl - OpenGL 查看器控制和渲染上下文

我已经构建了一个 OpenGL 查看器控件,它可以简单地拖放到 Windows 窗体上(在设计时)并分配一个 OpenGL 显示列表(在运行时)。

查看器控件处理导航、显示选项(例如背景颜色)等。它还负责根据需要创建和销毁渲染和设备上下文。

显然,每个查看器控件实例都有自己的设备上下文,即绘制图像的“窗口”。

问题:

  • 每个查看器控件实例应该如何管理渲染上下文?
  • 每个实例应该有它自己的上下文还是共享一个全局渲染上下文?

我特别关心这会如何影响 WGL 字体创建(wglUseFontBitmaps 和 wglUseFontOutlines),这需要渲染上下文(无论当前上下文是什么)和设备上下文。

  • 我是否需要为每个渲染/设备上下文组合创建每个 WGL 字体?

也许我的方法有缺陷。

0 投票
1 回答
387 浏览

iphone - EAGLContext 不适用于 openGLES 1 iphone 操作系统

我有一个基于 Apple 的 EAGLView 示例的 3D 项目。

我的上下文有一个非常奇怪的错误(我认为),我的上下文是通过使用创建的:

[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];

在初始化 3D 视图时,它可以工作,在布局子视图中,我的 frameBuffer 被再次破坏创建。但在某些情况下,不会创建帧缓冲区。我用调试器搜索我发现问题来自上下文“创建”:

我不明白为什么它工作或不工作。当我有这个错误时,我转动我的 iPhone 强制执行 layoutSubview,它的工作。这很奇怪。

第二次没有创建上下文的原因是什么,然后就可以了。

0 投票
1 回答
6815 浏览

windows - 是否可以在上下文/线程之间共享 opengl 帧缓冲区对象?

我想在一个线程中渲染我的场景,然后在另一个线程拥有的窗口中对结果进行 blit。为了避免将帧缓冲区读回 CPU 内存,我想使用一个帧缓冲区对象。到目前为止,我还不能让它工作(白色纹理),这让我相信这不受 opengl 支持。

  1. 是否可以在不同的上下文之间共享帧缓冲区对象?
  2. 考虑到对象一次只被一个线程绑定,是否可以在不同线程之间共享一个帧缓冲区对象?

如果有人可以指出我在文档中描述的位置,那将是一个奖励。

0 投票
2 回答
328 浏览

opengl - 我在哪里可以调用 gluUnproject?

这是一个非常简单的问题。

我在哪里可以调用 gluUnproject?我需要某种当前的 openGL 上下文吗?

我在这里查找了函数,但这并不能告诉我是否有任何先决条件。

我想做这个:

在我的服务器节点上,而不必将其传递给我的渲染节点,并让它们返回结果。服务器没有 openGL 上下文。我还能打电话给 gluUnproject 吗?

0 投票
2 回答
1169 浏览

c++ - 使用 ubuntu 在不同的显示器上共享 opengl 上下文

我们有一个使用 3 个图形卡在不同屏幕上具有多个窗口的应用程序。每个窗口都使用 opengl 来渲染字体、图像等......到目前为止,这工作得很好,除了共享资源。我们试图实现这样的东西(fenster 是一个自定义类来存储上下文等信息......):

这编译得很好,但在运行时会产生以下错误:

当我尝试在同一个桌面上创建多个窗口(使用显示:0.0)时,该代码有效。

该系统是 ubuntu 10.10,使用专有的 ATI 驱动程序。

有任何想法吗?甚至可能吗?

0 投票
1 回答
197 浏览

cocoa - 用于非绘图目的的 NSOpenGLContext

如何NSOpenGLContext在 Cocoa 中创建一个独立于系统的系统,不是用于绘图,而是用于检索供应商、版本等 OpenGL 信息????

0 投票
1 回答
1449 浏览

android - 为什么我的 OpenGL 上下文仍然返回 null?

我正在尝试在 android 的 opengl-es 中创建一个上下文,我对此有点困惑。我已经在一个完全独立于我的渲染器和我的启动活动的类中初始化了我的上下文,就像这样。

我的应用程序很简单,它在启动时在屏幕上绘制两个正方形,一个随机方向移动,而另一个保持原地并旋转。理论上用户应该能够触摸屏幕并且静止的方块应该移动到屏幕上触摸的位置。但是当我的 UnProject 方法(我需要翻译坐标)被调用时,我的应用程序崩溃了,可能是因为我的上下文

(这是我的 UnProject 类的参数)返回 null(当我的应用程序崩溃时抛出 NullPointerException)。

我的上下文是否初始化不当,以至于它返回 null 或者您认为问题出在其他地方?