蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術
首先我們需要先寫個能顯示圖片的程序,用來顯示渲染的結果(顯示像素圖)。
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工程 下載