Viewing 1 reply thread
  • Author
    Posts
    • #8456 Score: 0
      Epsilon0
      Participant

      在作业1中 rasterizer.cpp 的 rst::rasterizer::set_pixel 对索引需要偏移一个width.
      由于frame_buf 的size是 width*height。 即最大为700*700=4900。
      而源代码的索引求法是 auto ind = (height-point.y())*width + point.x(); 假设point坐标为(0,699) 即第一行最后一个, ind 将会得到结果 (700 – 0) * 700 + 699 = 4900+699。 将会造成segemaent fault.
      因此需要偏移 一个width:

      
      	int x = point.x();
      	int y = point.y();
      	if (x < 0 || x >= width ||               //由此可以看出坐标应在[0, width) 区间中
              y < 0 || y >= height) return;
      	auto ind = (height - y - 1) * width + x;
      	frame_buf[ind] = color;
      
    • #9018 Score: 0
      Arika Hoshino
      Participant
      3 pts

      这个据助教说在新版框架已经修复了,这个问题去年就有人提过了

      作业1代码框架有一处crash bug

Viewing 1 reply thread
  • You must be logged in to reply to this topic.