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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? demo7_8.cpp

?? 一本外國(guó)人寫(xiě)的關(guān)于3D游戲編程的書(shū)的源碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// DEMO7_8.CPP 8-bit software bitmap clipper demo

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

#define WIN32_LEAN_AND_MEAN  // just say no to MFC

#define INITGUID

#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> // include directdraw

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

// defines for windows 
#define WINDOW_CLASS_NAME "WINCLASS1"

// default screen size
#define SCREEN_WIDTH    320  // size of screen
#define SCREEN_HEIGHT   240
#define SCREEN_BPP      8    // bits per pixel

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

// basic unsigned types
typedef unsigned short USHORT;
typedef unsigned short WORD;
typedef unsigned char  UCHAR;
typedef unsigned char  BYTE;

// the happy face structure
typedef struct HAPPY_FACE_TYP
       {
       int x,y;           // position of happy face
       int xv, yv;        // velocity of happy face
       } HAPPY_FACE, *HAPPY_FACE_PTR;

// MACROS /////////////////////////////////////////////////

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)

// initializes a direct draw struct
#define DDRAW_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }

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

void Blit_Clipped(int x, int y, 
                  int width, int height, 
                  UCHAR *bitmap, 
                  UCHAR *video_buffer,int mempitch);

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

HWND      main_window_handle = NULL; // globally track main window
int       window_closed      = 0;    // tracks if window is closed
HINSTANCE hinstance_app      = NULL; // globally track hinstance

// directdraw stuff
LPDIRECTDRAW7         lpdd         = NULL;   // dd4 object
LPDIRECTDRAWSURFACE7  lpddsprimary = NULL;   // dd primary surface
LPDIRECTDRAWSURFACE7  lpddsback    = NULL;   // dd back surface
LPDIRECTDRAWPALETTE   lpddpal      = NULL;   // a pointer to the created dd palette
LPDIRECTDRAWCLIPPER   lpddclipper  = NULL;   // dd clipper
PALETTEENTRY          palette[256];          // color palette
PALETTEENTRY          save_palette[256];     // used to save palettes
DDSURFACEDESC2        ddsd;                  // a direct draw surface description struct
DDBLTFX               ddbltfx;               // used to fill
DDSCAPS2              ddscaps;               // a direct draw surface capabilities struct
HRESULT               ddrval;                // result back from dd calls
DWORD                 start_clock_count = 0; // used for timing

char buffer[80];                             // general printing buffer

// a low tech bitmap that uses palette entry 1 for the color :)
UCHAR happy_bitmap[64] = {0,0,0,0,0,0,0,0,
                          0,0,1,1,1,1,0,0,
                          0,1,0,1,1,0,1,0,
                          0,1,1,1,1,1,1,0,
                          0,1,0,1,1,0,1,0,
                          0,1,1,0,0,1,1,0,
                          0,0,1,1,1,1,0,0,
                          0,0,0,0,0,0,0,0};

UCHAR sad_bitmap[64] = {0,0,0,0,0,0,0,0,
                        0,0,1,1,1,1,0,0,
                        0,1,0,1,1,0,1,0,
                        0,1,1,1,1,1,1,0,
                        0,1,1,0,0,1,1,0,
                        0,1,0,1,1,0,1,0,
                        0,0,1,1,1,1,0,0,
                        0,0,0,0,0,0,0,0};

HAPPY_FACE happy_faces[100]; // this holds all the happy faces


// 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
char buffer[80];        // used to print strings

