我将我的光线跟踪器迁移到C#和WPF,但我遇到了最简单的问题:如何在画布或位图上显示每个像素(或线)。
我希望能够在完成后看到每个新像素(或至少每条完成的线条),而不是等到整个图像被创建完毕。
与许多RayTracers一样,我有一个中央循环,它可以扫描'屏幕:
for(int y = 0; y < height; y++)
{
for(int x = 0; x < width; x++)
{
pixelRGB = SendRay(...);
// PLEASE help me update the image here ! :-)
DrawPixelAndLetTheUserSeeIt();
}
}
我尝试过使用WritableBitmap或直接写入画布,但是 图像未经更新/显示,直到整个循环结束。
我怀疑是与线程有关,但我无法绕过它。
答案 0 :(得分:0)
我对WPF一点都不熟悉,所以如果我偏离主题,请原谅 这里可能有一些双缓冲会阻止您控制何时有效地完成图形更新?
如果是这样,您可能想要触发将缓冲区交换到图形界面。