Articles of opengl

MinGW上的OpenGL链接器错误

我尝试在没有GLFW的窗口上初始化OpenGL …她的一些相关的代码: #include <windows.h> //… if(!(g_hDC = GetDC(hWnd))) return false; if(!(iPixelFormat = ChoosePixelFormat(g_hDC, &pfdPixelFormat))) return false; if(!SetPixelFormat(g_hDC, iPixelFormat, &pfdPixelFormat)) return false; if(!(g_hRC = wglCreateContext(g_hDC))) return false; if(!wglMakeCurrent(g_hDC, g_hRC)) return false; //… 当我用mingw32-g ++ -Wall -O2 -Wl编译时,子系统,windows -lopengl32 -mwindows,Init.c我得到以下错误: Temp\cclcIFFB.o:init.c:(.text+0x281): undefined reference to `_wglCreateContext@4' Temp\cclcIFFB.o:init.c:(.text+0x2a0): undefined reference to `_wglMakeCurrent@8' collect2.exe: error: ld returned 1 exit status […]

绘制在字面上的一切

我想为在后台运行的玩家创build一个实用程序。 我需要做的是在某些场合在游戏中显示可见消息 。 所以我的窗口不需要一直显示,但是在某些事件(按键组合,我有工具来注册全局键)时,它应该popup。 我开始在WPF中进行开发,如果我将Window属性设置为true,它将保持在最前,只要我不启动另一个应用程序,它将成为最顶层的应用程序。 当然,游戏确实是最顶层的,所以我的窗口是不可见的。 我应该如何在WPF中解决这个问题(如果甚至可以解决的话)? 如果Winforms中有一个简单的解决scheme,我也欢迎。 即使是C ++ OpenGL解决scheme或提示也会派上用场。 我知道这不是一件小事,但是可以做到。 一个很好的例子就是Xfire,在这里用户可以在玩游戏的同时聊天。

将backbuffer直接复制到video内存

有没有办法将backbuffer数据直接复制到video内存? 我的意思是不使用系统内存。 到目前为止,我发现的所有方法(比如这个或者这个 )都把backbuffer的内容复制到系统内存中,这需要很长的时间。 我的任务是在video内存中创build表面或纹理,并告诉graphics适配器直接将后台缓冲区复制到那里,而不使用总线。 谢谢

由于发现Windows.h的问题,无法设置openGL superBible的例子

我正在试图从OpenGL SuperBible第6版中编译示例。 我从他们的git仓库得到了一切,我试图通过打开包含的Visual Studio 2013解决scheme文件来使用Visual Studio 2013打开它。 当我尝试build立“sb6_vs2013”​​里面的主要项目它声称它找不到Windows.h:“错误2错误C1083:无法打开包含文件:'windows.h':没有这样的文件或目录” 现在我试图看看互联网上的人的解决scheme,找不到任何有用的东西。 如果我右键点击项目,并进入属性 – >configuration属性 – > VC目录我可以看到它有:$(WindowsSdkDir)\ include当我点击macros,我可以看到WindowsSdkDir的path,其指向在Windows SDK的正确位置,在我的情况下是:“C:\ Program Files文件(x86)\ Windows Kits \ 8.1”如果我看在我的文件夹中的文件系统,并转到“\ Include \ um \”我可以在那里findWindows.h,但由于某种原因,Visual Studio 2013无法find它。 我认为这是由于不好的安装,我什至去重新安装Windows,视觉工作室和一切(无论如何是时候了),但似乎没有解决这个问题,甚至新鲜的安装没有做招。 我不知道我还能做些什么来完成这项工作。 有人能帮我一劳永逸地解决这个问题吗?

c ++ Opengl,Win内存泄漏

