草庐IT

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

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

windows - 名为 Boxes 的 Qt 示例在 Ubuntu 上工作但不在 Windows 上工作(Qt 5.0.2)

我一直在寻找跨平台GUI应用程序开发框架(构建Linux、Android、Windows应用程序和OSX的相同代码),我发现Qt最适合(因为VLC媒体播放器是用Qt构建的,所以受到启发)。首先在Ubuntu中安装它,我在构建示例时遇到了一些问题,但我设法解决了它,Qt中给出的每个示例都运行良好。但在Windows中,除“Boxes”示异常(exception),每个示例都有效。问题:warning:QtwasbuiltwithANGLE,whichprovidesonlyOpenGLES2.0ontopofDirectX9.0cerror:ThisexamplerequiresQtto

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

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

windows - Qt Creator - LNK1104 : cannot open file "glu32.lib"

我正在使用Qt和QtCreator,我想运行一个测试文件来查看我的安装是否正确。我使用Windows8.164位。我为Windows安装了最新的QtOpenGL64位版本。我已经在我的.pro文件中包含了glu32.lib文件:win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/C:/ProgramFiles(x86)/WindowsKits/8.1/Lib/winv6.3/um/x64/-lGlU32else:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/C:/ProgramFiles(

c++ - 一万个单位圆以上,如何画出高性能?

问题:在3D空间中,有很多点。我需要在每个点的位置画一个单位圆。并且所有圆圈的法线应该始终垂直于设备的屏幕并且大小不是改变了,即使我旋转或放大/缩小View。我的方法:起初我有一个大数组来存储每个点的xyz坐标。foreachpointinthearray:applyamodelviewmatrix//tokeepthenormalperpendicularandthesamesizedrawaunitcirclewithgl*functions通过这种方法,当点数达到10000时,我得到一个非常糟糕的FPS。这是非常低效的。有没有更好的方法来解决这个问题?或者一些OpenGL技术可以

c++ - wglCreateContextAttribsARB 在有能力的硬件上返回 NULL

我有一个程序可以在Windows机器上创建OpenGL4.0上下文。在我自己的电脑上,这段代码可以工作——但是,在我friend的电脑上,它就不行了。wglCreateContextAttribsARB返回NULL,即使我friend的Nvidia卡支持OpenGL4.4并且应该能够返回向后兼容的上下文。其他所有调用都按预期进行。这是上下文创建代码:dc=GetDC(window::get());PIXELFORMATDESCRIPTORpfd={0};pfd.nSize=sizeof(pfd);pfd.dwFlags=PFD_DOUBLEBUFFER|PFD_SUPPORT_OPEN

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

c++ - OpenGL:无法绘制存储在 SSBO 中的计算着色器生成的顶点

几天来,我一直在为计算着色器和缓冲区苦苦挣扎。我查看了它们的多个使用示例,例如“TheOpenGLredbook8thedition”和线程“OpenGLverticesinshaderstoragebuffer”和“OpenGLComputeShaderSSBO”,但我似乎无法让它工作。我现在正在尝试制作一个简单的程序,它可以通过调用计算着色器生成顶点,将这些生成的顶点存储在SSBO中,将这些顶点传递给顶点着色器,然后完成其余部分流水线来制作一个单一的、静止的图像,在这种情况下,它只是一条线。但是,编译程序后,只显示(0,0)处的一个点。计算着色器:#version430corela