资源简介
光纤跟踪算法的实现,基于C语言的一个程序,可以自己移动,非常好用
代码片段和文件信息
#include
#include
#include
#include “raytracer/colour.h“
#include “raytracer/Material/material.h“
#include “raytracer/Geometry/rayplane.h“
#include “raytracer/Geometry/raysphere.h“
#include “raytracer/object.h“
#include “raytracer/light.h“
#include “scene.h“
#define defSCREEN_WIDTH 700
#define defSCREEN_HEIGHT 700
float lx=50;
//屏幕像素数组
GLubyte g_abyScreenImage[defSCREEN_HEIGHT][defSCREEN_WIDTH][3];
Scene s(defSCREEN_WIDTHdefSCREEN_HEIGHT);
void createScene(){
//添加物体和光源
s.clear();
s.setCamPos(0340);
object*sphere;
Light*light;
float planedist=-10;
//地面
{
Material mat(Colour(0.6f0.6f0.6f)Colour(0.2f0.2f0.2f)Colour(0.5f0.5f0.5f)100.0f);
RayPlane* planegeom = new RayPlane(Plane(Vec3(010) planedist));
object* groundplane = new object(mat planegeom);
s.insertobject(groundplane);
}
/*{
Material mat(Colour(0.05f0.05f0.05f)Colour(0.0f0.0f0.0f)Colour(1.0f1.0f1.0f)200.0f);
RayPlane* planegeom = new RayPlane(Plane(Vec3(100) -30));
object* groundplane = new object(mat planegeom);
s.insertobject(groundplane);
}*/
//白球
{
Material mat(Colour(0.0f0.0f0.0f)Colour(0.6f0.6f0.6f)Colour(0.6f0.6f0.6f)100.0f);
RaySphere* geom = new RaySphere(Vec3(0planedist+9-35) 3);
sphere = new object(mat geom);
s.insertobject(sphere);
}
//蓝球
{
Material mat(Colour(0.0f0.0f0.0f)Colour(0.0f0.0f0.6f)Colour(0.5f0.5f0.6f)100.0f);
RaySphere* geom = new RaySphere(Vec3(-7planedist+14-30) 4);
sphere = new object(mat geom);
s.insertobject(sphere);
}
//红球
{
Material mat(Colour(0.0f0.0f0.0f)Colour(0.6f0.0f0.0f)Colour(0.6f0.50.5f)100.0f);
RaySphere* geom = new RaySphere(Vec3(10planedist+12-40)4);
sphere = new object(mat geom);
s.insertobject(sphere);
}
//绿球
{
Material mat(Colour(0.0f0.0f0.0f)Colour(0.0f0.6f0.0f)Colour(0.5f0.6f0.5f)100.0f);
RaySphere* geom = new RaySphere(Vec3(5planedist+7-32) 2);
sphere = new object(mat geom);
s.insertobject(sphere);
}
//光源
light = new Light(Vec3(lx10020) Colour(1 1 1) );
s.insertLight(light);
light = new Light(Vec3(0320) Colour(0.4 0.4 0.4) );
s.insertLight(light);
}
void myInit(){
s.setTraceNum(4);
createScene();
s.draw();
}
//初始化屏幕像素数组为全黑
void InitScreenImage()
{
int iHeightiWidth;
int iColorRediColorGreeniColorBlue;
for(iHeight=0;iHeight for(iWidth=0;iWidth iColorRed=0;
iColorGreen=0;
iColorBlue=0;
g_abyScreenImage[iHeight][iWidth][0]=(GLubyte)iColorRed;
g_abyScreenImage[iHeight][iWidth][1]=(GLubyte)iColorGreen;
g_abyScreenImage[iHeight][iWidth][2]=(GLubyte)iColorBlue;
}
}
}
//改变屏幕像素数组
void ModifyScreenImage()
{
for(int i=0;i for(int j=0;j
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 544984 2009-12-09 11:07 光线跟踪\OpenGL\debug\OpenGL.ilk
文件 7054 2009-12-09 11:07 光线跟踪\OpenGL\OpenGL\Debug\BuildLog.htm
文件 2023 2009-08-21 14:54 光线跟踪\OpenGL\OpenGL\graphics2d\graphics2d.cpp
文件 2270 2004-04-15 03:06 光线跟踪\OpenGL\OpenGL\graphics2d\graphics2d.h
文件 4939 2010-01-08 13:09 光线跟踪\OpenGL\OpenGL\main.cpp
文件 2348 2009-08-28 18:41 光线跟踪\OpenGL\OpenGL\maths\mathstypes.h
文件 4896 2009-10-11 22:34 光线跟踪\OpenGL\OpenGL\maths\plane.h
文件 5958 2009-08-21 14:54 光线跟踪\OpenGL\OpenGL\maths\plane2.h
文件 4737 2009-11-29 14:51 光线跟踪\OpenGL\OpenGL\maths\vec2.h
文件 10760 2010-01-08 12:46 光线跟踪\OpenGL\OpenGL\maths\vec3.h
文件 5298 2010-01-07 00:06 光线跟踪\OpenGL\OpenGL\OpenGL.vcproj
文件 1427 2009-12-09 12:12 光线跟踪\OpenGL\OpenGL\OpenGL.vcproj.8D36904777A6491.Administrator.user
文件 1427 2009-08-24 11:06 光线跟踪\OpenGL\OpenGL\OpenGL.vcproj.CHINA-0FA973DF4.Administrator.user
文件 1421 2010-01-15 13:07 光线跟踪\OpenGL\OpenGL\OpenGL.vcproj.DHCHENSHUHUA.Administrator.user
文件 1427 2009-08-21 14:59 光线跟踪\OpenGL\OpenGL\OpenGL.vcproj.PC-200903061639.Administrator.user
文件 1409 2010-01-05 18:04 光线跟踪\OpenGL\OpenGL\OpenGL.vcproj.user41.user.user
文件 1415 2010-01-05 19:39 光线跟踪\OpenGL\OpenGL\OpenGL.vcproj.傻Paul-PC.傻Paul.user
文件 2649 2010-01-07 00:51 光线跟踪\OpenGL\OpenGL\raytracer\colour.h
文件 645 2009-10-11 20:22 光线跟踪\OpenGL\OpenGL\raytracer\Geometry\geometry.h
文件 403 2009-10-12 19:34 光线跟踪\OpenGL\OpenGL\raytracer\Geometry\rayplane.cpp
文件 826 2009-10-11 20:21 光线跟踪\OpenGL\OpenGL\raytracer\Geometry\rayplane.h
文件 742 2009-10-11 22:36 光线跟踪\OpenGL\OpenGL\raytracer\Geometry\raysphere.cpp
文件 979 2009-10-11 20:21 光线跟踪\OpenGL\OpenGL\raytracer\Geometry\raysphere.h
文件 587 2009-11-29 15:18 光线跟踪\OpenGL\OpenGL\raytracer\light.h
文件 248 2009-10-11 22:13 光线跟踪\OpenGL\OpenGL\raytracer\Material\material.cpp
文件 808 2009-10-11 22:13 光线跟踪\OpenGL\OpenGL\raytracer\Material\material.h
文件 284 2009-10-11 22:32 光线跟踪\OpenGL\OpenGL\raytracer\ob
文件 650 2009-10-11 22:33 光线跟踪\OpenGL\OpenGL\raytracer\ob
文件 481 2009-08-28 17:04 光线跟踪\OpenGL\OpenGL\raytracer\ray.h
文件 4572 2010-01-15 13:07 光线跟踪\OpenGL\OpenGL\raytracer\world.cpp
............此处省略39个文件信息
评论
共有 条评论