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

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

?? rgbpixmap.cpp

?? file code.zip are used to implement ray tracing technology.
?? CPP
字號:
#include "RGBpixmap.h"
fstream inf;  // global in this file for convenience
fstream outf; // ditto
//<<<<<<<<<<<<<<<<<<<<< putShort >>>>>>>>>>>>>>>>>>>>
void putShort(ushort i)
{ // write short in little-endian form
	outf.put((char)(i & 0xff));
	outf.put((char)((i >> 8) & 0xff));	
}
//<<<<<<<<<<<<<<<<<<<<< putLong >>>>>>>>>>>>>>>>>>>>
void putLong(ulong i)
{ // write long in little-endian form
	outf.put((char)(i & 0xff));
	outf.put((char)((i >> 8) & 0xff));	
	outf.put((char)((i >> 16) & 0xff));	
	outf.put((char)((i >> 24) & 0xff));	
}
//<<<<<<<<<<<<<<<<<<<<< getShort >>>>>>>>>>>>>>>>>>>>
ushort getShort()
{// read a short in little-endian form
	char ic;
	ushort ip;
	inf.get(ic); ip = ic;  //first byte is little one 
	inf.get(ic);  ip |= ((ushort)ic << 8); // or in high order byte
	return ip;
}
//<<<<<<<<<<<<<<<<<<<< getLong >>>>>>>>>>>>>>>>>>>
ulong getLong()
{  // get little-endian 4-byte value from file, compose along portably
	ulong ip = 0;
	char ic = 0;
	unsigned char uc = ic;
	inf.get(ic); uc = ic; ip = uc;
	inf.get(ic); uc = ic; ip |=((ulong)uc << 8);
	inf.get(ic); uc = ic; ip |=((ulong)uc << 16);
	inf.get(ic); uc = ic; ip |=((ulong)uc << 24);
	return ip;
}
//<<<<<<<<<<<<<<<<<< RGBPixmap:: readBmpFile>>>>>>>>>>>>>
int RGBpixmap:: readBMPFile(string fname) 
{  // Read into memory an mRGB image from an uncompressed BMP file.
	// return 0 on failure, 1 on success
	inf.open(fname.c_str(), ios::in|ios::binary); //must read raw binary char's.
	if(!inf){ cout << " can't open file: " << fname << endl; return 0;}
	int k, row, col, numPadBytes, nBytesInRow;
	// read header information
	char ch1, ch2;
	inf.get(ch1); inf.get(ch2); // type is always 'BM'
	//cout << "file type = " << ch1 << ch2 << endl;
	ulong fileSize = getLong();
	ushort reserved1 =  getShort();     // always 0
	ushort reserved2= 	getShort();     // always 0 
	ulong offBits =		getLong();	    // offset to image - unreliable
	ulong headerSize =   getLong();      // always 40
	ulong numCols =		getLong();	    // number of columns in image
	ulong numRows = 		getLong();	    // number of rows in image
	ushort planes=    	getShort();     // always 1 
	ushort bitsPerPix = getShort();    // 8 or 24;only 24 bit case done 
	ulong compression = getLong();     // must be 0 for umcompressed 
	ulong imageSize = 	getLong();      // total bytes in image 
	ulong xPels =    	getLong();      // always 0 
	ulong yPels =    	getLong();      // always 0 
	ulong numLUTentries = getLong();   // 256 for 8 bit, otherwise 0 
	ulong impColors = 	getLong();      // always 0 
		#define tell(str,val) cout << str << " = " << val << endl;
	tell("file size",fileSize);
	tell("reserved1", reserved1);
	tell("reserved2", reserved2);
	tell("offBits", offBits);
	tell("numCols", numCols);
	tell("numRows", numRows);
	tell("planes", planes);
	tell("bitsPerPixel", bitsPerPix);
	tell("image size", imageSize);
	tell("compression", compression);
	tell("xPels", xPels);
	tell("yPels", yPels);
	tell("numUTentries", numLUTentries);
	tell("impColors", impColors);
	
	if(bitsPerPix != 24) {cout << "not a 24 bit/pixelimage!\n"; inf.close(); return 0;}; // error!
	// in BMP file, pad bytes inserted at end of each row so total number is a mult. of 4
	nBytesInRow = ((3 * numCols + 3)/4) * 4; // round up 3*numCols to next mult. of 4
	numPadBytes = nBytesInRow - 3 * numCols; // need this many
	nRows = numRows; // set class's data members
   nCols = numCols;
	cout << "numRows,numCols = " << numRows << "," << numCols << endl;
	cout.flush();
	pixel = new mRGB[nRows * nCols]; //space for array in memory
	if(!pixel) return 0; // out of memory!
	long count = 0;
	char dum,r,g,b;
	
	for(row = 0; row < nRows; row++) // read pixel values
	{
		for(col = 0; col < nCols; col++)
		{
			inf.get(b); inf.get(g); inf.get(r); // funny color order in BMP file
			pixel[count].r = r; pixel[count].g = g; pixel[count++].b = b;
		}
      for(k = 0; k < numPadBytes ; k++) //skip over padding bytes at row's end
			inf >> dum;
	}
	inf.close();
	return 1; // success
}
//<<<<<<<<<<<<<<<<<< RGBpixmap:: writeBMPFile >>>>>>>>>>>>>>>>>
int RGBpixmap:: writeBMPFile(string fname)
{
	outf.open(fname.c_str(), ios::out | ios::binary);
	if( !outf){ cout << " can't open file!\n"; return 0;}
   if((nRows <= 0) || (nCols <= 0)){cout << "\n degenerate image!\n"; return 0;}
	
	// Must write a multiple of four bytes in each row of the image
	ushort nBytesInRow = ((3 * nCols + 3)/4) * 4; // round up 3 * nCols to next mult. of 4
   int numPadBytes = nBytesInRow - 3 * nCols; // num of pad bytes at end of each row
	ulong biSizeImage =  nBytesInRow * (ulong)nRows; // size of image
   //write pixmap FileHeader
   ushort bfType = 	0x4d42;	// 'BM';'B'=0x42, 'M'=0x4d
   putShort(bfType); // write it to file
   ulong bfSize = 54 + biSizeImage; //total size of image
	putLong(bfSize);
   putShort(0); putShort(0);// reserved 1 & 2
   putLong(ulong(54)); //bfOffBits: 54 - but not used in readers
   putLong(ulong(40)); // biSize - bytes in info header
   putLong(ulong(nCols)); putLong(ulong(nRows));
   putShort(ushort(1));   putShort(ushort(24)); // bit planes & bit count
   putLong(0L); // compression
	putLong(biSizeImage);
   putLong(0L); putLong(0L);//pelsPerMeterX and Y
   putLong(0L); putLong(0);//colors used & important colors
	//##############write bytes  ###############################
	long count = 0;
	for(int row = 0; row < nRows; row++)
	{
		for(int col = 0; col < nCols; col++)
		{
			outf.put(pixel[count].b);
			outf.put(pixel[count].g);	
			outf.put(pixel[count++].r);
		}
		//now pad this row so num bytes is a mult of 4
		for(int k = 0; k < numPadBytes ; k++) //write dummy bytes to pad out row
			outf.put(char(0)); //padding bytes of 0
	}
	outf.close(); 
	return 1;  //success
}
void RGBpixmap::setTexture(GLuint textureName)
{
	glBindTexture(GL_TEXTURE_2D, textureName);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
				GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
				GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, nCols, nRows, 0, 
				GL_RGB, GL_UNSIGNED_BYTE, pixel);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费毛片aaaaa**| 国产精品99久久久久久宅男| 日本一区二区三区国色天香| 欧美xxxxxxxxx| 日韩欧美在线一区二区三区| 在线不卡一区二区| 欧美精品高清视频| 日韩欧美一级特黄在线播放| 日韩一区二区影院| 精品捆绑美女sm三区| 亚洲精品在线免费播放| 久久精品欧美日韩| 亚洲欧美乱综合| 亚洲国产中文字幕在线视频综合| 一区二区三区久久久| 一区二区三区四区不卡在线 | jlzzjlzz欧美大全| 不卡视频在线看| 日本韩国一区二区三区视频| 欧美专区日韩专区| 日韩免费福利电影在线观看| 国产欧美日韩在线看| 亚洲女人的天堂| 亚洲成人免费看| 久久超级碰视频| 成人激情文学综合网| 欧美性做爰猛烈叫床潮| 日韩美女一区二区三区四区| 国产精品久久久久久久久免费桃花| 亚洲精品视频免费看| 美女脱光内衣内裤视频久久网站 | 成人av资源在线| 欧美巨大另类极品videosbest| 26uuu欧美| 一二三四区精品视频| 久久99热99| 日本国产一区二区| 久久综合丝袜日本网| 成人免费一区二区三区在线观看 | 国产乱码精品一区二区三区av | 国产精品亚洲午夜一区二区三区 | 日韩精品在线网站| 天天综合色天天| 国产91综合网| 3751色影院一区二区三区| 国产精品国产自产拍在线| 日韩av二区在线播放| jiyouzz国产精品久久| 日韩一区二区三区四区| 亚洲人被黑人高潮完整版| 理论片日本一区| 欧洲另类一二三四区| 国产精品亲子乱子伦xxxx裸| 麻豆精品国产传媒mv男同| 91小视频在线| 国产欧美日韩久久| 美女视频一区二区| 宅男噜噜噜66一区二区66| 亚洲精品乱码久久久久| www.av亚洲| 久久九九久久九九| 久久激情综合网| 在线播放视频一区| 亚洲一区二区在线观看视频 | 国内外成人在线| 制服丝袜亚洲网站| 亚洲电影一区二区| 色综合久久久网| 国产精品高潮呻吟| 成人精品一区二区三区四区 | 91美女蜜桃在线| 国产精品国产三级国产| 国产成人久久精品77777最新版本| 91精品国产综合久久精品图片| 亚洲一卡二卡三卡四卡五卡| 色偷偷成人一区二区三区91| 国产精品丝袜91| 不卡av免费在线观看| 国产精品免费av| 99久久精品国产一区二区三区| 国产精品嫩草99a| 99在线热播精品免费| 亚洲人精品午夜| 91无套直看片红桃| 亚洲免费在线电影| 欧美色视频在线观看| 亚洲第一在线综合网站| 在线不卡中文字幕| 麻豆成人在线观看| 亚洲精品在线观| 成人91在线观看| 亚洲免费在线看| 欧美一级在线观看| 国产中文一区二区三区| 国产亚洲精品bt天堂精选| 国产高清无密码一区二区三区| 国产免费久久精品| 日本高清免费不卡视频| 日本亚洲免费观看| 亚洲国产经典视频| 在线观看一区二区精品视频| 天天av天天翘天天综合网| 久久人人97超碰com| 风间由美一区二区av101| 亚洲美女区一区| 欧美一区二区三区免费在线看 | 国产精品美女视频| 在线视频中文字幕一区二区| 日本系列欧美系列| 亚洲国产高清在线观看视频| 91同城在线观看| 老司机一区二区| 亚洲欧美激情插| 精品理论电影在线观看| 色综合婷婷久久| 精品一区二区免费看| 亚洲欧美色一区| 精品国产免费一区二区三区四区 | 亚洲sss视频在线视频| 亚洲精品一线二线三线无人区| 色老头久久综合| 国产精品99久久不卡二区| 亚洲成人www| **欧美大码日韩| www国产精品av| 91麻豆精品国产91久久久久| 成人动漫一区二区| 国产一区二区免费视频| 亚洲国产欧美一区二区三区丁香婷| 久久网站热最新地址| 欧美高清视频不卡网| 99在线精品观看| 国产精品77777竹菊影视小说| 亚洲第一电影网| 亚洲一区在线免费观看| 欧美国产精品一区二区三区| 欧美成人欧美edvon| 欧美日韩中文一区| 在线中文字幕一区二区| 91丨九色porny丨蝌蚪| 国产精品乡下勾搭老头1| 国内久久精品视频| 免费精品视频最新在线| 偷偷要91色婷婷| 一区二区三区在线免费观看| 亚洲视频一区在线| 国产精品的网站| 国产精品电影一区二区三区| 久久精品欧美日韩精品 | 色综合久久综合中文综合网| 国产成人自拍网| 国产精品99久久久久久久女警| 久久99日本精品| 精品亚洲国内自在自线福利| 美女视频黄久久| 国模冰冰炮一区二区| 精品一区二区三区香蕉蜜桃| 精品中文av资源站在线观看| 极品少妇一区二区| 国产激情一区二区三区| 成人精品免费网站| 一本色道亚洲精品aⅴ| 一本一道久久a久久精品| 色婷婷激情一区二区三区| 91成人在线精品| 91精品国产综合久久婷婷香蕉| 欧美一区二区三区视频免费播放| 91精品国产综合久久蜜臀| 日韩一级成人av| 2024国产精品| 国产精品福利一区二区三区| 亚洲综合丁香婷婷六月香| 午夜精品国产更新| 韩国精品久久久| av在线不卡观看免费观看| 欧美日韩在线观看一区二区 | 亚洲免费资源在线播放| 亚洲丰满少妇videoshd| 九色综合狠狠综合久久| 成人久久18免费网站麻豆 | 91啪亚洲精品| 91精品国产福利| 亚洲国产精品av| 五月天国产精品| 国产一区999| 在线精品视频免费观看| 日韩精品资源二区在线| 日韩毛片一二三区| 日本网站在线观看一区二区三区| 九色|91porny| 欧日韩精品视频| 久久婷婷一区二区三区| 一区二区三区成人在线视频| 极品瑜伽女神91| 欧美日韩在线免费视频| 中文av一区特黄| 日韩av电影免费观看高清完整版| 国产激情视频一区二区三区欧美| 色偷偷久久人人79超碰人人澡| www久久精品|