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

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

?? t3dlib2.cpp

?? 一本外國人寫的關于3D游戲編程的書的源碼
?? CPP
字號:
// T3DLIB2.CPP - Game Engine Part II
 
// INCLUDES ///////////////////////////////////////////////

#define WIN32_LEAN_AND_MEAN  
// #define INITGUID

#include <windows.h>   // include important windows stuff
#include <windowsx.h> 
#include <mmsystem.h>
#include <objbase.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 <dinput.h>

#include "T3DLIB1.H"
#include "T3DLIB2.H"

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

// TYPES //////////////////////////////////////////////////

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

// EXTERNALS /////////////////////////////////////////////

extern HWND main_window_handle;     // access to main window handle in main module
extern HINSTANCE main_instance; // save the instance

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

// directinput globals
LPDIRECTINPUT8       lpdi      = NULL;    // dinput object
LPDIRECTINPUTDEVICE8 lpdikey   = NULL;    // dinput keyboard
LPDIRECTINPUTDEVICE8 lpdimouse = NULL;    // dinput mouse
LPDIRECTINPUTDEVICE8 lpdijoy   = NULL;    // dinput joystick
GUID                 joystickGUID;        // guid for main joystick
char                 joyname[80];         // name of joystick

// these contain the target records for all di input packets
UCHAR keyboard_state[256]; // contains keyboard state table
DIMOUSESTATE mouse_state;  // contains state of mouse
DIJOYSTATE joy_state;      // contains state of joystick
int joystick_found = 0;    // tracks if joystick was found and inited

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

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

BOOL CALLBACK DInput_Enum_Joysticks(LPCDIDEVICEINSTANCE lpddi,
								LPVOID guid_ptr) 
{
// this function enumerates the joysticks, but
// stops at the first one and returns the
// instance guid of it, so we can create it

*(GUID*)guid_ptr = lpddi->guidInstance; 

// copy name into global
strcpy(joyname, (char *)lpddi->tszProductName);

// stop enumeration after one iteration
return(DIENUM_STOP);

} // end DInput_Enum_Joysticks

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

int DInput_Init(void)
{
// this function initializes directinput

if (FAILED(DirectInput8Create(main_instance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void **)&lpdi,NULL)))
   return(0);

// return success
return(1);

} // end DInput_Init

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

void DInput_Shutdown(void)
{
// this function shuts down directinput

if (lpdi)
   lpdi->Release();

} // end DInput_Shutdown

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

int DInput_Init_Joystick(int min_x, int max_x, int min_y, int max_y, int dead_zone)
{
// this function initializes the joystick, it allows you to set
// the minimum and maximum x-y ranges 

// first find the fucking GUID of your particular joystick
lpdi->EnumDevices(DI8DEVCLASS_GAMECTRL, 
                  DInput_Enum_Joysticks, 
                  &joystickGUID, 
                  DIEDFL_ATTACHEDONLY); 

// create a temporary IDIRECTINPUTDEVICE (1.0) interface, so we query for 2
LPDIRECTINPUTDEVICE lpdijoy_temp = NULL;

if (lpdi->CreateDevice(joystickGUID, &lpdijoy, NULL)!=DI_OK)
   return(0);

// set cooperation level
if (lpdijoy->SetCooperativeLevel(main_window_handle, 
	                 DISCL_NONEXCLUSIVE | DISCL_BACKGROUND)!=DI_OK)
   return(0);

// set data format
if (lpdijoy->SetDataFormat(&c_dfDIJoystick)!=DI_OK)
   return(0);

// set the range of the joystick
DIPROPRANGE joy_axis_range;

// first x axis
joy_axis_range.lMin = min_x;
joy_axis_range.lMax = max_x;

joy_axis_range.diph.dwSize       = sizeof(DIPROPRANGE); 
joy_axis_range.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
joy_axis_range.diph.dwObj        = DIJOFS_X;
joy_axis_range.diph.dwHow        = DIPH_BYOFFSET;

lpdijoy->SetProperty(DIPROP_RANGE,&joy_axis_range.diph);

// now y-axis
joy_axis_range.lMin = min_y;
joy_axis_range.lMax = max_y;

joy_axis_range.diph.dwSize       = sizeof(DIPROPRANGE); 
joy_axis_range.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
joy_axis_range.diph.dwObj        = DIJOFS_Y;
joy_axis_range.diph.dwHow        = DIPH_BYOFFSET;

lpdijoy->SetProperty(DIPROP_RANGE,&joy_axis_range.diph);


// and now the dead band
DIPROPDWORD dead_band; // here's our property word

// scale dead zone by 100
dead_zone*=100;

dead_band.diph.dwSize       = sizeof(dead_band);
dead_band.diph.dwHeaderSize = sizeof(dead_band.diph);
dead_band.diph.dwObj        = DIJOFS_X;
dead_band.diph.dwHow        = DIPH_BYOFFSET;

// deadband will be used on both sides of the range +/-
dead_band.dwData            = dead_zone;

// finally set the property
lpdijoy->SetProperty(DIPROP_DEADZONE,&dead_band.diph);

dead_band.diph.dwSize       = sizeof(dead_band);
dead_band.diph.dwHeaderSize = sizeof(dead_band.diph);
dead_band.diph.dwObj        = DIJOFS_Y;
dead_band.diph.dwHow        = DIPH_BYOFFSET;

// deadband will be used on both sides of the range +/-
dead_band.dwData            = dead_zone;


// finally set the property
lpdijoy->SetProperty(DIPROP_DEADZONE,&dead_band.diph);

// acquire the joystick
if (lpdijoy->Acquire()!=DI_OK)
   return(0);

// set found flag
joystick_found = 1;

// return success
return(1);

} // end DInput_Init_Joystick

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

