草庐IT

c++ - OpenGL 2D 中的可变形地形 [Worms like]

我搜索了一段时间,听说有不同的方法可以做到这一点,所以我想我应该来这里看看我应该怎么做,根据我收集到的信息,我应该使用数组中的glBitmap和0s和0xFF值来制作地形。对此有任何意见吗?我尝试将其切换为四边形,但我不确定这是否有效以及它的完成方式。我希望地形能够有隧道,比如蠕虫。2维。这是我到目前为止尝试过的,我试图制作一个glBitmap,所以..pixels=pow(2*radius,2);ras=newGLubyte[pixels];然后全部设置为0xFF,用glBitmap(x,y,0,0,ras)绘制;然后可以检查是否有爆炸,什么不是以及可以将任何像素设置为零。这是一种合

c++ - 3D 应用中的 OpenGL 2D hud

我一直在尝试在我的OpenGL应用程序中创建一个HUD。环顾四周,似乎是使用正射投影来做到这一点,但到目前为止,我还无法让程序正确渲染。发生的事情不是在我的显示器顶部渲染,而是出现奇怪的图形故障,如下所示:如果我注释掉hud代码,一切都会完美呈现。glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LESS);//SetupprojectionmatrixglMatrixMode(GL_PROJECTION);glLoadIdentity();//UsinggluPerspective.It'sprettyeasyandlooksnice.gluPerspec

c++ - OpenGL 线条未着色

我在OpenGL中工作,使用VBO,我有一组三行(沿X、Y和Z轴-想想捷克刺猬)。默认情况下,这些线条是灰色的,但我希望它们是鲜红色的,这样我就能看得更清楚。不幸的是,虽然我添加了颜色信息作为顶点数据,但线条仍然显示为灰色。我可能缺少一些基本的东西,但我看不到。这是我创建VBO的方法://Positiondatasf::Vector3Top=sf::Vector3(0.0,1.0,0.0);sf::Vector3Front=sf::Vector3(0.0,0.0,-1.0);sf::Vector3Right=sf::Vector3(1.0,0.0,0.0);sf::Vector3Bac

c++ - 我可以使用什么在我的 GUI 应用程序中用颜色渲染 3D 图像(OBJ、PLY)?

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion我刚刚通过VTK和PCLVisualizer,无法显示完整的PLY图像。显示的只是几何图形,如下所示:关于库和使用的任何输入?

c++ - OBJ、Buffer 对象和面索引

我最近在让顶点缓冲区对象工作方面取得了很大进展。所以我转向了元素数组,我想通过这样的实现我可以从一个对象加载顶点和面数据。我不太擅长用C++读取文件,所以我写了一个python文档来解析obj并写了2个单独的txts来给我一个顶点数组和面索引,并将它们直接粘贴到我的代码中。这就像6000行,但它可以工作(没有编译错误)。这是它的样子.我认为他们错了。我不确定。顶点和面的顺序并没有改变,只是从obj中提取出来,因为我还没有适用于缓冲区对象的法线或纹理。如果你看一下立方体,我有点喜欢,但不是真的。这是rendercodevoidMesh_handle::DrawTri(){glBindBu

C++11 线程,在主线程上运行

我正在尝试C++11线程进行一些开发。我想在异步线程中运行一些代码,当该代码完成后,我想在主线程上运行其他代码但只有当它完成时!这是因为我想要异步运行的事情是加载OpenGL的东西,并且在执行线程时它对OpenGL上下文有点棘手,据我所知这几乎是一个不在不同的环境中运行相同的上下文线程。但是我想创建一个加载器线程,它加载collada文件,这里耗时的东西实际上是解析文件和设置数据以及我可以(技术上)在一个单独的线程中做的所有事情,然后只需在主线程上执行特定于opengl的任务。(这是我最初的想法,我可能只是走错了路)。所以我在想,如果我可以分离一个异步线程来加载collada文件并填充

c++ - 获取 glFrustum 的坐标

我刚开始阅读有关OpenGL的主题,特别是关于Viewing的内容满足我目前的需求。我正在尝试理解glFrustum以了解我在屏幕上绘制的对象的透视投影,据我所知,glFrustum会使较远的对象小于较近的对象。我在这里使用openFrameworks来绘制对象,例如Image/Box等,这是我正在尝试做的一个简短示例:openFrameworks绘制方法draw(){glMatrixMode(GL_PROJECTION);glLoadIdentity();glFrustum(-1.0,1.0,-1.0,1.0,3.0,500.0);glMatrixMode(GL_MODELVIEW)

c++ - 在 OpenGL 中。如何将纹理的一部分复制到另一个纹理

我正在尝试创建一个空白(没有alpha的白色)纹理,我可以在其中加载其他纹理并写入其中的一部分。我尝试只获取一部分纹理,并使用glTexSubImage2D将其放置在那里似乎无法正常工作。任何人都知道如何做到这一点?我做错了什么?intsourceTextWidth;intsourceTextHeight;intsourceFormat;intformatOffset=0;//bindthetextureglBindTexture(GL_TEXTURE_2D,textureID);//getitsparamsglGetTexLevelParameteriv(GL_TEXTURE_2D,

c++ - VTKCamera 焦点和位置之间的差异

我正在使用vtkCamera并且会尝试移动它并让它看向某个点。例如,如果我想将相机放在位置(x,y,z)并让它看(0,0,0)例如使用gluLookAt在openGL中,我们会将眼睛坐标设置为(x,y,z),将中心坐标设置为(0,0,0),并将向上vector设置为(0,1,0)。然而,在vtk中,使用vtkCamera我们有三个独立的方法,即setPosition、setFocalPoint和setViewUp我的问题是setPositon和setFocalPoint分别对应什么?谢谢 最佳答案 setPosition对应眼睛坐标

c++ - 在 OpenGL 批处理渲染器中批处理任意顶点数据

我受XNA/MonoGame界面的启发,正在OpenGL中制作一个2D批处理渲染器,但我遇到了一个小设计问题,我正在寻找一些输入。目前,您可以通过四种通用方式提交顶点数据:voidRender(constSprite&sprite);voidRender(constShape&shape);voidRender(constVertex*vertices,unsignedintlength);voidRender(constVertex*vertices,unsignedintlength,constTexture*texture);一个Sprite包含四个顶点、颜色和纹理坐标,而其他三