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

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

?? mytexture.cpp

?? 用VC++與OPENGL研發的粒子系統的模擬程序
?? CPP
字號:
// MyTexture.cpp: implementation of the CMyTexture class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MyExplosion.h"
#include "MyTexture.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMyTexture::CMyTexture()
{

}

CMyTexture::~CMyTexture()
{

}

void CMyTexture::bwtorgba(unsigned char *b,unsigned char *l,int n)
{
    while(n--)
	{
	l[0] = *b;
	l[1] = *b;
	l[2] = *b;
	l[3] = 0xff;
	l += 4; b++;
    }
}

void CMyTexture::latorgba(unsigned char *b, unsigned char *a,unsigned char *l,int n) 
{
    while(n--) 
	{
	l[0] = *b;
	l[1] = *b;
	l[2] = *b;
	l[3] = *a;
	l += 4; b++; a++;
    }
}

void CMyTexture::rgbtorgba(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *l,int n) 
{
    while(n--) 
	{
	l[0] = r[0];
	l[1] = g[0];
	l[2] = b[0];
	l[3] = 0xff;
	l += 4; r++; g++; b++;
    }
}

void CMyTexture::rgbatorgba(unsigned char *r,unsigned char *g,unsigned char *b,unsigned char *a,unsigned char *l,int n) 
{
    while(n--) 
	{
	l[0] = r[0];
	l[1] = g[0];
	l[2] = b[0];
	l[3] = a[0];
        l += 4; r++; g++; b++; a++;
    }
}


void CMyTexture::ConvertShort(unsigned short *array, long length) 
{
    unsigned b1, b2;
    unsigned char *ptr;

    ptr = (unsigned char *)array;
    while (length--) 
	{
	b1 = *ptr++;
	b2 = *ptr++;
	*array++ = (b1 << 8) | (b2);
    }
}

void CMyTexture::ConvertLong(unsigned *array, long length) 
{
    unsigned b1, b2, b3, b4;
    unsigned char *ptr;

    ptr = (unsigned char *)array;
    while (length--) {
	b1 = *ptr++;
	b2 = *ptr++;
	b3 = *ptr++;
	b4 = *ptr++;
	*array++ = (b1 << 24) | (b2 << 16) | (b3 << 8) | (b4);
    }
}

ImageRec * CMyTexture::ImageOpen(const char *fileName)
{
    union {
	int testWord;
	char testByte[4];
    } endianTest;
    ImageRec *image;
    int swapFlag;
    int x;

    endianTest.testWord = 1;
    if (endianTest.testByte[0] == 1) {
	swapFlag = 1;
    } else {
	swapFlag = 0;
    }

    image = (ImageRec *)malloc(sizeof(ImageRec));
    if (image == NULL) {
	fprintf(stderr, "Out of memory!\n");
	exit(1);
    }
    if ((image->file = fopen(fileName, "rb")) == NULL) {
	perror(fileName);
	exit(1);
    }

    fread(image, 1, 12, image->file);

    if (swapFlag) {
	ConvertShort(&image->imagic, 6);
    }

    image->tmp = (unsigned char *)malloc(image->xsize*256);
    image->tmpR = (unsigned char *)malloc(image->xsize*256);
    image->tmpG = (unsigned char *)malloc(image->xsize*256);
    image->tmpB = (unsigned char *)malloc(image->xsize*256);
    if (image->tmp == NULL || image->tmpR == NULL || image->tmpG == NULL ||
	image->tmpB == NULL) {
	fprintf(stderr, "Out of memory!\n");
	exit(1);
    }

    if ((image->type & 0xFF00) == 0x0100) {
	x = image->ysize * image->zsize * sizeof(unsigned);
	image->rowStart = (unsigned *)malloc(x);
	image->rowSize = (int *)malloc(x);
	if (image->rowStart == NULL || image->rowSize == NULL) {
	    fprintf(stderr, "Out of memory!\n");
	    exit(1);
	}
	image->rleEnd = 512 + (2 * x);
	fseek(image->file, 512, SEEK_SET);
	fread(image->rowStart, 1, x, image->file);
	fread(image->rowSize, 1, x, image->file);
	if (swapFlag) {
	    ConvertLong(image->rowStart, x/(int)sizeof(unsigned));
	    ConvertLong((unsigned *)image->rowSize, x/(int)sizeof(int));
	}
    } else {
	image->rowStart = NULL;
	image->rowSize = NULL;
    }
    return image;
}

void CMyTexture::ImageClose(ImageRec *image) 
{
    fclose(image->file);
    free(image->tmp);
    free(image->tmpR);
    free(image->tmpG);
    free(image->tmpB);
    free(image->rowSize);
    free(image->rowStart);
    free(image);
}

