问题标签 [wgl]

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 投票
0 回答
541 浏览

c - wglMakeCurrent 与 hdc 参数 NULL

根据此处注册(khronos 网站):

如果 <hglrc> 的 OpenGL 上下文版本是 3.0 或更高版本,并且如果 wglMakeCurrent 的 <hdc> 参数为 NULL,或者 wglMakeContextCurrentARB 的 <hDrawDC> 和 <hReadDC> 参数都为 NULL,则上下文为当前,但没有定义默认的帧缓冲区。GL 上没有默认帧缓冲区的影响在 OpenGL 3.0 规范的第 4 章中定义。

相信这些信息,我创建了一个“屏幕外”的设备上下文:

我配置了像素并使用以下SetPixelFormat功能添加到 DC:

然后我创建了一个渲染上下文:

到目前为止一切顺利,它有效。现在是时候让上下文成为当前的了。

首先,我删除 DC(我不再需要它)并wglMakeCurrent使用NULL dc参数调用:

那没有用。ret是,我得到这个false错误:

Win32 错误# (6): ERROR_INVALID_HANDLE

0 投票
0 回答
124 浏览

c - 带有 NULL 参数的 wglGetPbufferDCARB 返回设备上下文 (hDC)。但这是哪个hDC?

不小心放了一个NULL参数wglGetPbufferDCARB

它是这样的:

没想到这段代码返回了一个真实的hDC!但我没有找到任何关于它的信息。

有谁知道这hDC是从哪里来的?

0 投票
0 回答
45 浏览

windows - 如何在 Windows 中使用 OpenGL 获得更新/扩展功能?

在我的案例中,我试图调用的特定 OpenGL 函数是:glTexImage2DMultisamplehttps://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexImage2DMultisample.xhtml

我遵循了本教程:https ://bobobobo.wordpress.com/2008/02/11/opengl-in-a-proper-windows-app-no-glut/

我了解制作窗口、获取句柄、在该窗口中绘图等。过去我在使用 GLEW/GLFW/GLUT 等进行这些函数调用时没有遇到问题。但我想移除这些拐杖。

本教程中特定于 OpenGL 的函数可从 Windows 10 开发工具包中看到。我认为,该套件比所需功能的实现要新得多,应该存在。

0 投票
2 回答
851 浏览

opengl - 是否应该使用 wglMakeCurrent(0,0) 释放 GL 上下文?

在使用后释放 GL 上下文是否有意义wglMakeCurrent(0,0)

使用后释放而不是在上下文处于当前状态时切换到另一个上下文是否有任何性能优势?

0 投票
1 回答
603 浏览

multithreading - OpenTK 多线程:如何“取消绑定”GraphicsContext

我正在使用 OpenTK 3 和 WinForms 开发多线程 OpenGL 应用程序。我有 2 个共享的 GraphicsContexts:

  • 一个“主”渲染上下文,用于场景绘制和同步加载操作。
  • “辅助”资源加载器上下文,用于在绘制期间加载资源。

此辅助上下文用于加载来自 Windows Media Foundation 会话(使用自定义媒体接收器)的视频帧。但是,我无法控制此媒体接收器在哪个线程上运行,因此我需要一种方法,在每次加载操作后,“取消绑定”辅助 GraphicsContext,以便它可以绑定到下一个需要它的线程中.

我是否必须 P/Invoke wglMakeCurrent(NULL, NULL) 或者是否有适当的 OpenTK 方法来执行此操作?

0 投票
2 回答
3403 浏览

c++ - Regular window screen capture using openGL

I'm trying to my desktop image capture. (All images, including the desktop output to the monitor)

It's easy using window API (BitBlt or CImageClass) and it's not the way I want.

I want do it using opengl. so I found glReadPixel funtion and window TRANSPARENT.

But it just read pixel own Windows application screen.(Save as bmp file and check)

Initialize()

Roop

Q1. Is it possible desktop capture(Full Image GPU output) with OPENGL?

Q2. If Q1 is possible, Should I use FBO and PBO GL_BACK??

Q3. How to access to mother window or GPU adapter? >> GL seems to strongly reject this.(I don't want any rendering, just read pixel data from GPU(Desktop image. not rendered by my application.)(If it is possible ...))

Anybody shows to me about link or idea?

0 投票
1 回答
123 浏览

c++ - openGL PBO 使用 wglcontext,不创建窗口

我的目标是从主窗口获取像素数据。没有任何渲染。就像我们看到的屏幕截图之类的监视器。

我试图透明窗口,glReadPixel。所以我有一个透明的窗口和上下文。

但我想从 GPU 获取像素数据而不创建窗口。

所以我使用 wglcreatecontext 获取母窗口 DC,HGLRC。

当我设置绑定缓冲区时,它会给出运行时错误。

我该如何解决问题?

任何想法或链接?

0 投票
0 回答
37 浏览

opengl - 存根 glOrthof 以使用 glOrtho

我正在编写同时针对嵌入式 VxWorks 653 系统和 Windows 的图形代码(VxWorks 是我们提供的主要目标,Windows 是我们要测试的桌面环境)。

我们的VxWorks 653图形驱动使用glOrthof,没有glOrtho,所以我们的图形渲染代码使用glOrthof。为了在 Windows 上保持一致性,我在设置期间执行了此操作:

获取我们的 NVidia 驱动程序支持的 glOrthof 的 OpenGL 扩展功能。

这适用于 NVidia 驱动程序,但我们的一些开发人员仍坚持使用英特尔驱动程序。对于他们,我尝试了这个:

当我们的图形渲染循环调用 glOrthof 时,这个存根被命中,我可以看到(通过函数断点)glOrtho 在 opengl32.dll 中被调用,并且我传入的参数匹配。但是,我的显示器完全是白色的,我得到了值 1281 (GL_INVALID_VLAUE) 作为来自 glGetError() 的返回码。

我解决这个问题的解决方案是简单地

在我的 Windows 目标上,但我想知道为什么这个存根失败了?

0 投票
1 回答
1177 浏览

windows - wglMakeCurrent 的正确用法?

wglMakeCurrent 应该只调用一次还是需要在每次缓冲区交换之前调用?除了通过 wglMakeCurrent 设置它之外,当前的 opengl 上下文是否可以被一些外部事物重置?

我在这里只是为了缩小可能的问题。我不能在这里发布相关代码,因为我不知道哪个部分是相关的。

目前我有循环执行 makeCurrent -> clear -> render。它正确呈现。我尝试在初始化时将上下文设为当前,而不是在每次绘制时都将其设为当前,但它呈现为空屏幕。只有当我退出窗口时,正确的渲染才会闪烁一帧。我认为使用 nvidia 的图形调试器有问题。调试器的覆盖奇怪地闪烁。其他应用程序不会这样做。

0 投票
1 回答
273 浏览

c - opengl win32不绘制到屏幕

我正在尝试使用glClearBufferfv(GL_COLOR, 0, red)绘制红色屏幕。

程序显示白色屏幕,光标上的加载图标不断旋转。

我正在使用 glew。我也在使用 Visual Studio,我想我已经链接到所有必要的库。我使用整个创建一个临时上下文来使用 wglCreateContextAttribsARB 扩展的东西。

我有 2 个设置功能。第一个创建窗口并设置 pfd:(编辑器没有正确格式化我的代码,所以我将省略函数名称)

第二个创建上下文并启动消息循环:

这是我的 wndproc:

这是我的显示功能:

red 是一个全局变量,定义为:

关于为什么它没有绘制到屏幕上的任何帮助?