草庐IT

c++ - 控制台窗口有图标,但 OpenGL/GLUT 窗口没有。为什么?

我在Windows下用C/C++/OpenGL/GLUT编写程序。我想在我的程序中添加一个图标。我使用MinGW和命令提示符来编译我唯一的一个.cpp文件。我自己写了一些.bat文件,我可以将其编译为Debug模式、Release模式等。我想在我的程序中添加一个图标。所以,我做了一个新的编译bat,看起来像这样:windresresource.rcobject.osetPATH=%PATH%;c:\mingw\bing++program.cppobject.o>>>someothersettings我有一个.ico文件和一个“资源脚本”语言的资源文件。资源文件如下所示:#ifndef_

windows - OpenGL 和(缺少)glBlendFuncSeparate

我需要将几张图片混合成一张图片,就像这里描述的那样:OpenGL-maskwithmultipletextures.我使用了那里提出的解决方案,但glBlendFuncSeparate方法存在问题。原来这个方法是在后来的openGL版本中引入的,根据我的gl.h文件,我使用的版本是1.经过大量搜索和阅读后,我意识到这就是我必须处理的问题,我不能只升级我的openGL版本。我继续下载GLEW。我将glew.h和glew.c添加到我的VS10项目中,定义了GLEW_BUILD现在它终于可以编译而不会提示glBlendFuncSeparate,但是当我运行该程序时,它在尝试调用该方法时崩溃,

c++ - 在 win7 下,为 opengl 窗口捕获的图像是黑色的

我在主窗口上有几个子窗口,有的是GDI窗口,有的是opengl渲染的窗口,一个功能是用rect截取图像(可能覆盖不同的窗口组合)。此功能在windowsxp下工作正常。但是在windows7下,所有opengl渲染的窗口都是黑色的。我做了一些研究,有人说gdi不能通过窗口DC直接访问帧缓冲区,必须使用glReadPixels来组合位图。然而,这种方法很尴尬,因为我必须分别组合该矩形中的每个窗口。谁有更好的选择?这是我捕获bmp的代码:voidMainWndClass::catchBmp(constchar*path_fn,booldrawAreaOnly/*=0*/){CDC*pDC=

c++ - OpenGL:如何自动选择正确的 mipmapping 方法?

我在对不同硬件上的纹理进行纹理映射时遇到问题。我使用以下代码:char*exts=(char*)glGetString(GL_EXTENSIONS);if(strstr(exts,"SGIS_generate_mipmap")==NULL){//usegluBuild2DMipmaps()}else{//useGL_GENERATE_MIPMAP}但在某些卡上,它说GL_GENERATE_MIPMAP受支持,而实际上它不支持,因此gfx卡试图从mipamp应该所在的位置读取内存,因此卡将其他纹理渲染到那些miplevels。​​我试过glGenerateMipmapEXT(GL_TEX

windows - 用于 OpenGL 1.1 函数的 wglGetProcAddress

OpenGL网站上的这个wiki页面声称OpenGL1.1函数不应通过wglGetProcAddress加载,措辞似乎暗示如果您尝试某些系统将按设计返回NULL:http://www.opengl.org/wiki/Platform_specifics:_Windows#wglGetProcAddress(想法是只有1.2+函数值得通过wglGetProcAddress加载)。该页面没有告诉我们谁报告了这些对1.1函数的wglGetProcAddress调用失败,这是我从未亲眼见过的。谷歌搜索也几乎没有关于该问题的信息。对于足够多的用户,wglGetProcAddress()实际上会为

c++ - 去除 OpenGL 橡皮筋伪影

我正在使用一些用于科学可视化的OpenGL代码,但我在让它的橡皮筋在较新的硬件上工作时遇到了问题。该代码在现有场景上绘制一个“缩放窗口”,“缩放窗口”的一个角位于存储的左键单击位置,另一个角在鼠标移动时位于鼠标下方。在第二次左键单击场景放大到选定的窗口。当鼠标在场景中移动时,我看到的症状是:出现橡皮筋伪影,即用于创建“缩放窗口”的行未被第二个“RenderLogic”channel从缓冲区中删除(参见下面的代码)我可以清楚地看到前一个缓冲区的内容随着缓冲区的交换而闪烁和消失上述问题不会发生在低端硬件上,例如我拥有的上网本上的集成显卡。另外,我不记得大约5年前编写这段代码时遇到过这个问题

Virtualbox 虚拟机 : is it OpenGL 1. x 上的 Windows 7 兼容吗?

在Windows7客户机的VirtualBox虚拟机设置(或系统信息)中,我无法确定我的虚拟显卡是否与OpenGL1.x兼容。我需要OpenGL1.x兼容性才能使用theBlackBerry7simulator进行测试.VirtualBox默认通用显卡是否支持OpenGL1.x? 最佳答案 是的,您的guestVM将能够运行OpenGL1.x和更新版本。通过虚拟机菜单栏中的“设备”菜单安装VirtualBoxGuestAdditionsVirtualBoxhasahandymenuitemnamed"Installguestaddi

windows - qmake工程中如何检测Qt是OpenGL还是Angle版本?

我想检测Qt版本是否在Windows上使用OpenGL或Angle,以便nmakeinstall正常工作。这就是我现在所拥有的,来自.pro文件的片段:GLTMP=$$[QT_HOST_PREFIX]contains(GLTMP,".*_opengl"){message(DetectedOpenGL)}else{message(DidnotdetectOpenGLsoassumingAngle)#addAngleDLLfilestoINSTALLS}现在这仅在QT_HOST_PREFIX实际上包含OpenGL版本的_opengl时才有效,但不是Angle版本(例如C:\Qt\5.2.1

windows - 使用全屏 OpenGL 应用程序时是否可以保持 Windows 的合成器正常工作?

在Windows下,当DWM组合处于事件状态时,全屏OpenGL应用程序有某种“特殊路径”阻止所有其他子窗口(弹出窗口、菜单、工具提示)正确地分层在全屏OpenGL窗口。虽然这对于游戏等很有用,但对于其他全屏OpenGL应用程序(CAD、3d编辑器等)来说完全是一种痛苦。这个问题给Qt用户带来了无穷无尽的麻烦,见here,here,或here.有没有办法告诉Windows不要为给定的应用程序/全屏窗口启用特殊路径?无论是在list中还是通过DWMAPI,我都不在乎。 最佳答案 是的,这可以通过欺骗Windows认为Window应该与

c++ - 全屏原始分辨率下的 OpenGL 撕裂

我有一个带有win32api的OpenGL应用程序,没有过剩等......我遇到了全屏屏幕撕裂的问题。基本上,我将WS_POPUP设置为窗口样式,并将显示器的分辨率设置为窗口大小。我在AMDradeonHD7770上运行,我看到了可怕的撕裂!当我放置WS_POPUPWINDOW样式而不是WS_POPUP时,撕裂消失了,但是我的场景周围有不需要的边框。我注意到的另一件事是,当分辨率不是原生时,撕裂现象就会消失。因此,当我将my_screen_resolution+1作为尺寸参数传递时,撕裂现象就消失了。RESx=1920;RESy=1080;hwnd=CreateWindowEx(NUL