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

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

?? demo7_8.cpp

?? 一本外國人寫的關于3D游戲編程的書的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

// set display mode 
if (FAILED(lpdd->SetDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP,0,0)))
   return(0);

// clear ddsd and set size
DDRAW_INIT_STRUCT(ddsd); 

// enable valid fields
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;

// set the backbuffer count field to 1, use 2 for triple buffering
ddsd.dwBackBufferCount = 1;

// request a complex, flippable
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;

// create the primary surface
if (FAILED(lpdd->CreateSurface(&ddsd, &lpddsprimary, NULL)))
   return(0);

// now query for attached surface from the primary surface

// this line is needed by the call
ddsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;

// get the attached back buffer surface
if (FAILED(lpddsprimary->GetAttachedSurface(&ddsd.ddsCaps, &lpddsback)))
  return(0);

// build up the palette data array
for (int color=1; color < 255; color++)
    {
    // fill with random RGB values
    palette[color].peRed   = rand()%256;
    palette[color].peGreen = rand()%256;
    palette[color].peBlue  = rand()%256;

    // set flags field to PC_NOCOLLAPSE
    palette[color].peFlags = PC_NOCOLLAPSE;
    } // end for color

// now fill in entry 0 and 255 with black and white
palette[0].peRed     = 0;
palette[0].peGreen   = 0;
palette[0].peBlue    = 0;
palette[0].peFlags   = PC_NOCOLLAPSE;

palette[255].peRed   = 255;
palette[255].peGreen = 255;
palette[255].peBlue  = 255;
palette[255].peFlags = PC_NOCOLLAPSE;

// make color 1 yellow
palette[1].peRed     = 255;
palette[1].peGreen   = 255;
palette[1].peBlue    = 0;
palette[1].peFlags   = PC_NOCOLLAPSE;

// create the palette object
if (FAILED(lpdd->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | 
                                DDPCAPS_INITIALIZE, 
                                palette,&lpddpal, NULL)))
return(0);

// finally attach the palette to the primary surface
if (FAILED(lpddsprimary->SetPalette(lpddpal)))
   return(0);

// initialize all the happy faces
for (int face = 0; face < 100; face++)
    {
    // set random position
    happy_faces[face].x = rand()%SCREEN_WIDTH;
    happy_faces[face].y = rand()%SCREEN_HEIGHT;    

    // set random velocity (-2,+2)
    happy_faces[face].xv = -2 + rand()%5;
    happy_faces[face].yv = -2 + rand()%5;

    } // end for face

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

} // end Game_Init

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

int Game_Shutdown(void *parms = NULL, int num_parms = 0)
{
// this is called after the game is exited and the main event
// loop while is exited, do all you cleanup and shutdown here


// now the back buffer surface
if (lpddpal)
   {
   lpddpal->Release();
   lpddpal = NULL;
   } // end if

// now the back buffer surface
if (lpddsback)
   {
   lpddsback->Release();
   lpddsback = NULL;
   } // end if

// now the primary surface
if (lpddsprimary)
   {
   lpddsprimary->Release();
   lpddsprimary = NULL;
   } // end if

// now blow away the IDirectDraw4 interface
if (lpdd)
   {
   lpdd->Release();
   lpdd = NULL;
   } // end if

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

} // end Game_Shutdown

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

int WINAPI WinMain(	HINSTANCE hinstance,
					HINSTANCE hprevinstance,
					LPSTR lpcmdline,
					int ncmdshow)
{

WNDCLASSEX winclass; // this will hold the class we create
HWND	   hwnd;	 // generic window handle
MSG		   msg;		 // generic message
HDC        hdc;      // graphics device context

// first fill in the window class stucture
winclass.cbSize         = sizeof(WNDCLASSEX);
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;
winclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);

// save hinstance in global
hinstance_app = hinstance;

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

// create the window
if (!(hwnd = CreateWindowEx(NULL,                  // extended style
                            WINDOW_CLASS_NAME,     // class
						    "DirectDraw Software Clipping Demo", // title
						    WS_POPUP | WS_VISIBLE,
					 	    0,0,	  // initial x,y
						    SCREEN_WIDTH,SCREEN_HEIGHT,  // initial width, height
						    NULL,	  // handle to parent 
						    NULL,	  // handle to menu
						    hinstance,// instance of this application
						    NULL)))	// extra creation parms
return(0);

// save main window handle
main_window_handle = hwnd;

// initialize game here
Game_Init();

// enter main event loop
while(TRUE)
	{
    // test if there is a message in queue, if so get it
	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

// closedown game here
Game_Shutdown();

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

} // end WinMain

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