void CMyTexture::ImageGetRow(ImageRec *image, unsigned char *buf, int y, int z) 
{
    unsigned char *iPtr, *oPtr, pixel;
    int count;

    if ((image->type & 0xFF00) == 0x0100) {
	fseek(image->file, (long)image->rowStart[y+z*image->ysize], SEEK_SET);
	fread(image->tmp, 1, (unsigned int)image->rowSize[y+z*image->ysize],
	      image->file);

	iPtr = image->tmp;
	oPtr = buf;
	for (;;) {
	    pixel = *iPtr++;
	    count = (int)(pixel & 0x7F);
	    if (!count) {
		return;
	    }
	    if (pixel & 0x80) {
		while (count--) {
		    *oPtr++ = *iPtr++;
		}
	    } else {
		pixel = *iPtr++;
		while (count--) {
		    *oPtr++ = pixel;
		}
	    }
	}
    } else {
	fseek(image->file, 512+(y*image->xsize)+(z*image->xsize*image->ysize),
	      SEEK_SET);
	fread(buf, 1, image->xsize, image->file);
    }
}

unsigned * CMyTexture::read_texture(char *name, int *width, int *height, int *components) 
{
    unsigned *base, *lptr;
    unsigned char *rbuf, *gbuf, *bbuf, *abuf;
    ImageRec *image;
    int y;

    image = ImageOpen(name);
    
    if(!image)
	return NULL;
    (*width)=image->xsize;
    (*height)=image->ysize;
    (*components)=image->zsize;
    base = (unsigned *)malloc(image->xsize*image->ysize*sizeof(unsigned));
    rbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char));
    gbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char));
    bbuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char));
    abuf = (unsigned char *)malloc(image->xsize*sizeof(unsigned char));
    if(!base || !rbuf || !gbuf || !bbuf)
      return NULL;
    lptr = base;
    for(y=0; y<image->ysize; y++) {
	if(image->zsize>=4) {
	    ImageGetRow(image,rbuf,y,0);
	    ImageGetRow(image,gbuf,y,1);
	    ImageGetRow(image,bbuf,y,2);
	    ImageGetRow(image,abuf,y,3);
	    rgbatorgba(rbuf,gbuf,bbuf,abuf,(unsigned char *)lptr,image->xsize);
	    lptr += image->xsize;
	} else if(image->zsize==3) {
	    ImageGetRow(image,rbuf,y,0);
	    ImageGetRow(image,gbuf,y,1);
	    ImageGetRow(image,bbuf,y,2);
	    rgbtorgba(rbuf,gbuf,bbuf,(unsigned char *)lptr,image->xsize);
	    lptr += image->xsize;
	} else if(image->zsize==2) {
	    ImageGetRow(image,rbuf,y,0);
	    ImageGetRow(image,abuf,y,1);
	    latorgba(rbuf,abuf,(unsigned char *)lptr,image->xsize);
	    lptr += image->xsize;
	} else {
	    ImageGetRow(image,rbuf,y,0);
	    bwtorgba(rbuf,(unsigned char *)lptr,image->xsize);
	    lptr += image->xsize;
	}
    }
    ImageClose(image);
    free(rbuf);
    free(gbuf);
    free(bbuf);
    free(abuf);

    return (unsigned *) base;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频一区二区三区免费| 一区二区三区在线观看国产| 精品中文字幕一区二区小辣椒 | 欧美日韩国产免费一区二区| 91视频.com| 欧美主播一区二区三区| 在线免费av一区| 欧美色涩在线第一页| 欧美色图12p| 欧美妇女性影城| 精品国产免费一区二区三区香蕉| 日韩欧美国产综合| 国产精品日产欧美久久久久| 国产精品国产自产拍高清av王其 | 91视视频在线直接观看在线看网页在线看| 国产久卡久卡久卡久卡视频精品| 成人sese在线| 欧美片在线播放| 久久久久久日产精品| 亚洲高清视频在线| 国产成人免费网站| 91麻豆精品久久久久蜜臀| 国产午夜精品久久| 亚洲精品日日夜夜| 国产麻豆精品在线观看| 在线一区二区三区四区五区| 欧美精品一二三| 亚洲男人的天堂一区二区| 日韩av不卡一区二区| 91蜜桃网址入口| 欧美一级日韩一级| 亚洲国产综合91精品麻豆| 91天堂素人约啪| 在线电影院国产精品| 国产丝袜在线精品| 99re热视频精品| 亚洲一区二区三区免费视频| 欧美日韩激情在线| 亚洲日本一区二区三区| 91麻豆精品秘密| 欧美高清在线一区二区| 麻豆91在线观看| 国产午夜精品一区二区三区四区 | 色综合网站在线| 91麻豆精品国产91久久久更新时间| 欧美亚洲综合色| 亚洲成人精品一区二区| 欧美成人一区二区三区| 成人91在线观看| 亚洲精品视频一区二区| 欧美高清视频不卡网| 国产一区二区伦理| 国内精品伊人久久久久影院对白| 国产精品免费久久久久| 欧美三级中文字幕在线观看| 久久机这里只有精品| 亚洲视频综合在线| 激情文学综合丁香| 欧美激情一区二区三区不卡| 91福利国产精品| 一本久久精品一区二区| 99精品在线免费| 婷婷综合在线观看| 欧美激情在线免费观看| 成人午夜电影久久影院| 欧美精品一区男女天堂| 国产成人在线网站| 99久久伊人网影院| 日韩1区2区3区| 久草这里只有精品视频| 国产91精品一区二区| 国产91色综合久久免费分享| 亚洲视频在线一区观看| 亚洲视频在线一区二区| 国产精品高清亚洲| 中文字幕永久在线不卡| 亚洲免费电影在线| 亚洲国产欧美一区二区三区丁香婷| 最近中文字幕一区二区三区| 亚洲伊人色欲综合网| 欧美天天综合网| 午夜精品国产更新| 欧美中文字幕不卡| 毛片av一区二区三区| 欧美精品高清视频| 久久精品国产精品亚洲红杏| 欧美日韩aaaaa| 精品一区二区三区在线观看 | 精品国产伦一区二区三区免费| 亚洲国产精品久久人人爱| 开心九九激情九九欧美日韩精美视频电影 | 91麻豆国产在线观看| 蜜桃精品在线观看| 亚洲一区二区免费视频| 国产欧美一区二区在线观看| 精品久久久久久综合日本欧美| 欧美日韩久久久| 日韩黄色免费网站| 欧美极品xxx| 久久精品二区亚洲w码| 国产精品午夜免费| 亚洲欧洲日韩一区二区三区| 亚洲国产精品高清| 中文字幕亚洲视频| 一区二区三区在线视频免费观看 | 久久综合一区二区| 精品国产一区二区三区久久久蜜月| 91丨porny丨最新| 久久精品国产色蜜蜜麻豆| 首页国产欧美久久| 亚洲一二三四区| 亚洲日本丝袜连裤袜办公室| 亚洲综合激情网| 奇米精品一区二区三区在线观看| 免费成人美女在线观看| 91麻豆精品国产91久久久使用方法| 欧美另类一区二区三区| 91视频一区二区| 91天堂素人约啪| 欧美在线视频不卡| 欧美国产成人精品| 午夜精品福利一区二区三区蜜桃| 日韩av在线播放中文字幕| 一区二区三区.www| 亚洲日本一区二区三区| 国产成人综合视频| 欧美视频中文字幕| 亚洲色图视频网| 韩国三级中文字幕hd久久精品| 久久久久成人黄色影片| 精品国产乱码久久久久久老虎 | 亚洲三级电影全部在线观看高清| 国产精品麻豆一区二区| 99久久伊人精品| 亚洲国产电影在线观看| 懂色av中文字幕一区二区三区 | 91丨九色丨蝌蚪丨老版| 精品国产a毛片| 国产成人午夜电影网| 久久久精品免费免费| 国产精品77777竹菊影视小说| 欧美日韩一二三区| 国精产品一区一区三区mba桃花| 欧美日韩你懂得| 日韩电影在线观看网站| 欧美喷水一区二区| 国产一本一道久久香蕉| 成人久久久精品乱码一区二区三区 | 成人久久久精品乱码一区二区三区| 国产欧美中文在线| 日本乱码高清不卡字幕| 亚洲国产一区二区在线播放| 91麻豆精品国产| 国产99精品在线观看| 亚洲情趣在线观看| 久久亚洲一区二区三区明星换脸| 亚洲国产精品天堂| 精品视频1区2区3区| 日韩国产欧美在线视频| 欧美va在线播放| 91色|porny| 亚洲成人第一页| 久久精品一区蜜桃臀影院| 91影院在线免费观看| 日韩—二三区免费观看av| 亚洲免费观看高清在线观看| 精品久久五月天| 欧美日韩在线观看一区二区| 92国产精品观看| 91黄色免费网站| 成人av影院在线| 激情都市一区二区| 国产曰批免费观看久久久| 老司机免费视频一区二区| 免费精品视频最新在线| 亚洲综合丁香婷婷六月香| 亚洲精品午夜久久久| 精品国产乱子伦一区| 亚洲小说欧美激情另类| 国模无码大尺度一区二区三区| 成人精品视频.| 日韩久久免费av| 亚洲一区成人在线| 不卡视频免费播放| 欧美一级免费大片| 亚洲人成在线播放网站岛国| 美女在线视频一区| 欧美一区二区在线免费观看| 国产精品久久久久久久久久久免费看| 亚洲激情男女视频| 成人免费电影视频| 欧美韩国日本一区| 国产东北露脸精品视频| 久久九九全国免费| 狠狠色丁香久久婷婷综合_中| 欧美一区二区三区日韩视频| 亚洲美女电影在线| 欧美自拍偷拍午夜视频| 亚洲女人的天堂| 欧美日韩一二三|