《一週學完光線追蹤》學習 一 建立工程文件

蒙特卡洛光線追蹤技術系列 見 蒙特卡洛光線追蹤技術

首先我們需要先寫個能顯示圖片的程序,用來顯示渲染的結果(顯示像素圖)。

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工程 下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章