void Blit_Clipped(int x, int y,          // position to draw bitmap
                  int width, int height, // size of bitmap in pixels
                  UCHAR *bitmap,         // pointer to bitmap data
                  UCHAR *video_buffer,   // pointer to video buffer surface
                  int   mempitch)        // video pitch per line
{
// this function blits and clips the image sent in bitmap to the 
// destination surface pointed to by video_buffer
// the function assumes a 640x480x8 mode 

// first do trivial rejections of bitmap, is it totally invisible?
if ((x >= SCREEN_WIDTH) || (y>= SCREEN_HEIGHT) ||
    ((x + width) <= 0) || ((y + height) <= 0))
return;

// clip source rectangle
// pre-compute the bounding rect to make life easy
int x1 = x;
int y1 = y;
int x2 = x1 + width - 1;
int y2 = y1 + height -1;

// upper left hand corner first
if (x1 < 0)
   x1 = 0;

if (y1 < 0)
   y1 = 0;

// now lower left hand corner
if (x2 >= SCREEN_WIDTH)
    x2 = SCREEN_WIDTH-1;

if (y2 >= SCREEN_HEIGHT)
    y2 = SCREEN_HEIGHT-1;

// now we know to draw only the portions of the bitmap from (x1,y1) to (x2,y2)
// compute offsets into bitmap on x,y axes, we need this to compute starting point
// to rasterize from
int x_off = x1 - x;
int y_off = y1 - y;

// compute number of columns and rows to blit
int dx = x2 - x1 + 1;
int dy = y2 - y1 + 1;

// compute starting address in video_buffer 
video_buffer += (x1 + y1*mempitch);

// compute starting address in bitmap to scan data from
bitmap += (x_off + y_off*width);

// at this point bitmap is pointing to the first pixel in the bitmap that needs to
// be blitted, and video_buffer is pointing to the memory location on the destination
// buffer to put it, so now enter rasterizer loop

UCHAR pixel; // used to read/write pixels

for (int index_y = 0; index_y < dy; index_y++)
     {
     // inner loop, where the action takes place
     for (int index_x = 0; index_x < dx; index_x++)
          {
          // read pixel from source bitmap, test for transparency and plot
          if ((pixel = bitmap[index_x]))
              video_buffer[index_x] = pixel;

          } // end for index_x
     
          // advance pointers
          video_buffer+=mempitch;  // bytes per scanline
          bitmap      +=width;     // bytes per bitmap row

     } // end for index_y

} // end Blit_Clipped

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩黄色在线观看| 色综合中文字幕| 欧美亚洲国产bt| 久久久国产一区二区三区四区小说| 亚洲午夜久久久久久久久电影院| 韩国三级电影一区二区| 欧美色成人综合| 中文字幕色av一区二区三区| 久久99精品久久久久久国产越南| 在线亚洲+欧美+日本专区| 久久久久久免费网| 美女在线观看视频一区二区| 欧美在线免费视屏| 成人欧美一区二区三区白人| 国产美女精品在线| 日韩欧美中文一区二区| 香蕉加勒比综合久久| 91在线精品一区二区三区| 久久影院视频免费| 激情久久久久久久久久久久久久久久| 欧美视频一区在线| 一区二区三区免费观看| eeuss国产一区二区三区| 国产欧美日韩在线| 国产jizzjizz一区二区| 亚洲国产精品精华液2区45| 狠狠色综合播放一区二区| 精品欧美一区二区在线观看| 日韩不卡一区二区| 91精品欧美久久久久久动漫| 日韩电影在线一区| 91.com视频| 免费看精品久久片| 日韩精品在线看片z| 日韩国产成人精品| 日韩免费福利电影在线观看| 日韩经典一区二区| 欧美成人伊人久久综合网| 韩国精品一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 九色|91porny| 国产人妖乱国产精品人妖| av高清不卡在线| 亚洲精品国产一区二区精华液| 在线视频你懂得一区二区三区| 亚洲国产精品麻豆| 69成人精品免费视频| 麻豆91在线播放| 久久久精品综合| aaa亚洲精品| 亚洲一卡二卡三卡四卡无卡久久 | 午夜欧美2019年伦理| 欧美日韩dvd在线观看| 免费成人av在线播放| 国产偷国产偷亚洲高清人白洁 | 国产精品99久久久久久似苏梦涵| 日本一区二区在线不卡| 91蜜桃免费观看视频| 日本欧美一区二区| 国产欧美一区视频| 欧美调教femdomvk| 九一九一国产精品| 亚洲精品成人悠悠色影视| 日韩午夜激情视频| 99精品国产99久久久久久白柏| 污片在线观看一区二区| 国产日韩视频一区二区三区| 在线观看不卡视频| 国产乱子伦一区二区三区国色天香| 亚洲天堂精品在线观看| 欧美一二三四区在线| 91麻豆免费观看| 久久国产视频网| 一区二区三区中文在线| 精品国产乱码久久久久久1区2区| 色综合久久88色综合天天免费| 久久99久久99| 一区二区成人在线| 国产欧美一区二区精品仙草咪| 欧美亚洲一区二区在线| 国产a级毛片一区| 六月丁香综合在线视频| 一区二区高清视频在线观看| 久久精品网站免费观看| 欧美一级片免费看| 色菇凉天天综合网| 成人午夜电影久久影院| 老司机免费视频一区二区| 亚洲国产裸拍裸体视频在线观看乱了| 国产欧美一区二区精品性| 日韩午夜精品视频| 欧美顶级少妇做爰| 欧美午夜不卡视频| 99久久99久久久精品齐齐| 国产精品一线二线三线精华| 美腿丝袜亚洲一区| 日韩成人午夜电影| 午夜欧美2019年伦理| 亚洲一区二区三区美女| 一区二区三区免费网站| 中文字幕一区二区不卡| 中文字幕久久午夜不卡| 精品国产区一区| 亚洲精品一区二区三区精华液| 日韩欧美中文字幕公布| 日韩手机在线导航| 5月丁香婷婷综合| 欧美一区午夜视频在线观看| 欧美日韩精品系列| 欧美老女人第四色| 欧美老肥妇做.爰bbww| 欧美肥妇free| 日韩你懂的在线观看| 欧美成人精品1314www| 日韩欧美在线123| 日韩欧美视频一区| 精品国产在天天线2019| 久久久一区二区三区| 欧美国产日韩亚洲一区| 自拍偷拍亚洲综合| 一区二区三区日韩在线观看| 亚洲成人黄色影院| 午夜精品视频一区| 麻豆成人久久精品二区三区红| 九九久久精品视频| 国产成人免费高清| 不卡视频在线看| 在线观看视频一区二区 | 日韩和欧美一区二区三区| 日本中文一区二区三区| 久久电影网电视剧免费观看| 国产乱子伦一区二区三区国色天香 | 国产成人夜色高潮福利影视| 丁香啪啪综合成人亚洲小说| 色综合天天综合给合国产| 欧美在线视频不卡| 欧美大白屁股肥臀xxxxxx| 久久久久99精品一区| 亚洲女与黑人做爰| 日一区二区三区| 国产成人在线免费观看| 91精品福利视频| 日韩欧美视频一区| 国产精品天美传媒沈樵| 亚洲成人你懂的| 国产精品99久久久久久似苏梦涵 | 亚洲国产精品一区二区久久恐怖片| 日本视频免费一区| 高清日韩电视剧大全免费| 欧美私模裸体表演在线观看| 精品国产免费人成电影在线观看四季 | 国产精品久久夜| 亚洲不卡一区二区三区| 国内精品伊人久久久久av一坑| jizz一区二区| 精品处破学生在线二十三| 亚洲人成亚洲人成在线观看图片| 日本va欧美va精品发布| 99久久精品国产一区| 精品国产免费一区二区三区四区| 亚洲精品欧美二区三区中文字幕| 韩日av一区二区| 欧美视频在线一区二区三区| 国产女人aaa级久久久级| 日本伊人精品一区二区三区观看方式| 成人教育av在线| 精品日韩在线观看| 亚洲国产精品天堂| 99久久精品99国产精品| 久久综合av免费| 日韩二区三区四区| 欧美视频在线一区二区三区 | 99久久国产综合精品女不卡| 精品美女被调教视频大全网站| 亚洲午夜成aⅴ人片| 99在线精品视频| 国产女人18毛片水真多成人如厕| 日韩电影免费在线观看网站| 欧美伊人久久久久久午夜久久久久| 欧美国产乱子伦| 国产精品亚洲一区二区三区在线| 日韩欧美在线影院| 日韩精品乱码免费| 欧美日韩成人综合在线一区二区| 亚洲精品日韩综合观看成人91| av电影在线观看一区| 欧美国产1区2区| 大胆亚洲人体视频| 国产三级欧美三级日产三级99| 国内精品视频一区二区三区八戒| 日韩一区二区三区四区五区六区| 视频在线在亚洲| 91精品国产综合久久蜜臀| 亚洲一区二区三区四区在线观看| 色婷婷亚洲一区二区三区| 一区二区三区在线观看国产| 91亚洲精品久久久蜜桃网站 | 国产精品久久久一区麻豆最新章节| 国产91高潮流白浆在线麻豆| 久久久99精品久久|