亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? demoii11_1.cpp

?? 3D游戲編程大師技巧第十一章的源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// DEMOII11_1.CPP - Z buffering demo 
// READ THIS!
// To compile make sure to include DDRAW.LIB, DSOUND.LIB,
// DINPUT.LIB, DINPUT8.LIB, WINMM.LIB in the project link list, and of course 
// the C++ source modules T3DLIB1-9.CPP and the headers T3DLIB1-9.H
// be in the working directory of the compiler

// INCLUDES ///////////////////////////////////////////////

#define DEBUG_ON

#define INITGUID       // make sure al the COM interfaces are available
                       // instead of this you can include the .LIB file
                       // DXGUID.LIB

#define WIN32_LEAN_AND_MEAN  

#include <windows.h>   // include important windows stuff
#include <windowsx.h> 
#include <mmsystem.h>
#include <iostream.h> // include important C/C++ stuff
#include <conio.h> 
#include <stdlib.h> 
#include <malloc.h> 
#include <memory.h>
#include <string.h>   
#include <stdarg.h>
#include <stdio.h>    
#include <math.h>
#include <io.h>
#include <fcntl.h>

#include <ddraw.h>  // directX includes 
#include <dsound.h>
#include <dmksctrl.h>
#include <dmusici.h>
#include <dmusicc.h>
#include <dmusicf.h>
#include <dinput.h>
#include "T3DLIB1.h" // game library includes
#include "T3DLIB2.h"
#include "T3DLIB3.h"
#include "T3DLIB4.h"
#include "T3DLIB5.h"
#include "T3DLIB6.h"
#include "T3DLIB7.h"
#include "T3DLIB8.h"
#include "T3DLIB9.h"

// DEFINES ////////////////////////////////////////////////

// defines for windows interface
#define WINDOW_CLASS_NAME "WIN3DCLASS"  // class name
#define WINDOW_TITLE      "T3D Graphics Console Ver 2.0"
#define WINDOW_WIDTH      800  // size of window
#define WINDOW_HEIGHT     600

#define WINDOW_BPP        16    // bitdepth of window (8,16,24 etc.)
                                // note: if windowed and not
                                // fullscreen then bitdepth must
                                // be same as system bitdepth
                                // also if 8-bit the a pallete
                                // is created and attached
   
#define WINDOWED_APP      0    // 0 not windowed, 1 windowed 

// create some constants for ease of access
#define AMBIENT_LIGHT_INDEX   0 // ambient light index
#define INFINITE_LIGHT_INDEX  1 // infinite light index
#define POINT_LIGHT_INDEX     2 // point light index
#define SPOT_LIGHT1_INDEX     4 // point light index
#define SPOT_LIGHT2_INDEX     3 // spot light index

#define CAM_DECEL            (.25)   // deceleration/friction
#define MAX_SPEED             20
#define NUM_OBJECTS           5      // number of objects system loads
#define NUM_SCENE_OBJECTS     500    // number of scenery objects
#define UNIVERSE_RADIUS       2000   // size of universe

// PROTOTYPES /////////////////////////////////////////////

// game console
int Game_Init(void *parms=NULL);
int Game_Shutdown(void *parms=NULL);
int Game_Main(void *parms=NULL);

// GLOBALS ////////////////////////////////////////////////

HWND main_window_handle           = NULL; // save the window handle
HINSTANCE main_instance           = NULL; // save the instance
char buffer[2048];                        // used to print text

// initialize camera position and direction
POINT4D  cam_pos    = {0,0,0,1};
POINT4D  cam_target = {0,0,0,1};
VECTOR4D cam_dir    = {0,0,0,1};

// all your initialization code goes here...
VECTOR4D vscale={1.0,1.0,1.0,1}, 
         vpos = {0,0,150,1}, 
         vrot = {0,0,0,1};

CAM4DV1         cam;                    // the single camera
OBJECT4DV2_PTR  obj_work;               // pointer to active working object
OBJECT4DV2      obj_array[NUM_OBJECTS], // array of objects 
                obj_scene;              // general scenery object
               
// filenames of objects to load
char *object_filenames[NUM_OBJECTS] = { "cube_flat_01.cob",
                                        "cube_gouraud_01.cob",
                                        "cube_flat_textured_01.cob",
                                        "sphere02.cob",
                                        "sphere03.cob",
                                      };

int curr_object = 2;                  // currently active object index

POINT4D         scene_objects[NUM_SCENE_OBJECTS]; // positions of scenery objects