// what is the message 
switch(msg)
	{	
	case WM_CREATE: 
        {
		// do initialization stuff here
        // return success
		return(0);
		} break;
   
	case WM_PAINT: 
		{
		// simply validate the window 
   	    hdc = BeginPaint(hwnd,&ps);	 
        
        // end painting
        EndPaint(hwnd,&ps);

        // return success
		return(0);
   		} break;

	case WM_DESTROY: 
		{

		// kill the application, this sends a WM_QUIT message 
		PostQuitMessage(0);

        // return success
		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

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

int Game_Main(void *parms = NULL, int num_parms = 0)
{
// this is the main loop of the game, do all your processing
// here

DDBLTFX ddbltfx; // the blitter fx structure
static int feeling_counter = 0;   // tracks how we feel :)
static int happy = 1;             // let's start off being happy

// make sure this isn't executed again
if (window_closed)
   return(0);

// for now test if user is hitting ESC and send WM_CLOSE
if (KEYDOWN(VK_ESCAPE))
   {
   PostMessage(main_window_handle,WM_CLOSE,0,0);
   window_closed = 1;
   } // end if

// use the blitter to erase the back buffer
// first initialize the DDBLTFX structure
DDRAW_INIT_STRUCT(ddbltfx);

// now set the color word info to the color we desire
ddbltfx.dwFillColor = 0;

// make the blitter call
if (FAILED(lpddsback->Blt(NULL, // pointer to dest RECT, NULL for whole thing
                          NULL, // pointer to source surface
                          NULL, // pointer to source RECT
                          DDBLT_COLORFILL | DDBLT_WAIT, 
                          // do a color fill and wait if you have to
                          &ddbltfx))) // pointer to DDBLTFX holding info
return(0);

// initialize ddsd
DDRAW_INIT_STRUCT(ddsd);

// lock the back buffer surface
if (FAILED(lpddsback->Lock(NULL,&ddsd,
                              DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR,
                              NULL)))
    return(0);


// increment how we feel
if (++feeling_counter > 200)
   {
   feeling_counter = 0; 
   happy = -happy;
   } // end if

// draw all the happy faces
for (int face=0; face < 100; face++)
    {
    // are we happy or sad?
    if (happy==1) // we are happy :)
       Blit_Clipped(happy_faces[face].x, 
                    happy_faces[face].y,
                    8,8,    
                    happy_bitmap, 
                    (UCHAR *)ddsd.lpSurface,
                    ddsd.lPitch);         
     else // we must be sad :(
     Blit_Clipped(happy_faces[face].x, 
                  happy_faces[face].y,
                  8,8,    
                  sad_bitmap, 
                  (UCHAR *)ddsd.lpSurface,
                  ddsd.lPitch);     

    } // end face

// move all happy faces
for (face=0; face < 100; face++)
    {
    // move
    happy_faces[face].x+=happy_faces[face].xv;
    happy_faces[face].y+=happy_faces[face].yv;

    // check for off screen, if so wrap
    if (happy_faces[face].x > SCREEN_WIDTH)
         happy_faces[face].x = -8;
    else
    if (happy_faces[face].x < -8)
        happy_faces[face].x = SCREEN_WIDTH;

    if (happy_faces[face].y > SCREEN_HEIGHT)
         happy_faces[face].y = -8;
    else
    if (happy_faces[face].y < -8)
        happy_faces[face].y = SCREEN_HEIGHT;

    } // end face

// unlock surface
if (FAILED(lpddsback->Unlock(NULL)))
   return(0);

// flip the pages
while (FAILED(lpddsprimary->Flip(NULL, DDFLIP_WAIT)));

// wait a sec
Sleep(30);

// return success or failure or your own return code here
return(1);

} // end Game_Main

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

int Game_Init(void *parms = NULL, int num_parms = 0)
{
// this is called once after the initial window is created and
// before the main event loop is entered, do all your initialization
// here

// create IDirectDraw interface 7.0 object and test for error
if (FAILED(DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL)))
   return(0);

// set cooperation to full screen
if (FAILED(lpdd->SetCooperativeLevel(main_window_handle, 
                                      DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX | 
                                      DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)))
   return(0);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产aⅴ无密码| 91天堂素人约啪| 精品国产乱码久久久久久闺蜜| 久久精品国产第一区二区三区| 26uuu色噜噜精品一区| 国产91精品入口| 亚洲一区二区三区视频在线| 欧美一区二区三区的| 国产精品一区二区在线看| 一区二区三区在线视频观看58 | 国产成人高清在线| 夜夜嗨av一区二区三区网页| 日韩欧美美女一区二区三区| 不卡欧美aaaaa| 日韩专区欧美专区| 亚洲国产精品激情在线观看| av中文字幕不卡| 日韩av一级片| 欧美日韩综合在线| 亚洲成a人片在线观看中文| 国产色产综合色产在线视频| 欧美精品第1页| 一本大道久久a久久综合 | www.亚洲色图.com| 九九**精品视频免费播放| 亚洲一区二区三区小说| 亚洲黄色尤物视频| 日韩毛片精品高清免费| 国产精品美日韩| 久久久久99精品国产片| 欧美va天堂va视频va在线| 欧美精品亚洲一区二区在线播放| 成人sese在线| 成人动漫视频在线| k8久久久一区二区三区| 高清在线成人网| 国产精品亚洲专一区二区三区 | 精品99一区二区| 日韩欧美中文字幕精品| 欧美电影在线免费观看| 欧美另类变人与禽xxxxx| 欧美亚洲国产一区二区三区va| 91丨九色porny丨蝌蚪| 99re视频这里只有精品| 99视频精品全部免费在线| www.日韩精品| 91色乱码一区二区三区| 色综合久久久网| 欧美视频一区二区三区在线观看 | 国产乱码一区二区三区| 国产伦理精品不卡| 国产91丝袜在线播放九色| 国产不卡免费视频| 不卡的av网站| 欧美自拍偷拍午夜视频| 在线成人高清不卡| 日韩免费观看高清完整版在线观看| 91精品中文字幕一区二区三区 | 国产精品久久久久久久久久久免费看 | 亚洲精品视频免费观看| 亚洲精品成人悠悠色影视| 亚洲444eee在线观看| 捆绑紧缚一区二区三区视频| 国产美女精品在线| av在线不卡电影| 欧美综合久久久| 日韩欧美亚洲一区二区| 中文字幕不卡在线观看| 一个色在线综合| 久久av资源网| aa级大片欧美| 欧美一区二区女人| 国产欧美日韩精品在线| 一区二区三区在线播放| 奇米精品一区二区三区在线观看一| 国产乱码精品一区二区三区忘忧草 | 日韩一区中文字幕| 五月婷婷久久综合| 国产九九视频一区二区三区| av中文字幕在线不卡| 欧美老肥妇做.爰bbww| 久久综合五月天婷婷伊人| 亚洲三级在线播放| 日韩电影在线一区| thepron国产精品| 日韩欧美亚洲一区二区| 亚洲图片激情小说| 老司机免费视频一区二区| 91蜜桃视频在线| 欧美一级片在线观看| 自拍偷拍欧美精品| 久久99精品久久久久| 色综合欧美在线| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲视频狠狠干| 久久精品二区亚洲w码| 在线看国产一区二区| 国产欧美视频一区二区| 婷婷开心激情综合| 91视频在线观看| 久久亚洲一区二区三区明星换脸 | 99久久精品国产导航| 欧美电影免费观看高清完整版在 | 国产a久久麻豆| 91精品一区二区三区久久久久久| 国产精品久久久久影院色老大| 美女高潮久久久| 欧美日韩免费视频| 亚洲视频1区2区| 成人免费观看视频| 欧美一区二区观看视频| 亚洲一区在线免费观看| 成人性生交大片| 久久综合久色欧美综合狠狠| 亚洲动漫第一页| 色狠狠av一区二区三区| 国产精品电影院| 成人综合日日夜夜| 国产午夜精品一区二区| 麻豆国产一区二区| 91.com在线观看| 亚洲va欧美va人人爽| 在线观看欧美精品| 国产精品久久久久久久久动漫 | 久久久九九九九| 麻豆成人在线观看| 91精品麻豆日日躁夜夜躁| 亚洲h精品动漫在线观看| 日本二三区不卡| 一区二区三区不卡视频 | 91视频精品在这里| 国产精品视频九色porn| 国产xxx精品视频大全| 久久精品日韩一区二区三区| 激情综合五月天| 国产亚洲女人久久久久毛片| 韩国欧美国产一区| 久久一日本道色综合| 国产伦精一区二区三区| 久久精品人人做人人爽人人| 国产精品一卡二卡| 中文欧美字幕免费| av在线不卡网| 亚洲香蕉伊在人在线观| 欧美日本国产视频| 日本欧美大码aⅴ在线播放| 色综合天天综合在线视频| 国产精品久久久久久久久免费樱桃| 狠狠狠色丁香婷婷综合激情| 欧美绝品在线观看成人午夜影视| 午夜国产不卡在线观看视频| 欧美综合在线视频| 亚洲午夜视频在线观看| 色偷偷久久一区二区三区| 亚洲地区一二三色| 欧美日韩1区2区| 日韩精品一二三| 91免费视频观看| 午夜av区久久| 日韩一区二区三区av| 日韩影院精彩在线| 51午夜精品国产| 裸体一区二区三区| 精品捆绑美女sm三区| 黑人巨大精品欧美一区| 国产精品家庭影院| 91首页免费视频| 亚洲国产另类av| 51午夜精品国产| 成人午夜短视频| 自拍偷在线精品自拍偷无码专区 | 国内偷窥港台综合视频在线播放| 久久女同精品一区二区| 粗大黑人巨茎大战欧美成人| 一区二区国产视频| 欧美一区二区视频观看视频| 久久99在线观看| 欧美激情一区二区三区全黄| 色视频欧美一区二区三区| 亚洲成人自拍网| 欧美精品一区二区精品网| 豆国产96在线|亚洲| 亚洲一区二区三区四区五区黄 | 欧美成人欧美edvon| av在线不卡观看免费观看| 亚洲精选视频免费看| 777xxx欧美| 丁香婷婷综合激情五月色| 午夜影院在线观看欧美| 2017欧美狠狠色| 色综合咪咪久久| 老司机午夜精品| 亚洲永久免费av| 2023国产一二三区日本精品2022| 日韩精品福利网| 日韩一区二区中文字幕| 懂色av噜噜一区二区三区av| 亚洲午夜国产一区99re久久| 欧美大度的电影原声| www.欧美日韩|