我使用WIN API在Windows 7上创build了一个简单的opengl程序。 我已经按照MSDN win api网站上的教程设置了窗口。 窗口完美的工作,即使input日志logging,它不会泄漏任何内存,工作正常停留在1.7 MB的内存。 使用opengl上下文需要11MB。 如果我想绘制像矩形的东西,它开始泄漏200 kb。 (长方形画得非常好….) 它开始于14.5 MB,并增长到50MB,并继续。 整个程序中没有“新”关键字,程序非常简单。 只创build窗口。 比while循环中的渲染完成… 这是主要的。 int main() { Window wind(800,600); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); while(!wind.isCloseRequested()) { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); Vector3f Vertices[3]; Vertices[0] = Vector3f(-1.0f, -1.0f, 0.0f); Vertices[1] = Vector3f(1.0f, -1.0f, 0.0f); Vertices[2] = Vector3f(0.0f, 1.0f, 0.0f); GLuint VBO; glGenBuffers(1, […]

OpenGL旋转场景不像预期的那样

用我的代码,当我旋转模型视图; 它分别旋转每个对象。 我想旋转整个视图平面。 我怎样才能做到这一点? 我知道gluLookAt,但我想了解这背后的math。 这是我的代码: Prepare_scene仅在opengl init和窗体重塑时被调用 // prepare_scene glViewport(0, 0, windowWidth, windowHeight); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, windowWidth, 0, windowHeight, 0, 40); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); // Enable Smooth Shading glClearDepth(1.0f); // Depth Buffer Setup glEnable(GL_DEPTH_TEST); // Enables Depth Testing glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); glEnable(GL_POINT_SMOOTH); glPointSize(4); glClearColor(0.0f, 0.0f, […]

Oculus Direct-to-rift模式有哪些要求?

我有问题使我的Oculus应用程序在HMD渲染(使用直接到裂口模式)我主要从TinyWorld OpenGL演示代码,而它在监视器中的一切权利,它只是不会打开Oculus并在那里显示我的输出。 我不知道为什么,我不知道如何诊断。 我对ovrHmd_EndFrame的调用看起来是成功的,但与TinyWorld不同的是,它们不会让我的显示器闪烁,并打开HMD(就像TinyWorld一样) 应用程序达到Direct-to-Rift模式的要求是什么? 也许我错过了一些东西。 它是像素格式吗? parsing度? 我是否也在使用DirectX并通过Nvidia DirectX OpenGL interop与它进行通信,这会不会令我伤心呢? 我如何诊断? 我在SDK 0.5上

Java LWJGL新的渲染问题窗口

我一直在做一个简单的LWJGL实践项目,最近才偶然发现了一个新的问题。 现在,我所有的项目,我保存在多个地方的工作备份。 我正在运行一个Windows 8.1操作系统,最近升级到Windows 10,突然之间我所有的备份和当前程序都有渲染错误,如下所示。 我试图在Windows 8.1操作系统上运行我的程序,它在那里工作正常。 是否有一些新的Windows驱动程序更新可能导致此渲染问题? 还是有一些不兼容的Windows 10和LWJGL我无法find关于?

全屏无边框窗口“拥有”窗口顶部

我有两个OpenGL窗口:一个是主窗口,另一个是由主窗口“拥有”的小窗口(在CreateWindowEx中设置了hWndParent,但未设置WS_CHILD样式)。 如果我然后将我的主窗口转换为无边界和与我的桌面相同的大小,它将跳转到较小的窗口前,即使它是拥有的,这应该是不可能的( https://msdn.microsoft.com/en-us /library/windows/desktop/ms632599%28v=vs.85%29.aspx#owned_windows )。 即使较小的窗口始终处于顶部,情况也是如此。 就自己而言,这并不可怕,但核心问题是,我仍然可以点击我的主窗口,在较小的窗口的位置,较小的窗口将在面前popup。 通过点击主窗口,然后点击主窗口,我可以在这两个窗口之间不断地进行切换。 如果我使主窗口的大小比整个桌面大小小1个像素,则不会发生这些问题,并且窗口的行为与预期相同。 我找不到任何描述此行为的文档。 这是一个function,防止窗口内容(如video回放)没有logging,或我只是错过了? 我会提到我没有在这里使用分层或透明的窗口,所以我不认为点击应该是可能的? 谢谢

意想不到的gluLookAt行为与OpenGL上的点绘制

我目前正在研究读取3D obj文件的软件的打印循环。 我已经存储我的obj文件读取variablestie 。 这个variables包含一个OpenGL列表。 我的目标是能够通过使用键盘来移动读取对象。 键盘阅读正确实施(我可以通过日志看到)。 问题 当我编译下面的代码循环,gluLookAt正常exucute,我可以通过改变参数的值移动我的对象。 glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ; glMatrixMode(GL_PROJECTION); glLoadIdentity(); light(); gluPerspective (60.0, 250/(float)250, 0.1, 500.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(eyeX,eyeY,eyeZ,eyeX+directionX,eyeY+directionY,eyeZ+directionZ,upX,upY,upZ); glPushMatrix(); glRotated(45,0,0,1); glTranslated(0,0,50); glBindTexture(GL_TEXTURE_2D,texture1); //glCallList(xwing); //ICI glEnd(); glPopMatrix(); glColor3d(1,1,1); glDisable(GL_LIGHTING); glBindTexture(GL_TEXTURE_2D,texture2); GLUquadric* params = gluNewQuadric(); gluQuadricDrawStyle(params,GLU_FILL); gluQuadricTexture(params,GL_TRUE); gluSphere(params,100,20,20); gluDeleteQuadric(params); glEnable(GL_LIGHTING); glBindTexture(GL_TEXTURE_2D,texture1); glCallList(tie); //ICI glPointSize(5.0); glBegin(GL_POINTS); glColor3f(1.0f,0.0f,0.0f); glVertex3f(-1.0f,0.0f,0.0f); […]