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

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

?? filetex.cpp

?? Demo Source for a doom like engine using raycasting and voxel
?? CPP
字號:
#include "ray.h"
#include "globals.h"
#include "rgobject.h"
#include "rayfile.h"
#include "texconst.h"
#include "utils.h"

void FlipBMP(Ptr data, unsigned short width, unsigned short height);
void Flip_Vert_BMP(PUCHAR source_image, USHORT width, USHORT height);    

void F_Get_Wall_Textures()
{
   if (wall_tex_loaded)
      F_Clear_WT();
   wall_tex_loaded=TRUE;
   short dir_index=F_Find_Dir("WALLTEXS");
   if (dir_index==-1)
      return;
   F_Seek(directory[dir_index].start);
   short num_straight_tex;
   F_Get_Short(num_straight_tex);
   char filename[13];       
   RCastGobject texturetemp(num_straight_tex);
   texturetemp.Hold();
   short next_image_num;
   short counter, counter2;

   // in order that we can use animated maps, we first
   // read the textures linearly, into one resource.
   // we then read a list of animation arrangments
   // so that multiple animations can be arranged from the same textures

   Number_Of_Textures=directory[dir_index].length+1;

   wall=(wall_entry *)NewPtr((Number_Of_Textures) * sizeof(wall_entry));

   wall[0].num_image=num_straight_tex;
   wall[0].images=(Byte **)NewPtr(num_straight_tex * sizeof(Byte *));
   wall[0].width=0;
   wall[0].height=0;
   wall[0].shift=0;

   for (counter=0; counter < num_straight_tex; counter++) {
      F_Get_String_NT(filename, F_NAME_LENGTH);
      texturetemp.assigninfile(filename);
      texturetemp.load(counter);
      FlipBMP(texturetemp.Image(counter), texturetemp.Width(), texturetemp.Height());
      wall[0].images[counter]=texturetemp.Image(counter);
   } /* endfor */

   for (counter=1; counter < Number_Of_Textures; counter++) {
      wall[counter].cur_image=0;
      wall[counter].anim_sum=0;
      F_Get_Short(wall[counter].num_image);
      F_Get_Long(wall[counter].anim_speed);
      F_Get_Short(wall[counter].width);
      F_Get_Short(wall[counter].height);
      wall[counter].shift=Check2Shift(wall[counter].height);
      wall[counter].images=(Byte **)NewPtr(wall[counter].num_image * sizeof(Byte *));
      for (counter2=0; counter2 < wall[counter].num_image; counter2++) {
         F_Get_Short(next_image_num);
         wall[counter].images[counter2]=wall[0].images[next_image_num];
      } /* endfor */
   } /* endfor */

}

void FlipBMP(Ptr data, unsigned short width, unsigned short height)
{
Ptr tempptr=NewPtr(sizeof(char)*width*height);
for (int i=0; i<height; i++) {
   for (int j=0; j<width; j++) {
      tempptr[j*height+i]=data[i*width+j];
   } /* endfor */
}
memcpy(data,tempptr,(sizeof(char)*width*height));
DelPtr( tempptr);
}

void F_Clear_WT()
{

   short counter1;

   for (counter1=0; counter1 < wall[0].num_image; counter1++) {
      delete wall[0].images[counter1];
   }

   for (counter1=0; counter1 < Number_Of_Textures; counter1++) {
      if (wall[counter1].images!=NULL)
        DelPtr( wall[counter1].images);
   } /* endfor */

   DelPtr( wall);

}

    
void F_Get_Floor_Textures()
{
   if (floor_tex_loaded)
      F_Clear_FT();
   floor_tex_loaded=TRUE;
   short dir_index=F_Find_Dir("FLOORTEX");
   if (dir_index==-1)
      return;
   F_Seek(directory[dir_index].start);
   short num_straight_tex;
   F_Get_Short(num_straight_tex);
   char filename[13];       
   RCastGobject texturetemp(num_straight_tex);
   texturetemp.Hold();
   short next_image_num;
   short counter, counter2;
   short tex_list_num;

   // in order that we can use animated maps, we first
   // read the textures linearly, into one resource.
   // we then read a list of animation arrangments
   // so that multiple animations can be arranged from the same textures

   Number_Of_FTs=directory[dir_index].length+2;

   tex_list_num=Number_Of_FTs-1;

   floortex=(wall_entry *)NewPtr((Number_Of_FTs) * sizeof(wall_entry));

   floortex[tex_list_num].num_image=num_straight_tex;
   floortex[tex_list_num].images=(Byte **)NewPtr(num_straight_tex * sizeof(Byte *));

   for (counter=0; counter < num_straight_tex; counter++) {
      F_Get_String_NT(filename, 13);
      texturetemp.assigninfile(filename);
      texturetemp.load(counter);
      Flip_Vert_BMP(texturetemp.Image(counter), texturetemp.Width(), texturetemp.Height());
      floortex[tex_list_num].images[counter]=texturetemp.Image(counter);
   } /* endfor */

   for (counter=0; counter < (Number_Of_FTs-2); counter++) {
      floortex[counter].cur_image=0;
      floortex[counter].anim_sum=0;
      F_Get_Short(floortex[counter].num_image);
      F_Get_Long(floortex[counter].anim_speed);
      floortex[counter].width=FLOOR_WIDTH;
      floortex[counter].height=FLOOR_HEIGHT;
      floortex[counter].shift=FLOOR_SHIFT;
      floortex[counter].images=(Byte **)NewPtr(floortex[counter].num_image * sizeof(Byte *));
      for (counter2=0; counter2 < floortex[counter].num_image; counter2++) {
         F_Get_Short(next_image_num);
         floortex[counter].images[counter2]=floortex[tex_list_num].images[next_image_num];
      } /* endfor */
   } /* endfor */

   F_Get_Sky();

}