int DInput_Init_Mouse(void)
{
// this function intializes the mouse

// create a mouse device 
if (lpdi->CreateDevice(GUID_SysMouse, &lpdimouse, NULL)!=DI_OK)
   return(0);

// set cooperation level
// change to EXCLUSIVE FORGROUND for better control
if (lpdimouse->SetCooperativeLevel(main_window_handle, 
                       DISCL_NONEXCLUSIVE | DISCL_BACKGROUND)!=DI_OK)
   return(0);

// set data format
if (lpdimouse->SetDataFormat(&c_dfDIMouse)!=DI_OK)
   return(0);

// acquire the mouse
if (lpdimouse->Acquire()!=DI_OK)
   return(0);

// return success
return(1);

} // end DInput_Init_Mouse

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

int DInput_Init_Keyboard(void)
{
// this function initializes the keyboard device

// create the keyboard device  
if (lpdi->CreateDevice(GUID_SysKeyboard, &lpdikey, NULL)!=DI_OK)
   return(0);

// set cooperation level
if (lpdikey->SetCooperativeLevel(main_window_handle, 
                 DISCL_NONEXCLUSIVE | DISCL_BACKGROUND)!=DI_OK)
    return(0);

// set data format
if (lpdikey->SetDataFormat(&c_dfDIKeyboard)!=DI_OK)
   return(0);

// acquire the keyboard
if (lpdikey->Acquire()!=DI_OK)
   return(0);

// return success
return(1);

} // end DInput_Init_Keyboard

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

int DInput_Read_Joystick(void)
{
// this function reads the joystick state

// make sure the joystick was initialized
if (!joystick_found)
   return(0);

if (lpdijoy)
    {
    // this is needed for joysticks only    
    if (lpdijoy->Poll()!=DI_OK)
        return(0);

    if (lpdijoy->GetDeviceState(sizeof(DIJOYSTATE), (LPVOID)&joy_state)!=DI_OK)
        return(0);
    }
else
    {
    // joystick isn't plugged in, zero out state
    memset(&joy_state,0,sizeof(joy_state));

    // return error
    return(0);
    } // end else

// return sucess
return(1);

} // end DInput_Read_Joystick

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

int DInput_Read_Mouse(void)
{
// this function reads  the mouse state

if (lpdimouse)    
    {
    if (lpdimouse->GetDeviceState(sizeof(DIMOUSESTATE), (LPVOID)&mouse_state)!=DI_OK)
        return(0);
    }
else
    {
    // mouse isn't plugged in, zero out state
    memset(&mouse_state,0,sizeof(mouse_state));

    // return error
    return(0);
    } // end else

// return sucess
return(1);

} // end DInput_Read_Mouse

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

