렌더러를 시작할 때마다 이미지를 볼 수 있는 방법이 필요합니다. 가장 간단한 방법은 파일에 작성하는 것입니다. 문제는 형식이 너무 많다는 것입니다. 그 중 많은 것들이 복잡합니다. 저는 항상 평문 ppm 파일로 시작합니다. 다음은 Wikipedia의 좋은 설명입니다:
그림 1: PPM 예제

이러한 것을 출력하는 C++ 코드를 만들어 봅시다:
#include <iostream>
int main()
{
// Image
int ImageWidth = 256;
int ImageHeight = 256;
// Render
std::cout << "P3\\n" << ImageWidth << ' ' << ImageHeight << "\\n255\\n";
for (int j = 0; j < ImageHeight; j++)
{
for (int i = 0; i < ImageWidth; i++)
{
auto r = double(i) / (ImageWidth - 1);
auto g = double(j) / (ImageHeight - 1);
auto b = 0.0;
int ir = int(255.999 * r);
int ig = int(255.999 * g);
int ib = int(255.999 * b);
std::cout << ir << ' ' << ig << ' ' << ib << '\\n';
}
}
return 0;
}
리스트 1: [main.cc] 첫 번째 이미지 생성
이 코드에서 주목해야 할 몇 가지 사항이 있습니다:
파일이 표준 출력 스트림에 작성되기 때문에 이를 이미지 파일로 리디렉션해야 합니다. 일반적으로 이는 명령줄에서 리디렉션 연산자를 사용하여 수행됩니다.
우리는 기존 레이트레이싱 환경과 다르게 window환경에서 visual studio community IDE 를 이용하여 빌드할 예정입니다. 이예제가 작성된 시점에는 2022 버전을 사용 하였고 추후 2026이 쿠다 커널을 지원해줄때 언제든지 마이그레이션을 진행해도 좋습니다.
그런 다음 새로 빌드한 프로그램을 다음과 같이 실행합니다: 이는 이미지 뷰어로 볼수 있는 ppm 파일로 바꿔줍니다.
build\\Debug\\inOneWeekend.exe > image.ppm