void Flip_Vert_BMP(PUCHAR source_image, USHORT width, USHORT height)
{
USHORT rev_y, norm_y, x;
PUCHAR dest_image;

if ((dest_image=NewPtr(width*height*sizeof(UCHAR)))==NULL)
  return;

rev_y=height-1;
for (norm_y=0; norm_y<height; norm_y++) {
  for (x=0; x<width; x++) {
    dest_image[norm_y*width+x]=source_image[rev_y*width+x];
  }
  rev_y--;
}

memcpy(source_image, dest_image, width * height * sizeof(UCHAR));
DelPtr( dest_image);
}

void F_Clear_FT()
{

   short counter1;

   for (counter1=0; counter1 < floortex[Number_Of_FTs-1].num_image; counter1++) {
      delete floortex[Number_Of_FTs-1].images[counter1];
   }

   F_Clear_Sky();

   for (counter1=0; counter1< (Number_Of_FTs); counter1++) {
      if (floortex[counter1].images!=NULL)
      DelPtr( floortex[counter1].images);
   } /* endfor */

   DelPtr( floortex);

}

void F_Get_Sky()
{
   short dir_index=F_Find_Dir("SKYTEX  ");
   if (dir_index==-1)
      return;
   F_Seek(directory[dir_index].start);

   sky_texture=&floortex[Number_Of_FTs-2];

   sky_texture->cur_image=0;
   sky_texture->anim_sum=0;
 
   F_Get_Short(sky_texture->num_image);
   F_Get_Long(sky_texture->anim_speed);
   sky_texture->width=SKY_WIDTH;
   sky_texture->height=SKY_HEIGHT;
   sky_texture->shift=SKY_SHIFT;

   char filename[13];
   RCastGobject sky_temp(sky_texture->num_image);
   sky_temp.Hold();
   sky_texture->images=(Byte **)NewPtr(sky_texture->num_image * sizeof(Byte *));
   for (short cur_tex=0; cur_tex<sky_texture->num_image; cur_tex++) {
      F_Get_String_NT(filename, 13);
      sky_temp.assigninfile(filename);
      sky_temp.load(cur_tex);
      FlipBMP(sky_temp.Image(cur_tex), sky_temp.Width(), sky_temp.Height());
      sky_texture->images[cur_tex]=sky_temp.Image(cur_tex);
   }
}