RENDERLIST4DV2  rend_list;      // the render list
RGBAV1 white, gray, black, red, green, blue; // general colors

// physical model defines
float cam_speed  = 0;       // speed of the camera/jeep

ZBUFFERV1 zbuffer;          // out little z buffer!

// FUNCTIONS //////////////////////////////////////////////

LRESULT CALLBACK WindowProc(HWND hwnd, 
						    UINT msg, 
                            WPARAM wparam, 
                            LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT	ps;		   // used in WM_PAINT
HDC			hdc;	   // handle to a device context

// what is the message 
switch(msg)
	{	
	case WM_CREATE: 
        {
		// do initialization stuff here
		return(0);
		} break;

    case WM_PAINT:
         {
         // start painting
         hdc = BeginPaint(hwnd,&ps);

         // end painting
         EndPaint(hwnd,&ps);
         return(0);
        } break;

	case WM_DESTROY: 
		{
		// kill the application			
		PostQuitMessage(0);
		return(0);
		} break;

	default:break;

    } // end switch

// process any messages that we didn't take care of 
return (DefWindowProc(hwnd, msg, wparam, lparam));

} // end WinProc

// WINMAIN ////////////////////////////////////////////////

int WINAPI WinMain(	HINSTANCE hinstance,
					HINSTANCE hprevinstance,
					LPSTR lpcmdline,
					int ncmdshow)
{
// this is the winmain function

WNDCLASS winclass;	// this will hold the class we create
HWND	 hwnd;		// generic window handle
MSG		 msg;		// generic message
HDC      hdc;       // generic dc
PAINTSTRUCT ps;     // generic paintstruct

// first fill in the window class stucture
winclass.style			= CS_DBLCLKS | CS_OWNDC | 
                          CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc	= WindowProc;
winclass.cbClsExtra		= 0;
winclass.cbWndExtra		= 0;
winclass.hInstance		= hinstance;
winclass.hIcon			= LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor		= LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName	= NULL; 
winclass.lpszClassName	= WINDOW_CLASS_NAME;

// register the window class
if (!RegisterClass(&winclass))
	return(0);

// create the window, note the test to see if WINDOWED_APP is
// true to select the appropriate window flags
if (!(hwnd = CreateWindow(WINDOW_CLASS_NAME, // class
						  WINDOW_TITLE,	 // title
						  (WINDOWED_APP ? (WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION) : (WS_POPUP | WS_VISIBLE)),
					 	  0,0,	   // x,y
						  WINDOW_WIDTH,  // width
                          WINDOW_HEIGHT, // height
						  NULL,	   // handle to parent 
						  NULL,	   // handle to menu
						  hinstance,// instance
						  NULL)))	// creation parms
return(0);

// save the window handle and instance in a global
main_window_handle = hwnd;
main_instance      = hinstance;

// resize the window so that client is really width x height
if (WINDOWED_APP)
{
// now resize the window, so the client area is the actual size requested
// since there may be borders and controls if this is going to be a windowed app
// if the app is not windowed then it won't matter
RECT window_rect = {0,0,WINDOW_WIDTH-1,WINDOW_HEIGHT-1};

// make the call to adjust window_rect
AdjustWindowRectEx(&window_rect,
     GetWindowStyle(main_window_handle),
     GetMenu(main_window_handle) != NULL,  
     GetWindowExStyle(main_window_handle));

// save the global client offsets, they are needed in DDraw_Flip()
window_client_x0 = -window_rect.left;
window_client_y0 = -window_rect.top;

// now resize the window with a call to MoveWindow()
MoveWindow(main_window_handle,
           0,                                    // x position
           0,                                    // y position
           window_rect.right - window_rect.left, // width
           window_rect.bottom - window_rect.top, // height
           FALSE);

// show the window, so there's no garbage on first render
ShowWindow(main_window_handle, SW_SHOW);
} // end if windowed

// perform all game console specific initialization
Game_Init();

// disable CTRL-ALT_DEL, ALT_TAB, comment this line out 
// if it causes your system to crash
SystemParametersInfo(SPI_SCREENSAVERRUNNING, TRUE, NULL, 0);

// enter main event loop
while(1)
	{
	if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
		{ 
		// test if this is a quit
        if (msg.message == WM_QUIT)
           break;
	
		// translate any accelerator keys
		TranslateMessage(&msg);

		// send the message to the window proc
		DispatchMessage(&msg);
		} // end if
    
    // main game processing goes here
    Game_Main();

	} // end while

// shutdown game and release all resources
Game_Shutdown();

// enable CTRL-ALT_DEL, ALT_TAB, comment this line out 
// if it causes your system to crash
SystemParametersInfo(SPI_SCREENSAVERRUNNING, FALSE, NULL, 0);

// return to Windows like this
return(msg.wParam);

} // end WinMain

