繁体   English   中英

为OpenGL编写自己的三角栅格化?

[英]Programming my own triangle rasterization for OpenGL?

我试图渲染圆角三角形以提高性能。 为了说明我的意思,请看下图:

在此输入图像描述

我试过CPU,现在有办法将这种算法以某种方式移动到GPU吗? 我可以更改调用片段着色器的方法代码吗?

顺便说一句,如果我能做到,那么我需要重新制作哪种编程语言?

我使用的OpenGL 2.1 GPU只有20GB-30GB的内存带宽。

我不确定你到底要做什么,但看起来有点可疑。 实际上,您最终可能会损害性能,尝试在着色器中执行一些自定义计算以呈现圆形或椭圆形。

现代GPU硬件可以每秒推动数十亿个三角形。 你可能在这里分裂头发。

在任何情况下,如果你想“伪造”几何,你可能会对此感兴趣: https//alfonse.bitbucket.io/oldtut/Illumination/Tutorial%2013.html

阅读Charles Loop和Jim Blinn 使用可编程图形硬件进行分辨率独立曲线渲染的论文。

简短版本:假设您对曲线进行了有效的内/外测试,将封闭的船体形状渲染为三角形,使用片段着色器丢弃曲线外的像素。

其次,Aeluned担心将算法转移到GPU不会自动使其更快。

  1. 在OpenGL 2.1上你没有几何着色器(3.2+),所以你可以忘记GPU。
  2. 您不能通过弯曲三角形提高凸形的光栅化性能
    • 任何凸多边形的光栅化的复杂性与相同区域的任何三角形相同
    • 区别仅在于:
    • 传递顶点的数量
      • 记忆转移
      • 使用几何着色器,使用三角形时效果会更好
    • 边界线数量
      • 边界线用于填充的栅格化
      • 使用三角形会更糟糕
      • (需要连接更多的三角形而不是单个形状的多边形)

因此,在您的情况下实现此功能以获得更好的性能并不是一个好主意。

我唯一能想到的就是轻松手动生成形状。

在那种情况下只需编写一个函数glRoundedTriangle(....)

  • 从给定的输入参数生成正确的顶点,颜色,法线,纹理坐标。

看起来如何是未知的,因为你没有指定圆角三角形几何/形状和/或输入参数(例如3点+ 3个有符号曲线半径?)

要提高OpenGL的性能,请使用VBO / VAO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM