C++ 基于OpenGL的多边形渐变

C++ 基于OpenGL的多边形渐变,c++,opengl,2d,gradient,C++,Opengl,2d,Gradient,我想知道,如果我在制作多边形,我怎么能创建一个具有多个停止点和方向的渐变。现在我通过改变垂直面的颜色来创建渐变,但这是有限的。还有别的办法吗 谢谢最灵活的方法可能是创建具有所需渐变的纹理,然后将其应用于几何体 最灵活的方法可能是创建具有所需渐变的纹理,然后将其应用于几何体 您可以使用的一个选项是将带有渐变的简单多边形渲染为纹理,然后使用该纹理对实际多边形进行纹理处理 然后,您可以旋转源多边形,使用其图像进行纹理处理的任何对象也将旋转其渐变,而不改变实际几何体。您可以选择的一个选项是将带有渐变的简

我想知道,如果我在制作多边形,我怎么能创建一个具有多个停止点和方向的渐变。现在我通过改变垂直面的颜色来创建渐变,但这是有限的。还有别的办法吗


谢谢

最灵活的方法可能是创建具有所需渐变的纹理,然后将其应用于几何体

最灵活的方法可能是创建具有所需渐变的纹理,然后将其应用于几何体

您可以使用的一个选项是将带有渐变的简单多边形渲染为纹理,然后使用该纹理对实际多边形进行纹理处理


然后,您可以旋转源多边形,使用其图像进行纹理处理的任何对象也将旋转其渐变,而不改变实际几何体。

您可以选择的一个选项是将带有渐变的简单多边形渲染为纹理,然后使用该纹理对实际多边形进行纹理处理


然后,您可以旋转源多边形,使用其图像进行纹理处理的任何对象也将旋转其渐变,而不会改变实际的几何体。

如果您使用着色器,您可以将顶点世界位置传递到顶点着色器中,它们将插值到片段着色器中,因此对于每个片段,您将在世界空间中找到它所在的位置(当然,您可以使用任何空间)。然后,只需选择任何传递函数,将该值更改为颜色。您可以使用b样条曲线或片段着色器中的任何内容来制作任何类型的精细算法

如果使用着色器,可以将顶点世界位置传递到顶点着色器中,它们将插值到片段着色器中,因此对于每个片段,您都可以得到它在世界空间中的位置(当然,您可以使用任何空间)。然后,只需选择任何传递函数,将该值更改为颜色。您可以使用b样条曲线或片段着色器中的任何内容来制作任何类型的精细算法

但是我希望能够在移动中改变方向向量,这样固定的纹理就不会剪切它。(有点像Photoshop渐变)你应该能够旋转你的纹理投影。但是我想能够在移动中改变方向向量,这样固定的纹理就不会切割它。(有点像Photoshop渐变)你应该能够旋转你的纹理投影。这是一个很好的解决方案,虽然我不知道如何处理这些步骤,但我会找到它hopefully@user146780哈哈,是的,老实说,我不知道如何渲染纹理,但我知道这是可以做到的。正如你似乎同意的那样,我认为这在理论上是可行的;这是一个很好的解决方案,虽然我不确定如何处理这些步骤,但我会找到答案的hopefully@user146780哈哈,是的,老实说,我不知道如何渲染纹理,但我知道这是可以做到的。正如你似乎同意的那样,我认为这在理论上是可行的;D