// T3D II GAME PROGRAMMING CONSOLE FUNCTIONS ////////////////

int Game_Init(void *parms)
{
// this function is where you do all the initialization 
// for your game

int index; // looping var

// start up DirectDraw (replace the parms as you desire)
DDraw_Init(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_BPP, WINDOWED_APP);

// initialize directinput
DInput_Init();

// acquire the keyboard 
DInput_Init_Keyboard();

// add calls to acquire other directinput devices here...

// initialize directsound and directmusic
DSound_Init();
DMusic_Init();

// hide the mouse
if (!WINDOWED_APP)
    ShowCursor(FALSE);

// seed random number generator
srand(Start_Clock()); 

Open_Error_File("ERROR.TXT");

// initialize math engine
Build_Sin_Cos_Tables();

// initialize the camera with 90 FOV, normalized coordinates
Init_CAM4DV1(&cam,      // the camera object
             CAM_MODEL_EULER, // the euler model
             &cam_pos,  // initial camera position
             &cam_dir,  // initial camera angles
             &cam_target,      // no target
             15.0,        // near and far clipping planes
             12000.0,
             120.0,      // field of view in degrees
             WINDOW_WIDTH,   // size of final screen viewport
             WINDOW_HEIGHT);

// set a scaling vector
VECTOR4D_INITXYZ(&vscale,20.00,20.00,20.00); 

// load all the objects in
for (int index_obj=0; index_obj < NUM_OBJECTS; index_obj++)
    {
    Load_OBJECT4DV2_COB(&obj_array[index_obj], object_filenames[index_obj],  
                        &vscale, &vpos, &vrot, VERTEX_FLAGS_SWAP_YZ  |
                                               VERTEX_FLAGS_TRANSFORM_LOCAL 
                                               /* VERTEX_FLAGS_TRANSFORM_LOCAL_WORLD*/ );

    } // end for index_obj

// set current object
curr_object = 2;
obj_work = &obj_array[curr_object];

// load in the scenery object that we will place all over the place
Load_OBJECT4DV2_COB(&obj_scene, "cube_gouraud_01.cob",  
                        &vscale, &vpos, &vrot, VERTEX_FLAGS_SWAP_YZ  |
                                               VERTEX_FLAGS_TRANSFORM_LOCAL 
                                               /* VERTEX_FLAGS_TRANSFORM_LOCAL_WORLD*/ );

// position the scenery objects randomly
for (index = 0; index < NUM_SCENE_OBJECTS; index++)
    {
    // randomly position object
    scene_objects[index].x = RAND_RANGE(-UNIVERSE_RADIUS, UNIVERSE_RADIUS);
    scene_objects[index].y = RAND_RANGE(-200, 200);
    scene_objects[index].z = RAND_RANGE(-UNIVERSE_RADIUS, UNIVERSE_RADIUS);
    } // end for

// set up lights
Reset_Lights_LIGHTV2(lights2, MAX_LIGHTS);

// create some working colors
white.rgba = _RGBA32BIT(255,255,255,0);
gray.rgba  = _RGBA32BIT(100,100,100,0);
black.rgba = _RGBA32BIT(0,0,0,0);
red.rgba   = _RGBA32BIT(255,0,0,0);
green.rgba = _RGBA32BIT(0,255,0,0);
blue.rgba  = _RGBA32BIT(0,0,255,0);

// ambient light
Init_Light_LIGHTV2(lights2,               // array of lights to work with
                   AMBIENT_LIGHT_INDEX,   
                   LIGHTV2_STATE_ON,      // turn the light on
                   LIGHTV2_ATTR_AMBIENT,  // ambient light type
                   gray, black, black,    // color for ambient term only
                   NULL, NULL,            // no need for pos or dir
                   0,0,0,                 // no need for attenuation
                   0,0,0);                // spotlight info NA

VECTOR4D dlight_dir = {-1,0,-1,1}; 

// directional light
Init_Light_LIGHTV2(lights2,               // array of lights to work with
                   INFINITE_LIGHT_INDEX,  
                   LIGHTV2_STATE_ON,      // turn the light on
                   LIGHTV2_ATTR_INFINITE, // infinite light type
                   black, gray, black,    // color for diffuse term only
                   NULL, &dlight_dir,     // need direction only
                   0,0,0,                 // no need for attenuation
                   0,0,0);                // spotlight info NA


VECTOR4D plight_pos = {0,200,0,1};

// point light
Init_Light_LIGHTV2(lights2,               // array of lights to work with
                   POINT_LIGHT_INDEX,
                   LIGHTV2_STATE_ON,      // turn the light on
                   LIGHTV2_ATTR_POINT,    // pointlight type
                   black, green, black,    // color for diffuse term only
                   &plight_pos, NULL,     // need pos only
                   0,.002,0,              // linear attenuation only
                   0,0,1);                // spotlight info NA


VECTOR4D slight2_pos = {0,1000,0,1};
VECTOR4D slight2_dir = {-1,0,-1,1};

// spot light2
Init_Light_LIGHTV2(lights2,                  // array of lights to work with
                   SPOT_LIGHT2_INDEX,
                   LIGHTV2_STATE_ON,         // turn the light on
                   LIGHTV2_ATTR_SPOTLIGHT2,  // spot light type 2
                   black, red, black,        // color for diffuse term only
                   &slight2_pos, &slight2_dir, // need pos only
                   0,.001,0,                 // linear attenuation only
                   0,0,1);    


// create lookup for lighting engine
RGB_16_8_IndexedRGB_Table_Builder(DD_PIXEL_FORMAT565,  // format we want to build table for
                                  palette,             // source palette
                                  rgblookup);          // lookup table

// create the z buffer
Create_Zbuffer(&zbuffer,
               WINDOW_WIDTH,
               WINDOW_HEIGHT,
               ZBUFFER_ATTR_32BIT);

// return success
return(1);

} // end Game_Init

