草庐IT

多边形

全部标签

c++ - 当我的相机远离物体时,为什么 OpenGL 会剔除我的多边形?

我正在使用片段着色器对从OBJ文件加载的对象进行Lambert和Fog着色,但多边形存在一个小问题。当我将相机位置从对象移开时,网格中的一些多边形被“剔除”。例子:老实说,我不知道为什么会发生这种情况,也不知道为什么只有当我离开物体时才会发生这种情况。这是我的着色器:顶点着色器#version400outstructvData{vec4pos;vec4texcoord;vec3normal;}fdata;voidmain(){fdata.texcoord=gl_MultiTexCoord0;fdata.normal=normalize(gl_NormalMatrix*gl_Normal

c++ - OpenGL GL_POLYGON_SMOOTH 二维抗锯齿从四边形创建三边形

更新:我在安装NVIDIAControlPanel时找到了它,如果我卸载它它会正常工作。当您在OpenGL中旋转四边形时,边缘会变得参差不齐。如果我调用glEnable(GL_POLYGON_SMOOTH),边缘会变得平滑,但OpenGL然后会在我的所有图像中绘制一条白色对角线,就好像它正在创建我的四边形的三元组一样。它是这样的:有没有办法禁用那条线,或者我可以用另一种简单的方法获得抗锯齿功能吗?我尝试了GL_MULTISAMPLE,但没有任何反应。在我的代码中还有:glShadeModel(GL_SMOOTH);glMatrixMode(GL_PROJECTION);glLoadId

c++ - OpenGL:创建复杂且平滑的多边形

在我的OpenGL项目中,我想动态创建平滑的多边形,类似于这个:问题主要出在平滑过程中。到目前为止,我的程序是首先创建一个具有随机放置顶点的​​VBO。然后,在我的片段着色器中(我正在使用可编程函数管道)应该进行平滑处理,或者换句话说,从顶点之间先前定义的“线”创建曲线。问题就在这里:我不太熟悉那些复杂的数学算法,这些算法会检查一个点是否在“平滑多边形”内。 最佳答案 首先,您无法在片段着色器中真正做到这一点。片段着色器仅限于在“像素”(基本上但不完全是实际像素)写入屏幕之前设置其最终(大概)颜色。它无法在曲线上创建新点。Thisp

c++ - 使用 GL_TRIANGLE_STRIP 或索引 GL_TRIANGLES 绘制动态数量的四边形是否更有效

我正在使用C++开发一个基于sprite的简单2D游戏,该游戏使用OpenGL进行硬件加速渲染,并使用SDL进行窗口管理和用户输入处理。由于它是一款2D游戏,我只需要绘制四边形,但由于Sprite的数量是动态的,我永远不能依赖于四边形的数量是恒定的。因此,我需要在每一帧通过我的VBO重新缓冲所有顶点数据(因为四边形可能比上一帧多或少,因此缓冲区的大小可能不同)。到目前为止,我的原型(prototype)程序会创建一个窗口,并允许用户使用向上和向下箭头键在对角线行中添加和删除四边形。现在我画的四边形是简单的、没有纹理的白色方block。这是我正在使用的代码(在OSX10.6.8和Ubun

c++ - 使用 Angus Johnsons 的 Clipper lib 中的 OffsetPolygon 时多边形中的奇数 "notches"

此代码的最终目标是确保客户定义的形状实际上可以由我们的……呃,机器加工。为此,我们将指定的形状向内偏移钻头的半径,然后向外退回相同的量,从而将任何太细而无法实际装入钻头的部分四舍五入。对于多边形偏移,我们使用AngusJohnson的Clipper库,版本5.1.6(c++)。但是从图片中可以看出,这会产生一些意想不到的形状。在图片中,我使用ClipperLib::OffsetPolygon通过-radius偏移原始形状(绿色,大部分被后来的绘图覆盖)以获得黄色形状,然后通过半径偏移以获得红色形状.理论上,对于链接中所示的情况,这应该会导致红色形状与绿色形状完全匹配。导致上述结果发生的

C++:从带孔的多边形中获取简单多边形的列表

我正在努力使用Boost::Polygon-显然它可以做任何事情,除了我想要的事情。我有一些边界描述了一组多边形及其孔(在二维空间中)。一般来说,我们甚至可以在一个洞中有一个洞(较小的多边形在一个较大的多边形的洞中),或者一个多边形中有多个洞。如果有必要,我可以检查哪个边界描述了一个洞,哪个边界描述了一个多边形。有时边界是分开的(并且不包含彼此),这意味着我们有很多多边形。我想要的是一种方法,它给我一组简单的、不包含任何孔的多边形,它们一起形成输入的“孔”多边形。 最佳答案 这可以通过BoostPolygon实现。您需要polygo

c++ - 应用于四边形时,OpenGL 纹理稍微向左移动

我对OpenGL有点陌生,而且我在使用纹理方面遇到了问题。纹理似乎加载正常,但当我运行程序时,纹理显示向左移动了几个像素,右侧出现了被移动切断的部分。我不知道这里的问题是出在我的TGA加载器中,还是我将纹理应用到四边形的方式。这是加载程序:#include"texture.h"#includeGLubyteuncompressedheader[12]={0,0,2,0,0,0,0,0,0,0,0,0};GLubytecompressedheader[12]={0,0,10,0,0,0,0,0,0,0,0,0};TGA::TGA(){}//Privateloadingfunctionca

c++ - 如何确定 (x, y) 点是否在由边界点列表定义的多边形内

我有一大堆点,它们定义了一些(不一定是凸的)形状的边界。然后我有一些查询点(x,y)并且我想确定(x,y)是否在我的点边界定义的区域内。所以,很简单的问题。如何确定查询点是否在我的边界点形成的形状内?是否有一个很好的boost模块?我正在查看boost::geometry但还没有找到任何东西.. 最佳答案 您似乎在寻找within,不是吗?http://www.boost.org/libs/geometry/doc/html/geometry/reference/algorithms/within/within_2.html他们在页

c++ - 是否有一种有效的标准算法来栅格包括其内部区域的多边形

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Rasterizinga2Dpolygon我需要光栅化一个多边形,包括它的内部区域(确定位于多边形内部的网格的所有图block)。目前,我通过使用简单的Bresenham来确定边界图block,但到目前为止我还没有有效的方法来栅格化多边形的“内部”(也可能是凹面)。到目前为止,我的方法是将图block范围限制为包含多边形的矩形,然后使用多边形缠绕算法确定每个图block中心是位于内部还是外部。这是非常低效的,因为它涉及检查每个图block的每个多边形边界段。从第一眼来看,肯定应该有一种更快的方法,例如……就像

c++ - 如何在 OpenGL 中绘制多边形,这些多边形具有用黑色钢笔绘制的轮廓和另一种填充颜色

如何在OpenGL中绘制这样的形状?我的意思是,我知道如何在OpenGL中绘制多边形。我想知道如何使轮廓黑色和填充颜色(例如)黄色? 最佳答案 您有5个顶点。用它们绘制一个GL_POLYGON,然后绘制一个GL_LINE_LOOP。请注意,GL_POLYGON仅对凸多边形有效。 关于c++-如何在OpenGL中绘制多边形,这些多边形具有用黑色钢笔绘制的轮廓和另一种填充颜色,我们在StackOverflow上找到一个类似的问题: https://stackove