資源簡介
使用光線跟蹤算法實現的簡單真實感場景,包括面,球基本元素。

代碼片段和文件信息
/******************************************************************************
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 仿今日頭條 網易新聞源碼
評論
共有 條評論