C++ 为OpenGL编程我自己的三角形光栅化?
我试图渲染圆角三角形以提高性能。为了说明我的意思,请参见下图: 我在CPU上试过,现在有没有办法把这个算法转移到GPU上?我可以更改调用片段着色器的方法代码吗 顺便问一下,如果我能做到这一点,那么我需要用什么编程语言来重新编写它呢C++ 为OpenGL编程我自己的三角形光栅化?,c++,opengl,rasterizing,C++,Opengl,Rasterizing,我试图渲染圆角三角形以提高性能。为了说明我的意思,请参见下图: 我在CPU上试过,现在有没有办法把这个算法转移到GPU上?我可以更改调用片段着色器的方法代码吗 顺便问一下,如果我能做到这一点,那么我需要用什么编程语言来重新编写它呢 我使用的是OpenGL 2.1 GPU,内存带宽仅为20GB-30GB。我不确定你到底在干什么,但这似乎有点可疑。在着色器中执行某些自定义计算以渲染圆或椭圆时,实际上可能会影响性能 现代GPU硬件每秒可以推动数十亿个三角形。你可能在这里吹毛求疵 在任何情况下,如果你
我使用的是OpenGL 2.1 GPU,内存带宽仅为20GB-30GB。我不确定你到底在干什么,但这似乎有点可疑。在着色器中执行某些自定义计算以渲染圆或椭圆时,实际上可能会影响性能 现代GPU硬件每秒可以推动数十亿个三角形。你可能在这里吹毛求疵 在任何情况下,如果你想“伪造”几何图形,你可能会感兴趣:阅读查尔斯·洛普和吉姆·布林的论文 简短版本:假设对曲线进行了有效的内部/外部测试,将封闭外壳形状渲染为三角形,使用片段着色器丢弃曲线外部的像素 其次,Aeluned担心将算法传输到GPU不会自动加快速度
- 任何凸多边形的栅格化的复杂性与同一区域的任何三角形相同
- 区别仅在于:
- 通过的顶点数
- 内存传输
- 使用几何体着色器,使用三角形会更好
- 边界线数
- 用于填充的边界线光栅化
- 使用三角形会更糟糕
- (需要连接更多三角形,而不是单一形状的多边形)
- 根据给定的输入参数生成正确的顶点、颜色、法线和纹理坐标李>
要提高OpenGL的性能,请使用VBO/VAO“尝试渲染圆角三角形以提高性能”…您的确切意思是什么?“你能举例说明吗?”巴特说。有了它,你可以用两个三角形渲染一个圆,用四个三角形渲染一个椭圆。你不能更改光栅化,但你可以编写一个片段着色器来消除片段,以改变三角形的形状。为什么不简单地对该形状进行三角化呢?也就是说,将其拆分为多个三角形,直到它足够接近舍入?@Fijiwiji,如果没有任何明确的细节,我没有理由相信三角剖分会对您的性能产生负面影响。我没有提到这一点,但我正在OpenGL 2.1 GPU上尝试,内存带宽仅为20GB-30GB。(这个GPU使用了10年以上)@Fijiwiji:Geometry通常不是内存带宽的霸主。纹理是。@datenwolf我只是想让你知道这个GPU是如何被重击的。如果这个GPU是新的,它的带宽将在160GB左右。