草庐IT

windows - 如何将我的 OpenGL 应用程序置于全屏模式?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭2年前。Improvethisquestion我是OpenGL的新手,但我编写了一个在窗口中运行良好的小应用程序。现在我想全屏运行它。有this来自常见问题解答,但它似乎需要GLUT,它不是开源的。将OpenGL应用程序置于全屏模式的好方法是什么?目前在WindowsXP上,但我会移植到其他平台。

c++ - Qt OpenGL-如何根据鼠标点击获取对象

我正在尝试在Qt-openGL中创建一个应用程序。在这里,我必须根据鼠标点击知道被点击的对象。我的想法是存储点(对象在QWidget中的区域),并将鼠标点击与这些点相匹配。任何人都可以说出如何做到这一点吗?或者任何人都可以展示任何其他方式吗? 最佳答案 这个问题通常被称为“挑选”。OpenGL本身只是绘制东西,没有几何对象管理可言(OpenGL有对象,但它们就是您通常所说的资源)。目前实现OpenGL拾取的常用方法是在点击位置检索深度值(glReadPixels(x,y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT

c++ - 在没有窗口的windows桌面上绘制OpenGL

我见过这样的事情,我想知道这是否可能,比如说我运行我的应用程序它会在它下面的任何地方显示渲染。基本上,在没有窗口的情况下在屏幕上呈现。可能还是谎言?注意:要在Windows和C++中执行此操作。 最佳答案 可以使用您的应用程序在其他应用程序的窗口上绘图。一旦你找到了你想要的窗口,你就拥有了它的HWND,然后你就可以像使用你自己的窗口一样使用它来进行绘图。但由于该窗口不知道您已完成此操作,因此当它尝试重绘自己时,它可能会弄乱您在其上绘制的任何内容。有一些非常复杂的方法可以解决这个问题,其中一些涉及使用窗口“Hook”来拦截发送到该窗口

c - 从 OpenGL C 程序制作视频

我有一个运行科学模拟并在OpenGL窗口中显示可视化的C程序。我想把这个可视化制作成视频,最终会在YouTube上播放。问题:从C/OpenGL程序制作视频的最佳方法是什么?我以前的做法是使用截屏程序,但是这很费力(必须启动/停止截屏程序,保存视频文件等...)。似乎应该有一种方法可以使从C程序中制作视频的过程自动化。然后我可以让它运行一整夜,早上有20个视频要浏览,然后选择最好的一个放到YouTube上。YouTuberecommend“640x480分辨率的MPEG4(Divx、Xvid)格式”。我正在使用GLUT3.7.6_3,如果有区别的话。如果有充分的理由,我可以更改窗口系统

windows - OpenGL - 直接渲染为位图

我正在制作一个应用程序,其中有一堆小窗口和控件(2D渲染),我想将每个窗口和控件渲染到它自己的位图。到目前为止,这是:usesdglOpenGL;...varBMP:TBitmap;DC,RC:HDC;...functionTMainForm.Init:Boolean;beginResult:=InitOpenGL;ifResult=TruethenbeginBMP:=TBitmap.Create;BMP.PixelFormat:=pf24bit;BMP.Width:=1280;BMP.Height:=1024;DC:=(BMP.Canvas.Handle);RC:=CreateRen

windows - 如何在 OpenGL 中显示 unicode 文本?

在windows下opengl有没有显示unicode文字的好方法?例如,当您必须处理不同的语言时。最常见的方法如#defineFONTLISTRANGE128GLuintlist;list=glGenLists(FONTLISTRANGE);wglUseFontBitmapsW(hDC,0,FONTLISTRANGE,list);只是行不通,因为您无法为所有unicode字符创建足够的列表。 最佳答案 您还应该查看FTGLlibrary.FTGLisafreecross-platformOpenSourceC++libraryth

windows - Vista/7 的 OpenGL 最多 32 个屏幕窗口

在我将其简化为一个合理的示例之前,我希望有人之前可能遇到过这个问题并且可以阐明这个问题。我有一个基于C的32位应用程序,每个窗口使用一个OpenGL上下文,所有上下文和窗口都设置相同。请求的像素格式为32位颜色、alpha、深度缓冲区、加速。一切都在Windows2000和XP上完美运行。在创建第33个窗口/上下文对之前,一切都在Vista和7上完美运行。创建窗口没有错误,创建上下文没有错误,使上下文成为当前没有错误,绘图没有错误,SwapBuffers没有产生错误。然而,OpenGL上下文无法产生任何输出,使用Aero时窗口是白色的,使用经典模式时它们不绘制并且只是屏幕垃圾。取消DW

windows - 将多个 OpenGL 窗口同步到 vsync

在Windows应用程序中,我同时打开了多个OpenGL窗口。理想情况下,我希望每一个都以60fps的速度绘制,并与屏幕刷新同步。对于每个渲染上下文,我调用wglSwapIntervalEXT(1)来打开垂直同步。每个窗口都有自己的显示线程,绘制框架,然后调用SwapBuffers进行更新。事实证明,这些窗口正在相互“争斗”:看起来SwapBuffers调用是同步的并相互等待,即使它们在不同的线程中也是如此。我正在测量每个窗口的帧到帧时间,有两个窗口时,这个时间下降到30fps,有3到20fps,等等。如果我使用wglSwapIntervalEXT(0)关闭垂直同步,无论我打开多少个窗

c++ - Qt5 延迟加载 opengl32.dll 失败

我需要在Windows7上的Qt5项目中使用OpenGL版本2功能(Qt是使用桌面OpenGL而不是ANGLE构建的)。为了支持通过远程桌面运行应用程序,我想在必要时回退到通过Mesa进行软件渲染。我的计划是在启动时检查OpenGl版本。如果它太低,我会在应用程序设置中设置一个标志,打印一条消息并终止程序。当程序再次启动时,我可以读取标志并决定是否需要从Mesa加载opengl32.dll而不是Windows的内置版本。为了让它正常工作,我尝试通过设置/DELAYLOAD:opengl32.dll链接器标志然后使用SetDllDierectoryW([Mesa的opengl32.dll

windows - 使用多个显卡在 Windows XP 中进行 OpenGL 渲染

我正在为WindowsXP开发OpenGL应用程序。目标机器有2个NVIDIAGeForce9800GT视频卡,这是必需的,因为应用程序需要输出2个模拟视频流。应用程序本身有两个OpenGL窗口,每个窗口对应一个视频卡。每个视频卡都连接到一个显示器。至于代码,它基于minimalOpenGLexample.我如何知道应用程序是否正在使用两个视频卡进行渲染?目前,我不关心应用程序是只在WindowsXP上运行还是只在NVIDIA显卡上运行,我只需要知道这两者是如何工作的。 最佳答案 我认为您需要阅读WGL_nv_gpu_affinit