草庐IT

windows - SFML 窗口调整事件阻塞主线程

我刚开始使用SFML图书馆和它太棒了。但是,当通过用鼠标拖动角来调整窗口大小时,在释放鼠标之前我不会得到调整大小事件。这意味着在释放鼠标之前我无法更新我的图形(游戏循环在gui线程上)并且还会导致大量事件通过所有调整大小的位置。我怎样才能使调整大小不阻塞线程? 最佳答案 Windows导致此问题。如果您移动窗口或调整窗口大小,GetEvent()将变得阻塞。(讨厌这个操作系统的另一个有趣的小理由......)我已经用单独的事件轮询线程解决了这个问题。看看这个:(您感兴趣的部分完全在main.cpp中。)https://bitbuck

c++ - 创建一个创建全屏覆盖的程序

我想编写一个程序来创建一个透明覆盖层来填充Windows7中的整个屏幕,最好使用C++和OpenGL。不过,如果有一个用另一种语言编写的API可以让这一切变得super简单,我也非常愿意使用它。一般来说,我假设我必须能够以某种方式读取屏幕上已有的像素。使用屏幕捕获软件使用的相同方法从屏幕获取像素然后重新绘制它们最初是可行的,但如果屏幕更新就会出现问题。然后我的程序必须最小化/关闭并重新出现,以便我能够读取底层像素。 最佳答案 WindowsVista在PIXELFORMATDESCRIPTOR中引入了一个新标志:PFD_SUPPOR

windows - wglSwapIntervalEXT 在哪个库中?

我知道我需要调用wglGetProcAddress来获取扩展wglSwapIntervalEXT的地址。假设对wglGetProcAddress的调用成功,wglSwapIntervalEXT是否位于opengl32.lib中? 最佳答案 wglSwapIntervalEXTlocatedinopengl32.lib?没有。opengl32.dll基本上是GPU驱动程序提供的实际OpenGL实现的跳板,所谓的ICD(独立客户端驱动程序)。它还包含一个软件光栅器,但这只是一个后备。opengl32.lib只是DLL的目录。

c++ - GL上下文销毁

我成功创建了GL渲染上下文(我检查了所有WinApi函数的返回值)。当我尝试使用以下代码破坏上下文时失败了:boolsuccess=::wglMakeCurrent(0,0);//falsesuccess=::wglDeleteContext(glRenderingContext_);//false上述所有内容都发生在一个线程中。怎么了? 最佳答案 在进行此调用之前,您是否销毁了保存设备和呈现上下文的窗口?在销毁窗口之前,您应该关闭渲染上下文。 关于c++-GL上下文销毁,我们在Stac

c++ - 如何将状态栏定位在 OPENGL 之上?

我目前遇到的问题是OpenGL与我的状态栏重叠,而窗口的菜单没有改变。任何想法如何解决这个问题?使状态栏像菜单一样位于顶部。我在主窗口(自定义WNDCLASS)和启用了WS_CHILD的状态栏(STATUSCLASSNAME)中使用CreateWindowEx。也许我遗漏了一些标志。附言。我不使用GLUT,也不使用任何其他第三方库,只使用Windows和OpenGL 最佳答案 您只需将WS_CLIPCHILDREN和WS_CLIPSIBLINGS样式添加到您的OpenGL窗口。 关于c+

c++ - 如何使用 OpenGL 在 Windows 上的同一个应用程序中绘制两个单独的 3D 窗口?

我正在Windows上使用C++的第3方程序中实现插件。第3方程序有一个使用OpenGL显示3D图形的窗口。但是我需要插件来创建另一个窗口,该窗口也使用OpenGL显示3D图形。我是否需要为我的窗口创建一个新的OpenGL渲染上下文,或者有什么方法可以“重用”第3方程序使用的OpenGL渲染上下文?我假设我必须创建一个新的OpenGL渲染上下文并尝试了以下操作://createarenderingcontexthglrc=wglCreateContext(hdc);//makeitthecallingthread'scurrentrenderingcontextwglMakeCurre

ios - 使用 GL_POINTS 时 gl_Position 是否设置矩形的中心?

我正在开发可在多个平台上运行的C#/OpenGL代码库:通过MonoTouch的iOS/OpenGLES2.0、通过OpenTK的Windows/OpenGL以及其他平台。当从四边形切换到GL_POINTS渲染时,我注意到我正在绘制的矩形在iOS上渲染时带有偏移量。似乎在Windows上,gl_Position定义了要绘制的矩形的中心。这是我期望的行为。在iOS/OpenGLES2.0/MonoTouch上,gl_Position似乎设置了矩形的左上角。我花了几个小时试图找出造成这种情况的原因,因为,当然,我认为这是由我的代码中的错误引起的。但在我浪费更多时间之前:使用GL_POINT

windows - 无法加载 OpenGL 进程,只能从 Haskell 加载

我在将一些C++代码转换为Windows上的Haskell后遇到了问题。C++中的代码工作正常,但在Haskell中,任何OpenGL函数都无法加载,即usererror(unknownOpenGLextensionentryglGenVertexArrays,checkforOpenGL3.1)而该函数在C++中运行良好(我使用的是glLoadGen)。我已将两者都加载到depends.exe中,但没有发现它们与OpenGL32.dll的使用有任何区别。我正在使用OpenGLRaw-1.3.0.0。 最佳答案 这是由于在调用Gra

windows - wglShareLists 是可传递的吗?我是否必须与其他人共享每个上下文?

例如,如果我将渲染上下文“A”与渲染上下文“B”共享,然后将渲染上下文“C”与“A”共享,那么“C”是否会与“B”共享? 最佳答案 是的,wglShareLists是可传递的。 关于windows-wglShareLists是可传递的吗?我是否必须与其他人共享每个上下文?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22090650/

windows - 无法使用 MinGW 编译 GLUT helloworld

我想设置OpenGL库并运行一个简单的GL程序:#include#includeintmain(){glClearColor(0.0,0.0,0.0,0.0);glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0,1.0,1.0);glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);glBegin(GL_POLYGON);glVertex3f(0.25,0.25,0.0);glVertex3f(0.75,0.25,0.0);glVertex3f(0.75,0.75,0.0);glVertex3f(0.25,0.75,0.0);glEnd(