///////////////////////////////////////////////////////////

int Game_Shutdown(void *parms)
{
// this function is where you shutdown your game and
// release all resources that you allocated

// shut everything down

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
caoporn国产一区二区| 欧美国产日韩一二三区| 精品福利一区二区三区免费视频| 国产日产欧产精品推荐色 | 婷婷亚洲久悠悠色悠在线播放| 免费一级片91| 色欲综合视频天天天| 久久久久久夜精品精品免费| 丝袜a∨在线一区二区三区不卡| 成人午夜av在线| 日韩欧美一卡二卡| 亚洲国产cao| 色综合久久六月婷婷中文字幕| 欧美精品一区二区三区一线天视频| 夜夜嗨av一区二区三区网页| 成人av集中营| 国产三级一区二区三区| 久久成人免费电影| 91精品国产高清一区二区三区| 亚洲免费观看高清完整版在线 | 日韩av一区二| 欧美日韩精品免费| 日韩毛片在线免费观看| 成人网在线播放| 久久婷婷综合激情| 麻豆精品在线视频| 91麻豆精品国产91久久久久久久久| 亚洲欧美视频在线观看视频| 成人性生交大片免费看视频在线| 精品久久一二三区| 蓝色福利精品导航| 日韩一卡二卡三卡四卡| 日韩高清中文字幕一区| 欧美电影在哪看比较好| 偷窥少妇高潮呻吟av久久免费| 在线亚洲高清视频| 一区二区三区美女| 欧美在线短视频| 五月天激情综合网| 欧美一区二区私人影院日本| 视频在线在亚洲| 日韩免费观看高清完整版在线观看| 热久久一区二区| 日韩亚洲欧美一区二区三区| 日本成人在线电影网| 91精品国产一区二区| 日本成人中文字幕在线视频 | 色综合久久久久久久久| 亚洲人成精品久久久久| 在线亚洲免费视频| 日韩精品视频网站| 精品国产亚洲在线| 不卡的电视剧免费网站有什么| 国产精品国产三级国产aⅴ入口| av中文一区二区三区| 一区二区三区 在线观看视频| 欧美在线免费播放| 视频一区二区不卡| 久久综合久久久久88| 不卡av在线网| 午夜精品福利一区二区蜜股av| 欧美电视剧免费观看| kk眼镜猥琐国模调教系列一区二区| 亚洲综合色丁香婷婷六月图片| 制服丝袜亚洲播放| 国产成人免费xxxxxxxx| 亚洲午夜精品网| 久久嫩草精品久久久久| bt7086福利一区国产| 日韩福利视频导航| 中文字幕中文字幕一区二区| 欧美日韩一区二区三区免费看| 国产一区二区三区电影在线观看| 亚洲三级电影网站| 日韩免费观看高清完整版在线观看| 成人免费av资源| 免费国产亚洲视频| 亚洲精品免费播放| 26uuu精品一区二区在线观看| 色欧美乱欧美15图片| 日韩成人午夜电影| 亚洲视频在线一区观看| 日韩欧美亚洲一区二区| 91啪九色porn原创视频在线观看| 麻豆精品久久精品色综合| 亚洲欧洲国产日本综合| xf在线a精品一区二区视频网站| 91精品91久久久中77777| 国产成人精品免费在线| 日韩电影一区二区三区四区| 自拍视频在线观看一区二区| 久久影视一区二区| 欧美一区二区三区小说| 欧洲国内综合视频| 99久久99久久精品免费观看| 久久成人免费日本黄色| 午夜电影一区二区三区| 亚洲精品日产精品乱码不卡| 国产欧美精品一区| 久久综合久久99| 日韩精品一区在线观看| 91精品婷婷国产综合久久竹菊| 91国在线观看| 91影视在线播放| 成人免费高清在线| 国产精品123| 国产精品性做久久久久久| 蜜乳av一区二区三区| 婷婷夜色潮精品综合在线| 亚洲一区二区欧美日韩 | 国产女人aaa级久久久级| 精品美女在线播放| 日韩免费性生活视频播放| 日韩午夜精品视频| 91精品国产高清一区二区三区| 欧美日韩久久一区| 在线观看91精品国产麻豆| 欧美精品久久99久久在免费线 | 91精品在线免费| 久久婷婷久久一区二区三区| 亚洲色图另类专区| 国产视频911| 欧美性色综合网| 在线成人av影院| 日韩你懂的在线观看| 日韩精品一区二区三区中文精品| 日韩精品一区在线观看| 精品久久免费看| 久久久高清一区二区三区| 国产午夜精品在线观看| 欧美国产丝袜视频| 亚洲欧美激情一区二区| 亚洲超丰满肉感bbw| 美日韩一级片在线观看| 国产一区视频网站| gogo大胆日本视频一区| 婷婷丁香久久五月婷婷| 久久精品久久99精品久久| 色偷偷成人一区二区三区91 | 欧美疯狂做受xxxx富婆| 欧美国产日韩亚洲一区| 欧美高清一级片在线观看| 欧美tk丨vk视频| 国产精品久久久久久久久动漫| 亚洲裸体xxx| 蜜桃久久久久久| 99热这里都是精品| 欧美天堂亚洲电影院在线播放| 欧美sm美女调教| 自拍偷拍亚洲欧美日韩| 日韩不卡手机在线v区| 国产精品小仙女| 欧美日韩国产影片| 久久久午夜精品| 亚洲成人动漫一区| 国产aⅴ综合色| 91精品国产综合久久蜜臀| 中文字幕欧美区| 日韩国产欧美在线播放| 成人18视频在线播放| 欧美日韩国产影片| 国产精品伦一区二区三级视频| 丝袜美腿成人在线| 91影视在线播放| 欧美成人精品1314www| 亚洲欧美自拍偷拍| 九色porny丨国产精品| 欧美综合天天夜夜久久| 国产女人18水真多18精品一级做 | 国产精品对白交换视频| 日韩av电影天堂| 一本大道久久a久久精二百| 精品999在线播放| 爽好久久久欧美精品| 色婷婷综合久色| 中文一区一区三区高中清不卡| 美女视频一区在线观看| 色狠狠色狠狠综合| 国产精品国产三级国产普通话蜜臀 | 国产精品久久久久婷婷| 裸体一区二区三区| 欧美日韩一区久久| 日韩理论片一区二区| 国产91综合网| 久久人人97超碰com| 奇米888四色在线精品| 欧美丝袜丝交足nylons图片| 国产精品久久三| 国产精品白丝jk黑袜喷水| 在线综合+亚洲+欧美中文字幕| 一区二区在线观看免费视频播放 | 久久99精品久久久久久国产越南| 91福利资源站| 亚洲色图欧美激情| 97精品超碰一区二区三区| 国产精品视频在线看| 国产精品伊人色| 国产色爱av资源综合区| 国产不卡高清在线观看视频| 2020国产精品久久精品美国|