蒙特卡洛光线追踪技术系列 见 蒙特卡洛光线追踪技术
首先我们需要先写个能显示图片的程序,用来显示渲染的结果(显示像素图)。
emmm,用书上使用的解读器也行,用opengl也行,用VTK也行,用Qt插件也行,为了方便起见这里就用opengl吧。
#define GLUT_NO_LIB_PRAGMA
#pragma comment (lib, "opengl32.lib") /* link with Microsoft OpenGL lib */
#pragma comment (lib, "glut64.lib") /* link with Win64 GLUT lib */
#include <stdlib.h>
#include "glut.h"
#include "glext.h"
#define WIDTH 512
#define HEIGHT 512
unsigned char *Pixels;
void Draw(void) {
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glDrawPixels(WIDTH, HEIGHT, GL_RGBA, GL_UNSIGNED_BYTE, Pixels);
glFlush();
}
int main() {
Pixels = (unsigned char*)malloc(WIDTH*HEIGHT*sizeof(unsigned char)*4);
for (int i = 0;i < WIDTH;i++) {
for (int j = 0;j < HEIGHT;j++) {
int offset = (WIDTH*i + j) * 4;
Pixels[offset + 0] = 255;
Pixels[offset + 1] = 0;
Pixels[offset + 2] = 0;
Pixels[offset + 3] = 0;
}
}
int argc = 0;char *argv = {""};
glutInit(&argc, &argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize(WIDTH, HEIGHT);
glutCreateWindow("bitmap");
glutDisplayFunc(Draw);
glutMainLoop();
}
使用x64来编译。效果如图:
本工程文件包括里面的OpenGL库我已经放在了工程里,可以去 RayTracer工程 下载