int DInput_Read_Keyboard(void)
{
// this function reads the state of the keyboard

if (lpdikey)
    {
    if (lpdikey->GetDeviceState(256, (LPVOID)keyboard_state)!=DI_OK)
       return(0);
    }
else
    {
    // keyboard isn't plugged in, zero out state
    memset(keyboard_state,0,sizeof(keyboard_state));

    // return error
    return(0);
    } // end else

// return sucess
return(1);

} // end DInput_Read_Keyboard

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

void DInput_Release_Joystick(void)
{
// this function unacquires and releases the joystick

if (lpdijoy)
    {    
    lpdijoy->Unacquire();
    lpdijoy->Release();
    } // end if

} // end DInput_Release_Joystick

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

void DInput_Release_Mouse(void)
{
// this function unacquires and releases the mouse

if (lpdimouse)
    {    
    lpdimouse->Unacquire();
    lpdimouse->Release();
    } // end if

} // end DInput_Release_Mouse

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

void DInput_Release_Keyboard(void)
{
// this function unacquires and releases the keyboard

if (lpdikey)
    {
    lpdikey->Unacquire();
    lpdikey->Release();
    } // end if

} // end DInput_Release_Keyboard

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成熟亚洲日本毛茸茸凸凹| 欧美成人精品高清在线播放| 国产免费成人在线视频| 亚洲一区二区三区美女| 国产成人精品综合在线观看 | 午夜欧美电影在线观看| 国产91丝袜在线播放0| 欧美一级国产精品| 午夜精品福利在线| 在线视频你懂得一区| 中文一区二区完整视频在线观看| 午夜精品久久久久久久| 91亚洲资源网| 欧美国产1区2区| 国产一区福利在线| 日韩一区二区在线免费观看| 亚洲综合免费观看高清完整版在线 | 久久国产精品99久久久久久老狼| 色综合天天视频在线观看 | 国内精品写真在线观看| 欧美日韩精品一二三区| 亚洲综合色视频| 在线视频中文字幕一区二区| 亚洲美女视频在线观看| 成人免费观看视频| 国产精品免费免费| 懂色av一区二区三区免费看| 国产视频911| 成人一区二区三区视频在线观看 | 欧美精品一级二级三级| 亚洲成av人片在线| 欧美人妖巨大在线| 天天色综合天天| 91精品国产综合久久久久久漫画| 日日夜夜精品免费视频| 欧美一区二区三区系列电影| 免费视频最近日韩| 精品国偷自产国产一区| 国产一区二区三区久久悠悠色av| 久久免费偷拍视频| av电影一区二区| 亚洲欧美日韩久久| 欧美色视频在线| 日本欧美一区二区| 久久久久久久久伊人| 成人在线视频一区| 亚洲精品日日夜夜| 日韩一区二区在线播放| 国产综合久久久久影院| 国产欧美日韩在线| 91国偷自产一区二区开放时间| 亚洲激情在线播放| 日韩欧美国产wwwww| 国产福利91精品一区二区三区| 久久精品这里都是精品| 91原创在线视频| 日韩一区精品字幕| 一本色道久久综合亚洲aⅴ蜜桃| 91视频91自| 亚洲免费av在线| 欧美精品自拍偷拍| 国产综合成人久久大片91| 欧美日韩大陆一区二区| 成人福利视频在线看| 狠狠狠色丁香婷婷综合久久五月| 人人狠狠综合久久亚洲| 日韩中文欧美在线| 亚洲成人动漫在线免费观看| 樱花草国产18久久久久| 亚洲欧洲制服丝袜| 极品少妇xxxx偷拍精品少妇| 奇米888四色在线精品| 婷婷开心久久网| 亚洲丶国产丶欧美一区二区三区| 亚洲精品中文字幕乱码三区| 亚洲少妇30p| 亚洲欧美另类图片小说| 国产精品高潮呻吟| 国产精品久久久久久久久搜平片| 中文字幕二三区不卡| 国产精品理论片在线观看| 欧美国产综合一区二区| 亚洲国产高清不卡| 亚洲免费毛片网站| 亚洲国产视频网站| 香蕉久久夜色精品国产使用方法| 亚洲国产精品久久久久婷婷884| 一区二区三区久久| 亚洲成人av在线电影| 免费欧美高清视频| 国产一区二区福利| 国产成人在线视频免费播放| 粉嫩一区二区三区性色av| aaa欧美大片| 91国产丝袜在线播放| 欧美理论电影在线| 欧美精品一区二区精品网| 国产欧美日产一区| 亚洲色大成网站www久久九九| 夜夜精品浪潮av一区二区三区| 日韩中文字幕亚洲一区二区va在线| 日韩精品高清不卡| 国产福利一区在线观看| 99国产精品视频免费观看| 欧美亚洲一区三区| 精品国一区二区三区| 国产精品动漫网站| 丝袜亚洲精品中文字幕一区| 韩国av一区二区三区| 91在线视频在线| 日韩欧美国产麻豆| 综合久久综合久久| 麻豆国产精品777777在线| 9色porny自拍视频一区二区| 欧美情侣在线播放| 国产清纯白嫩初高生在线观看91 | 久久99久久久欧美国产| 夫妻av一区二区| 欧美男生操女生| 欧美国产日本韩| 石原莉奈在线亚洲二区| www..com久久爱| 日韩午夜av一区| 亚洲精品videosex极品| 国产精品一区二区黑丝| 欧美日韩国产片| 亚洲欧洲日韩一区二区三区| 麻豆精品一区二区三区| 一本一道波多野结衣一区二区| 欧美不卡视频一区| 亚洲激情男女视频| 国产精品小仙女| 欧美一级搡bbbb搡bbbb| 亚洲激情综合网| 国产999精品久久久久久| 欧美一区二区三区不卡| 亚洲精品中文字幕在线观看| 国产精品中文字幕欧美| 91精品国产色综合久久不卡蜜臀| 国产精品二区一区二区aⅴ污介绍| 麻豆精品一区二区三区| 精品视频一区二区不卡| 亚洲人成亚洲人成在线观看图片| 激情综合网激情| 日韩欧美久久一区| 亚洲成人av一区二区三区| 91福利在线导航| 亚洲欧美另类综合偷拍| 不卡的av中国片| 欧美高清在线精品一区| 国产精品91一区二区| 精品美女在线观看| 六月婷婷色综合| 日韩午夜小视频| 奇米色一区二区| 91麻豆精品国产自产在线| 亚洲午夜av在线| 欧美三级蜜桃2在线观看| 亚洲精品水蜜桃| 欧美性猛片xxxx免费看久爱| 亚洲色图丝袜美腿| 一本一道综合狠狠老| 亚洲欧美另类久久久精品2019| 99久久久国产精品免费蜜臀| 中文字幕欧美日韩一区| 成人免费看片app下载| 国产精品妹子av| 99久久99久久久精品齐齐| 亚洲色图在线看| 在线免费一区三区| 亚洲资源中文字幕| 欧美日韩综合色| 日本亚洲电影天堂| 日韩精品一区二区三区在线播放| 青青青爽久久午夜综合久久午夜| 91精品麻豆日日躁夜夜躁| 日韩av一级电影| 精品国产电影一区二区| 国产成人在线看| 亚洲人成在线播放网站岛国| 在线观看不卡一区| 天堂影院一区二区| 2020日本不卡一区二区视频| 国产a视频精品免费观看| 国产精品国产自产拍高清av王其 | 欧美日韩精品系列| 丝袜国产日韩另类美女| 日韩欧美你懂的| 福利一区二区在线观看| 亚洲视频精选在线| 在线观看91av| 国产成人综合网站| 亚洲午夜精品一区二区三区他趣| 欧美丰满美乳xxx高潮www| 国产一区在线精品| 亚洲丝袜另类动漫二区| 欧美一二三四区在线| 粉嫩久久99精品久久久久久夜| 夜夜亚洲天天久久| 精品国内片67194|