资源简介
使用光线跟踪算法实现的简单真实感场景,包括面,球基本元素。

代码片段和文件信息
/******************************************************************************
Author: Xiaoqiang ding
Email: xiaoqiangding@126.com
******************************************************************************/
#include “declares.h“
HWND hWnd;
BITMAPINFO bmpInfo;
HDC hDC;
COLOR32 buffer[SCREEN_HEIGHT*SCREEN_WIDTH];
CRayTracer* tracer = 0;
LRESULT CALLBACK WndProc(HWND hWnd UINT message WPARAM wParam LPARAM lParam);
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE hInstance int nCmdShow);
int APIENTRY WinMain(HINSTANCE hInstanceHINSTANCE hPrevInstanceLPSTR lpCmdLineint nCmdShow)
{
MyRegisterClass(hInstance);
if (!InitInstance (hInstance nCmdShow))
{
return FALSE;
}
ZeroMemory(&bmpInfo sizeof(bmpInfo));
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpInfo.bmiHeader.biPlanes = 1;
bmpInfo.bmiHeader.biBitCount = 32;
bmpInfo.bmiHeader.biCompression = BI_RGB;
bmpInfo.bmiHeader.biWidth = SCREEN_WIDTH;
bmpInfo.bmiHeader.biHeight = -SCREEN_HEIGHT;
hDC = GetDC(hWnd);
tracer = new CRayTracer();
tracer->GetScene()->InitScene();
tracer->SetBuffer(buffer SCREEN_WIDTH SCREEN_HEIGHT);
MSG message;
tracer->InitRender();
while(1)
{
if(tracer->Render())
tracer->InitRender();
while(PeekMessage(&message hWnd 0 0 PM_REMOVE))
{
TranslateMessage(&message );
DispatchMessage(&message );
}
StretchDIBits(hDC 0 0 SCREEN_WIDTH SCREEN_HEIGHT 0 0 SCREEN_WIDTH SCREEN_HEIGHT buffer &bmpInfo DIB_RGB_COLORS SRCCOPY);
}
return 1;
}
///////////////////////////////////////////////////////////////////////////////
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = NULL;
wcex.hCursor = NULL;
wcex.hCursor = LoadCursor(NULL IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = “Raytracer“;
wcex.hIconSm = NULL;
return RegisterClassEx(&wcex);
}
///////////////////////////////////////////////////////////////////////////////
BOOL InitInstance(HINSTANCE hInstance int nCmdShow)
{
// hInst = hInstance;
// make the window show at the center of the screen and the client area size is 800*600
RECT rect;
rect.left = 0;
rect.top = 0;
rect.right = SCREEN_WIDTH;
rect.bottom = SCREEN_HEIGHT;
AdjustWindowRect(&rect WS_POPUP | WS_SYSMENU | WS_CAPTION NULL);
int windowWidth = rect.right - rect.left;
int windowHeight = rect.bottom - rect.top;
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
int screenHeight = GetSystemMetrics(SM_CYSCREEN);
int windowLeft = (screenWidth - windowWidth) / 2;
int windowTop = (screenHeight - windowHeight) / 2;
hWnd = CreateWindow(“R
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16796 2012-04-16 15:35 Raytracer\Debug\main.obj
文件 17973 2012-04-16 15:05 Raytracer\Debug\material.obj
文件 15790 2012-04-16 15:05 Raytracer\Debug\plane.obj
文件 3054 2012-04-11 15:55 Raytracer\Debug\Point3.obj
文件 15897 2012-04-16 15:05 Raytracer\Debug\primitive.obj
文件 13512 2012-04-16 15:05 Raytracer\Debug\ray.obj
文件 245814 2012-04-16 15:35 Raytracer\Debug\Raytracer.exe
文件 278852 2012-04-16 15:35 Raytracer\Debug\Raytracer.ilk
文件 23028 2012-04-16 15:34 Raytracer\Debug\raytracer.obj
文件 3589984 2012-04-16 15:05 Raytracer\Debug\Raytracer.pch
文件 574464 2012-04-16 15:35 Raytracer\Debug\Raytracer.pdb
文件 19345 2012-04-16 15:05 Raytracer\Debug\scene.obj
文件 16653 2012-04-16 15:05 Raytracer\Debug\sphere.obj
文件 11979 2012-04-14 15:46 Raytracer\Debug\surface.obj
文件 156672 2012-04-16 15:35 Raytracer\Debug\vc60.idb
文件 77824 2012-04-16 15:35 Raytracer\Debug\vc60.pdb
文件 21321 2012-04-16 15:05 Raytracer\Debug\vector3.obj
文件 520 2012-04-16 10:44 Raytracer\declares.h
文件 4365 2012-04-16 15:35 Raytracer\main.cpp
文件 1132 2012-04-26 16:37 Raytracer\material.cpp
文件 636 2012-04-13 15:30 Raytracer\material.h
文件 737 2012-04-14 21:51 Raytracer\plane.cpp
文件 340 2012-04-14 21:23 Raytracer\Plane.h
文件 625 2012-04-16 11:27 Raytracer\primitive.cpp
文件 515 2012-04-16 11:27 Raytracer\primitive.h
文件 497 2012-04-14 21:51 Raytracer\ray.cpp
文件 317 2012-04-16 10:33 Raytracer\ray.h
文件 4699 2012-04-28 10:21 Raytracer\raytracer.cpp
文件 5012 2012-04-14 21:22 Raytracer\Raytracer.dsp
文件 526 2012-04-11 15:34 Raytracer\Raytracer.dsw
............此处省略28个文件信息
- 上一篇:dialog + recycleVIew
- 下一篇:ios 仿今日头条 网易新闻源码
相关资源
- 计算机图形学 边填充算法实现代码
- 计算机图形学课设 画板
- 基于OPENGL的光线跟踪源代码368758
- 简易绘图程序(计算机图形学课程设
- 计算机图形学(openGL)代码
- 图形学集成程序dda、中点算法、多边
- 计算机图形实验(哈尔滨工程大学)
- 计算机图形学-全.rar
- 图形学 - OpenGL实现3种三维茶壶显示源
- 警察抓小偷游戏 x86版
- 7-Uath茶壶
- 计算机图形学考试试卷试题6套含3套的
- GPU精粹1-中文版.pdf《GPU精粹:实时图形
- 计算机图形学 基于3D图形开发技术
- 3D游戏与计算机图形学中的数学方法
- 虚拟现实技术文献英文
- 华南理工大学软件学院计算机图形学
- GPU+编程与CG+语言之阳春白雪下里巴人
- Hust图形学作业
- 计算机图形学实验 opengl实现太阳系运
- 中国科学技术大学计算机图形学大作
- 计算机图形学的实习
- 计算机图形大作业opengl-物联网.rar
- 计算机图形学 z-buffer
- 计算机图形学经典论文计算机图形学
- 计算机图形学几何工具算法详解
- 图形学,利用OpenGL函数进行鼠标、键
- 广东工业大学 各年 计算机图形学最全
- 交互式计算机图形学 基于WEBGL的自顶
- OpenGL实现画球体算法的源码
评论
共有 条评论