光线追踪源程序
一个光线追踪的源程序,有助于了解相关的渲染技术
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-04-09 16:26 Raytracer
目录 0 2013-04-09 16:26 RaytracerDebug
文件 11740 2012-11-12 09:30 RaytracerDebugBuildLog.htm
文件 3054 2012-04-11 15:55 RaytracerDebugPoint3.obj
文件 411136 2012-11-12 09:30 RaytracerDebugRaytracer.exe
文件 406 2012-11-12 09:30 RaytracerDebugRaytracer.exe.embed.manifest
文件 472 2012-11-12 09:30 RaytracerDebugRaytracer.exe.embed.manifest.res
文件 381 2012-11-12 09:30 RaytracerDebugRaytracer.exe.intermediate.manifest
文件 278852 2012-11-12 09:30 RaytracerDebugRaytracer.ilk
文件 2157568 2012-11-12 09:30 RaytracerDebugRaytracer.pdb
文件 29477 2012-11-12 09:30 RaytracerDebugmain.obj
文件 29478 2012-11-12 09:30 RaytracerDebugmaterial.obj
文件 65 2012-11-12 09:30 RaytracerDebugmt.dep
文件 28856 2012-11-12 09:30 RaytracerDebugplane.obj
文件 28089 2012-11-12 09:30 RaytracerDebugprimitive.obj
文件 24142 2012-11-12 09:30 RaytracerDebug
ay.obj
文件 38724 2012-11-12 09:30 RaytracerDebug
aytracer.obj
文件 37700 2012-11-12 09:30 RaytracerDebugscene.obj
文件 31298 2012-11-12 09:30 RaytracerDebugsphere.obj
文件 11979 2012-04-14 15:46 RaytracerDebugsurface.obj
文件 156672 2012-04-16 15:35 RaytracerDebugvc60.idb
文件 77824 2012-04-16 15:35 RaytracerDebugvc60.pdb
文件 486400 2012-11-12 09:30 RaytracerDebugvc90.idb
文件 118784 2012-11-12 09:30 RaytracerDebugvc90.pdb
文件 33013 2012-11-12 09:30 RaytracerDebugvector3.obj
文件 340 2012-04-14 21:23 RaytracerPlane.h
文件 5012 2012-04-14 21:22 RaytracerRaytracer.dsp
文件 526 2012-04-11 15:34 RaytracerRaytracer.dsw
文件 7605248 2013-03-06 08:59 RaytracerRaytracer.ncb
文件 52736 2012-04-28 10:22 RaytracerRaytracer.opt
文件 1321 2012-04-28 10:21 RaytracerRaytracer.plg
............此处省略33个文件信息
/******************************************************************************
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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-04-09 16:26 Raytracer
目录 0 2013-04-09 16:26 RaytracerDebug
文件 11740 2012-11-12 09:30 RaytracerDebugBuildLog.htm
文件 3054 2012-04-11 15:55 RaytracerDebugPoint3.obj
文件 411136 2012-11-12 09:30 RaytracerDebugRaytracer.exe
文件 406 2012-11-12 09:30 RaytracerDebugRaytracer.exe.em
文件 472 2012-11-12 09:30 RaytracerDebugRaytracer.exe.em
文件 381 2012-11-12 09:30 RaytracerDebugRaytracer.exe.intermediate.manifest
文件 278852 2012-11-12 09:30 RaytracerDebugRaytracer.ilk
文件 2157568 2012-11-12 09:30 RaytracerDebugRaytracer.pdb
文件 29477 2012-11-12 09:30 RaytracerDebugmain.obj
文件 29478 2012-11-12 09:30 RaytracerDebugmaterial.obj
文件 65 2012-11-12 09:30 RaytracerDebugmt.dep
文件 28856 2012-11-12 09:30 RaytracerDebugplane.obj
文件 28089 2012-11-12 09:30 RaytracerDebugprimitive.obj
文件 24142 2012-11-12 09:30 RaytracerDebug
ay.obj
文件 38724 2012-11-12 09:30 RaytracerDebug
aytracer.obj
文件 37700 2012-11-12 09:30 RaytracerDebugscene.obj
文件 31298 2012-11-12 09:30 RaytracerDebugsphere.obj
文件 11979 2012-04-14 15:46 RaytracerDebugsurface.obj
文件 156672 2012-04-16 15:35 RaytracerDebugvc60.idb
文件 77824 2012-04-16 15:35 RaytracerDebugvc60.pdb
文件 486400 2012-11-12 09:30 RaytracerDebugvc90.idb
文件 118784 2012-11-12 09:30 RaytracerDebugvc90.pdb
文件 33013 2012-11-12 09:30 RaytracerDebugvector3.obj
文件 340 2012-04-14 21:23 RaytracerPlane.h
文件 5012 2012-04-14 21:22 RaytracerRaytracer.dsp
文件 526 2012-04-11 15:34 RaytracerRaytracer.dsw
文件 7605248 2013-03-06 08:59 RaytracerRaytracer.ncb
文件 52736 2012-04-28 10:22 RaytracerRaytracer.opt
文件 1321 2012-04-28 10:21 RaytracerRaytracer.plg
............此处省略33个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)