我正在Windows上使用C++的第3方程序中实现插件。第3方程序有一个使用OpenGL显示3D图形的窗口。但是我需要插件来创建另一个窗口,该窗口也使用OpenGL显示3D图形。我是否需要为我的窗口创建一个新的OpenGL渲染上下文,或者有什么方法可以“重用”第3方程序使用的OpenGL渲染上下文?我假设我必须创建一个新的OpenGL渲染上下文并尝试了以下操作://createarenderingcontexthglrc=wglCreateContext(hdc);//makeitthecallingthread'scurrentrenderingcontextwglMakeCurre
有时在我的OpenGL应用程序中,我会在以下API调用中遇到访问冲突:wglMakeCurrent(NULL,NULL);应用程序只有一个线程,我在那个调用之前检查过,当前使用的DC和HGLRC都是正确有效的。有OpenGL内容的三个不同窗口,如果由于用户交互(例如,拾取对象)而需要刷新,它们都会根据WM_PAINT消息重绘。此外,这种访问冲突发生在具有不同显卡的不同机器上,所以我认为这不是驱动程序问题。什么会导致此API调用崩溃?我应该在应用程序代码中调查什么以找出发生这种情况的位置/原因?我真的迷路了,因为我已经检查了我能想到的一切。我希望有人可以给我一些提示/想法,告诉我还需要检
操作系统:Windows7,64位VisualStudio2010,调试,32位我正在尝试一个简单的Windows程序来开始使用openGL:所有程序应该做的就是用glClear(GL_COLOR_BUFFER_BIT)清除颜色缓冲区。在我在网上找到的教程中,我发现人们在创建窗口期间(因此在处理WM_CREATE消息期间)创建和设置openGL上下文。不知何故,我发现这对我的代码不起作用,而且我似乎无法弄清楚。所以,如果有人能指出我正确的方向。请在下文中找到我期望它如何根据教程工作的代码:#include#include#include#include"Application.h"HW
PIXELFORMATDESCRIPTORpfd={/*otherwisefineforawindowwith32-bitcolor*/};HDChDC=CreateDC(TEXT("Display"),NULL,NULL,NULL);//alwaysOKintipf=ChoosePixelFormat(hDC,&pfd);//alwaysOKSetPixelFormat(hDC,ipf,&pfd);//alwaysOKHGLRChRC=wglCreateContext(hDC);//alwaysOKwglMakeCurrent(hDC,hRC);//!readerror:0xbaad
这有点重复thisquestion.我正在尝试制作一个无窗口控制台应用程序来检查支持的OpenGL版本。为此,我需要设置渲染上下文——但不创建窗口。我正在尝试使用我不会写入的桌面句柄。我忘记在前面的示例中设置像素格式-这可能是创建渲染上下文失败的原因-但是即使设置了像素格式,我也无法激活它。wglMakeCurrent(hDC,hRC)只返回0。这是完整的源代码转储:#include#include#includeHDChDC=NULL;HGLRChRC=NULL;HWNDhWnd=NULL;HINSTANCEhInstance;intres=0;intpf=0;PIXELFORMAT