Viewing 3 reply threads
  • Author
    Posts
    • #8881 Score: 0
      p0e0o0p0l0e0
      Participant

      1 rasterize::draw(…)中,为什么setVertex写了三次?见图1

      2 在rasterize_triangle(…)中,参考论坛里同学的代码,为什么set_pixel时,是否需要设置z?有的同学设置的是0,有的是z_interpolated,这里是多少是不是都可以?见图2

      3 insideTriangle(…)中,初始化要判断的点时,参考论坛同学的代码,这里有给x和y都+0.5,这里一直不明白这里的_v的坐标,是否是像素的左下角,所以遍历的点需要加0.5?见图3

      非常感谢🌹

      • This topic was modified 3 years, 5 months ago by p0e0o0p0l0e0.
      Attachments:
      You must be logged in to view attached files.
    • #8886 Score: 0
      p0e0o0p0l0e0
      Participant

      还有问题4,这个作业执行后,控制台打印的frame比之前几个作业都慢了很多,是正常的吗?

    • #8888 Score: 0
      tmk
      Participant
      4 pts

      1:处理一个三角形的三个顶点值,每个顶点都有x,y,z
      2:参见set_pixel方法实现,并没有使用到z坐标,因为set_pixel实在二维图片上设置每个位置的颜色(也就是最终的图片)
      3:这里x,y表示像素的左上角,都+0.5后则表示像素中点的位置,然后拿着个位置要判断点是否在三角形内用于表示整个像素是否在三角形内。明显一个坐标位置用于代表整个像素是否在三角形内是非常粗糙的(要么在要么不在,非黑即白,没有过渡颜色),所有在图形边缘(在与不在只会出现在图形边缘)会有锯齿效果。后面的msaa即有多个点来代表整个像素是否在三角形中,这样整个像素就不会是非黑即白,而是有分数(多个点会有在和不在的)的过渡颜色。
      4:正常,以前只需要着色三角形的边框,而现在三角形的内部也需要着色(可以想象计算量翻了几倍)

      • This reply was modified 3 years, 5 months ago by tmk.
      • #8892 Score: 0
        p0e0o0p0l0e0
        Participant

        非常感谢。
        问题3我在做作业2提高题时发现之前理解的还是太简单了,要算像素里的多个采样点的情况。不过这里是不是x和y表示的是左下角,不是左上角吧?
        问题4我了解确实可能会慢,但感觉一秒只有几帧的样子,其实只画了两个三角形,以后画更多内容会不会更慢了。。。

    • #8891 Score: 0
      tmk
      Participant
      4 pts

      1:试了去掉两行也可以的

Viewing 3 reply threads
  • You must be logged in to reply to this topic.