void F_Clear_Sky()
{
   for (short cur_tex=0; cur_tex<sky_texture->num_image; cur_tex++)
      delete sky_texture->images[cur_tex];

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区理论电影在线观看| 在线不卡中文字幕播放| 国产日韩成人精品| 风间由美中文字幕在线看视频国产欧美 | 国产精品女同一区二区三区| 成人在线视频一区| 玉足女爽爽91| 色悠悠久久综合| 午夜激情综合网| 欧美精品一区二区精品网| 国产乱码精品一区二区三区av| 国产亚洲综合av| 一本一本大道香蕉久在线精品 | 日本不卡一二三| 久久综合五月天婷婷伊人| 国产成人在线视频网站| 亚洲手机成人高清视频| 在线精品视频一区二区三四| 午夜欧美一区二区三区在线播放| 日韩一级免费观看| 高清不卡一二三区| 五月婷婷久久综合| 久久嫩草精品久久久久| 91麻豆123| 久久精品国产澳门| 中文字幕亚洲欧美在线不卡| 在线播放国产精品二区一二区四区| 美腿丝袜亚洲一区| 国产精品国模大尺度视频| 欧美一区二区免费| 一本大道久久a久久综合婷婷 | 日本成人在线网站| 国产精品视频九色porn| 欧美精品久久99久久在免费线| 国产不卡一区视频| 亚洲成av人**亚洲成av**| 日本一区二区三区视频视频| 欧美日韩一级二级| 成人av网站在线| 蜜臂av日日欢夜夜爽一区| 最新国产成人在线观看| 精品人伦一区二区色婷婷| 91啪在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲午夜三级在线| 中文字幕免费观看一区| 日韩一区二区三区电影在线观看 | 欧美一级日韩免费不卡| 91视频免费看| 国产高清在线精品| 久久成人18免费观看| 一区二区三区欧美日| 日本一区二区三区四区在线视频| 欧美一区二区美女| 欧美日韩www| 一本大道av一区二区在线播放| 国产一区二区三区四| 日本亚洲最大的色成网站www| 亚洲精品成人少妇| 国产精品久久久久久久久免费樱桃 | 久久99国产精品尤物| 亚洲第一福利一区| 亚洲夂夂婷婷色拍ww47| 综合久久国产九一剧情麻豆| 久久久久久久电影| 精品国产电影一区二区| 6080yy午夜一二三区久久| 欧美日韩视频在线观看一区二区三区| 91亚洲精华国产精华精华液| 国产成人高清视频| 高清成人免费视频| 粉嫩av亚洲一区二区图片| 国产精品资源在线观看| 国产一区二区在线看| 国产尤物一区二区| 国产一区二区三区电影在线观看| 蜜芽一区二区三区| 久久99久久久久久久久久久| 麻豆精品国产91久久久久久| 奇米一区二区三区| 久久se精品一区精品二区| 精品一区二区三区欧美| 激情成人综合网| 国产精品一区二区在线看| 国产精品99久久久| 成人美女视频在线观看| 91免费版在线| 欧美性xxxxxx少妇| 337p亚洲精品色噜噜噜| 日韩一区二区三区观看| 久久综合av免费| 中文字幕欧美激情一区| 亚洲美女区一区| 天堂在线亚洲视频| 国产在线麻豆精品观看| 国产99久久久国产精品| 91免费国产在线观看| 欧美日韩大陆一区二区| 日韩精品中文字幕一区二区三区| 精品国产露脸精彩对白| 国产精品成人免费| 亚洲一区免费在线观看| 日韩av一级片| 国产91对白在线观看九色| 色综合色综合色综合| 777久久久精品| 国产日韩欧美精品电影三级在线| 亚洲人被黑人高潮完整版| 午夜精品成人在线视频| 国产一区二区三区在线观看免费| 99久久久久免费精品国产| 欧美精品久久一区二区三区| 久久嫩草精品久久久久| 一二三区精品福利视频| 日韩成人一区二区| jlzzjlzz亚洲日本少妇| 91.com在线观看| 国产精品国产三级国产aⅴ原创 | 国产精品人人做人人爽人人添| 一区二区三区不卡在线观看| 久久精品国产精品青草| 91麻豆自制传媒国产之光| 欧美一区二区三级| 一区二区中文视频| 久久99久久精品欧美| 欧美专区日韩专区| 国产色爱av资源综合区| 亚洲动漫第一页| 不卡视频一二三四| 亚洲精品一线二线三线| 亚洲一区二区三区视频在线| 国产成人av一区| 欧美xxxx老人做受| 婷婷一区二区三区| 91日韩精品一区| 国产精品丝袜一区| 久草中文综合在线| 欧美人妇做爰xxxⅹ性高电影| 国产精品天天摸av网| 国产自产v一区二区三区c| 欧美日韩在线免费视频| 1区2区3区精品视频| 国产大陆亚洲精品国产| 日韩亚洲欧美在线| 五月婷婷综合在线| 日本二三区不卡| 亚洲欧洲99久久| 成人免费高清视频在线观看| 精品国产91乱码一区二区三区 | 麻豆国产一区二区| 欧美福利视频一区| 亚洲小少妇裸体bbw| 菠萝蜜视频在线观看一区| 久久综合九色综合97婷婷女人 | 91国内精品野花午夜精品| 国产精品美女久久久久av爽李琼| 国产在线观看一区二区| 日韩女同互慰一区二区| 日韩高清欧美激情| 欧美精品黑人性xxxx| 天天av天天翘天天综合网色鬼国产 | 国产成人亚洲综合a∨婷婷图片| 欧美成人三级电影在线| 免费的成人av| 正在播放亚洲一区| 日本不卡一二三区黄网| 91麻豆精品91久久久久久清纯| 午夜视频在线观看一区| 欧美日韩一区二区在线观看| 香蕉成人啪国产精品视频综合网| 在线精品观看国产| 亚洲午夜在线电影| 91精品国产色综合久久久蜜香臀| 日韩专区欧美专区| 亚洲一区二区三区四区在线观看| 风间由美一区二区av101| 国产偷国产偷精品高清尤物| 国产伦精一区二区三区| 国产亚洲精品久| 91亚洲资源网| 一区二区三区四区在线| 精品视频123区在线观看| 男人操女人的视频在线观看欧美| 91精品国产手机| 国产盗摄一区二区| 亚洲人xxxx| 日韩一区二区电影| 国产精品77777| 一区2区3区在线看| 欧美xxxxx牲另类人与| 国产福利一区在线观看| 亚洲免费电影在线| 欧美精品第1页| 国产成人日日夜夜| 尤物av一区二区| 欧美videossexotv100| www.性欧美| 男女激情视频一区| 国产精品久久久久永久免费观看| 欧美丝袜丝交足nylons|