Ray tracing in a weekend(一)
阿新 • • 發佈:2018-12-11
#include<iostream> #include<fstream> using namespace std; int main() { int nx = 200;//200列 int ny = 100;//100行 ofstream out("d:\\theFirstPpm.txt"); out << "P3\n" << nx << " " << ny << "\n255" << endl; for (int j = ny - 1;j >= 0;j--)//行從上到下 { for (int i = 0;i < nx;i++)//列從左到右 { //此時i、j、nx、ny在參與除法運算時一定要強制轉換為float型別,因為整型除法所得結果依然是整型,直接掐去小數部分,造成數值上的偏差 float r = float(i) / float(nx);//從左到右,黑變紅 float g = float(j) / float(ny);//從上到下,綠變黑 float b = 0.2;//藍色分量固定 //右上角為黃色,且i、g、b均為0-1之間的分數 //最後用於輸出ppm影象的實際是介於0和255的int值 int ir = int(255.99*r); int ig = int(255.99*g); int ib = int(255.99*b); out << ir << " " << ig << " " << ib << endl; } } return 0; }
執行後會在theFirstPpm.txt中寫入ppm影象的資訊,再用Xnview軟體開啟將其開啟即可看到渲染出的影象。