资源简介
本项目代码基于VC++实现了对一个球体的光线跟踪渲染算法,包含环境光,漫反射和镜面反射。渲染结束后输出每个像素的RGB值,并用OPenGL的库函数加以显示。要成功运行本历程须进行 OPenGL的环境配置。不过,即便不能运行,核心部分的代码也是完全正确的,有详细注释,对初学者有很大参考价值。
代码片段和文件信息
#include“DirLight.h“;
#include
double max(double a1double a2)
{
if(a1>a2)
return a1;
else
return a2;
}
DirLight::DirLight()
{
Position=vector(00260);
Direction=vector(-1-10);
Direction.normailize();
Ambient=vector(0.20.20.2);
Diffuse=vector(0.90.90.9);
Specular=vector(1.01.01.0);
}
DirLight::DirLight(vector posvector dirvector abtvector dfsvector spl)
{
Position=pos;
Direction=dir;
Ambient=abt;
Diffuse=dfs;
Specular=spl;
}
DirLight::~DirLight()
{}
void DirLight::setPosition(vector p)
{
Position=p;
}
void DirLight::setDirection(vector dir)
{
Direction=dir;
}
void DirLight::setAmbient(vector a)
{
Ambient=a;
}
void DirLight::setDiffuse(vector d)
{
Diffuse=d;
}
void DirLight::setSpecular(vector s)
{
Specular=s;
}
vector DirLight::getPosition()
{
return Position;
}
vector DirLight::getDirection()
{
return Direction;
}
vector DirLight::getAmbient()
{
return Ambient;
}
vector DirLight::getDiffuse()
{
return Diffuse;
}
vector DirLight::getSpecular()
{
return Specular;
}
vector DirLight::figAmbient(vector _material_Ka)
{
return Ambient*_material_Ka;
}
vector DirLight::figDiffuse(vector _Nvector _Lvector _material_Kd)
{
/*vector IdKd=Diffuse*_material_Kd;
double Ndotl=max(VecpmulVec(_N_L)0.0);
return IdKd*Ndotl;*/
double dot=VecpmulVec(_N_L)*0.2;
vector diffuse=vector(110)*vector(111)*dot;
return diffuse;
}
vector DirLight::figSpecular(vector _Nvector _Lvector _Vvector _material_Ksdouble _shininess)
{
/*vector IsKs=Specular*_material_Ks;
vector H=_L+_V;
H.normailize();
double NdotL= max(VecpmulVec(_N_L)0.0);
double NdotH=pow(max(VecpmulVec(_NH)0.0)_shininess);
if(NdotL<=0)
NdotH=0;
return IsKs*NdotH;*/
vector _R=_L-_N*VecpmulVec(_N_L)*2;
double dot=VecpmulVec(_V_R);
double spec=pow(dot20)*0.6;
vector specular=vector(111)*spec;
return specular;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-02-17 14:39 成功_对一个球的光线渲染实验\
目录 0 2012-08-22 15:25 成功_对一个球的光线渲染实验\Debug\
文件 70144 2012-12-29 16:08 成功_对一个球的光线渲染实验\Debug\对一个球的光线渲染实验.exe
文件 507412 2012-12-29 16:08 成功_对一个球的光线渲染实验\Debug\对一个球的光线渲染实验.ilk
文件 920576 2012-12-29 16:08 成功_对一个球的光线渲染实验\Debug\对一个球的光线渲染实验.pdb
目录 0 2013-02-17 14:38 成功_对一个球的光线渲染实验\ipch\
目录 0 2013-02-17 14:38 成功_对一个球的光线渲染实验\ipch\对一个球的光线渲染实验-8b37c774\
文件 15269888 2013-02-17 14:38 成功_对一个球的光线渲染实验\ipch\对一个球的光线渲染实验-8b37c774\对一个球的光线渲染实验-233a3d8d.ipch
目录 0 2012-08-22 15:25 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\
目录 0 2013-02-17 14:39 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\
文件 96734 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\CL.read.1.tlog
文件 19324 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\CL.write.1.tlog
文件 33700 2012-09-16 14:59 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\DirLight.obj
文件 53991 2012-09-16 14:59 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\Ray.obj
文件 17518 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\Raytracer.obj
文件 14591 2012-09-16 14:59 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\Sphere.obj
文件 13982 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\cl.command.1.tlog
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
文件 2 2012-12-29 16:08 成功_对一个球的光线渲染实验\对一个球的光线渲染实验\Debug\li
............此处省略68个文件信息
- 上一篇:Dlg_OpenGL
- 下一篇:STM32 USB BULK
相关资源
- 计算机图形学实践教程随书源代码
- 计算机图形学实践教程 vc++ 案例 源码
- 孔令德 计算机图形学基础教程visual
- 计算机图形学实践教程第2版源程序
- MFC实现Koch曲线的绘制
- 计算机图形学(MFC)-直线段裁剪
- 计算机图形学MFC-双缓冲二维图形几何
- 计算机图形学 猫变虎作业
- 计算机图形学作业
- 多个光线投射算法ray casting和光线跟踪
- 计算机图形学基础教程Visual C++版 孔令
- C++ 孔令德计算机图形学习题答案源代
- 计算机图形学+配书源代码
- 计算机图形学原理及算法教程(Visu
- C++光线跟踪
- OpenGL计算机图形学2D太阳系模型
- c++ 直线裁剪、画矩形等(graphics)
- 计算机图形学图形剪裁与变换算法的
- 计算机图形学简单图像设计c++
- 图形学课程作业-mfc.zip
- 计算机图形学原理及实践——C语言描
- 计算机图形学基础教程 VisualC++版 习
- 计算机图形学(MFC)-多边形平滑填充
- 计算机图形学基础教程(Visual C++版)
- 计算机图形学基础教程Visual C++版第二
- 计算机图形学(MFC)-Bezier曲面
- C语言画柱状图,数据可以自行输入
- 计算机图形学 图形几何变换 程序运行
- 计算机图形学基础—消隐
- 《计算机图形学》实验报告C++
评论
共有 条评论