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

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

?? core_graphics.cpp

?? 用DirectX編寫RPG游戲-Programming.Role.Playing.Games.with.DirectX
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
  if((m_Graphics = Graphics) == NULL)
    return FALSE;
  if(Graphics->GetDeviceCOM() == NULL)
    return FALSE;
  if(Filename == NULL)
    return FALSE;

  if(FAILED(D3DXCreateTextureFromFileEx(Graphics->GetDeviceCOM(),
    Filename, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT,
    0, Format, D3DPOOL_MANAGED, 
    D3DX_FILTER_TRIANGLE, D3DX_FILTER_TRIANGLE,
    Transparent, NULL, NULL, &m_Texture)))
      return FALSE;

  m_Width = GetWidth();
  m_Height = GetHeight();

  return TRUE;
}

BOOL cTexture::Create(cGraphics *Graphics, IDirect3DTexture8 *Texture)
{
  D3DLOCKED_RECT SrcRect, DestRect;
  D3DSURFACE_DESC Desc;

  Free();

  if((m_Graphics = Graphics) == NULL)
    return FALSE;

  if(Texture == NULL)
    return TRUE;
    
  // Copy texture over
  Texture->GetLevelDesc(0, &Desc);
  m_Width  = Desc.Width;
  m_Height = Desc.Height;
  m_Graphics->GetDeviceCOM()->CreateTexture(m_Width, m_Height, 0, 0, Desc.Format, D3DPOOL_MANAGED, &m_Texture);

  Texture->LockRect(0, &SrcRect, NULL, D3DLOCK_READONLY);
  m_Texture->LockRect(0, &DestRect, NULL, 0);

  memcpy(DestRect.pBits, SrcRect.pBits, SrcRect.Pitch * m_Height);

  m_Texture->UnlockRect(0);
  Texture->UnlockRect(0);

  return TRUE;
}

BOOL cTexture::Free()
{
  ReleaseCOM(m_Texture);
  m_Graphics = NULL;
  m_Width = m_Height = 0;

  return TRUE;
}

BOOL cTexture::IsLoaded()
{
  if(m_Texture == NULL)
    return FALSE;
  return TRUE;
}

IDirect3DTexture8 *cTexture::GetTextureCOM()
{
  return m_Texture;
}

long cTexture::GetWidth()
{
  D3DSURFACE_DESC d3dsd;

  if(m_Texture == NULL)
    return 0;

  if(FAILED(m_Texture->GetLevelDesc(0, &d3dsd)))
    return 0;

  return d3dsd.Width;
}

long cTexture::GetHeight()
{
  D3DSURFACE_DESC d3dsd;

  if(m_Texture == NULL)
    return 0;

  if(FAILED(m_Texture->GetLevelDesc(0, &d3dsd)))
    return 0;

  return d3dsd.Height;
}

D3DFORMAT cTexture::GetFormat()
{
  D3DSURFACE_DESC d3dsd;

  if(m_Texture == NULL)
    return D3DFMT_UNKNOWN;

  if(FAILED(m_Texture->GetLevelDesc(0, &d3dsd)))
    return D3DFMT_UNKNOWN;

  return d3dsd.Format;
}

BOOL cTexture::Blit(long DestX, long DestY,                   \
                    long SrcX, long SrcY,                     \
                    long Width, long Height,                  \
                    float XScale, float YScale,               \
                    D3DCOLOR Color)
{
  RECT Rect;
  ID3DXSprite *pSprite;

  if(m_Texture == NULL)
    return FALSE;
  if(m_Graphics == NULL)
    return FALSE;
  if((pSprite = m_Graphics->GetSpriteCOM()) == NULL)
    return FALSE;

  if(!Width)
    Width = m_Width;
  if(!Height)
    Height = m_Height;

  Rect.left = SrcX;
  Rect.top  = SrcY;
  Rect.right = Rect.left + Width;
  Rect.bottom = Rect.top + Height;

  if(FAILED(pSprite->Draw(m_Texture,                          \
         &Rect, &D3DXVECTOR2(XScale, YScale),                 \
         NULL, 0.0f,                                          \
         &D3DXVECTOR2((float)DestX, (float)DestY),            \
         Color)))
    return FALSE;
  return TRUE;
}

cMaterial::cMaterial()
{
  // Set a default material (white)
  ZeroMemory(&m_Material, sizeof(D3DMATERIAL8));
  SetDiffuseColor(255,255,255);
  SetAmbientColor(255,255,255);
  SetSpecularColor(255,255,255);
  SetEmissiveColor(0,0,0);
  SetPower(1.0f);
}

BOOL cMaterial::SetDiffuseColor(char Red, char Green, char Blue)
{
  m_Material.Diffuse.r = 1.0f / 255.0f * (float)Red;
  m_Material.Diffuse.g = 1.0f / 255.0f * (float)Green;
  m_Material.Diffuse.b = 1.0f / 255.0f * (float)Blue;

  return TRUE;
}

BOOL cMaterial::GetDiffuseColor(char *Red, char *Green, char *Blue)
{
  if(Red != NULL)
    *Red = (char)(255.0f * m_Material.Diffuse.r);

  if(Green != NULL)
    *Green = (char)(255.0f * m_Material.Diffuse.g);

  if(Blue != NULL)
    *Blue = (char)(255.0f * m_Material.Diffuse.b);

  return TRUE;
}

BOOL cMaterial::SetAmbientColor(char Red, char Green, char Blue)
{
  m_Material.Ambient.r = 1.0f / 255.0f * (float)Red;
  m_Material.Ambient.g = 1.0f / 255.0f * (float)Green;
  m_Material.Ambient.b = 1.0f / 255.0f * (float)Blue;

  return TRUE;
}

BOOL cMaterial::GetAmbientColor(char *Red, char *Green, char *Blue)
{
  if(Red != NULL)
    *Red = (char)(255.0f * m_Material.Ambient.r);

  if(Green != NULL)
    *Green = (char)(255.0f * m_Material.Ambient.g);

  if(Blue != NULL)
    *Blue = (char)(255.0f * m_Material.Ambient.b);

  return TRUE;
}

BOOL cMaterial::SetSpecularColor(char Red, char Green, char Blue)
{
  m_Material.Specular.r = 1.0f / 255.0f * (float)Red;
  m_Material.Specular.g = 1.0f / 255.0f * (float)Green;
  m_Material.Specular.b = 1.0f / 255.0f * (float)Blue;

  return TRUE;
}

BOOL cMaterial::GetSpecularColor(char *Red, char *Green, char *Blue)
{
  if(Red != NULL)
    *Red = (char)(255.0f * m_Material.Specular.r);

  if(Green != NULL)
    *Green = (char)(255.0f * m_Material.Specular.g);

  if(Blue != NULL)
    *Blue = (char)(255.0f * m_Material.Specular.b);

  return TRUE;
}

BOOL cMaterial::SetEmissiveColor(char Red, char Green, char Blue)
{
  m_Material.Emissive.r = 1.0f / 255.0f * (float)Red;
  m_Material.Emissive.g = 1.0f / 255.0f * (float)Green;
  m_Material.Emissive.b = 1.0f / 255.0f * (float)Blue;

  return TRUE;
}

BOOL cMaterial::GetEmissiveColor(char *Red, char *Green, char *Blue)
{
  if(Red != NULL)
    *Red = (char)(255.0f * m_Material.Emissive.r);

  if(Green != NULL)
    *Green = (char)(255.0f * m_Material.Emissive.g);

  if(Blue != NULL)
    *Blue = (char)(255.0f * m_Material.Emissive.b);

  return TRUE;
}

BOOL cMaterial::SetPower(float Power)
{
  m_Material.Power = Power;
  return TRUE;
}

float cMaterial::GetPower(float Power)
{
  return m_Material.Power;
}

D3DMATERIAL8 *cMaterial::GetMaterial()
{
  return &m_Material;
}

cLight::cLight()
{
  // Set a default light to point
  ZeroMemory(&m_Light, sizeof(D3DLIGHT8));
  SetType(D3DLIGHT_POINT);
  Move(0.0f, 0.0f, 0.0f);
  SetDiffuseColor(255,255,255);
  SetAmbientColor(255,255,255);
  SetRange(1000.0f);
}

BOOL cLight::SetType(D3DLIGHTTYPE Type)
{
  m_Light.Type = Type;
  return TRUE;
}

BOOL cLight::Move(float XPos, float YPos, float ZPos)
{
  m_Light.Position.x = XPos;
  m_Light.Position.y = YPos;
  m_Light.Position.z = ZPos;
  return TRUE;
}

BOOL cLight::MoveRel(float XPos, float YPos, float ZPos)
{
  m_Light.Position.x += XPos;
  m_Light.Position.y += YPos;
  m_Light.Position.z += ZPos;
  return TRUE;
}

BOOL cLight::GetPos(float *XPos, float *YPos, float *ZPos)
{
  if(XPos != NULL)
    *XPos = m_Light.Position.x;
  if(YPos != NULL)
    *YPos = m_Light.Position.y;
  if(ZPos != NULL)
    *ZPos = m_Light.Position.z;
  return TRUE;
}

BOOL cLight::Point(float XFrom, float YFrom, float ZFrom,
                   float XAt,   float YAt,   float ZAt)
{
  D3DXVECTOR3 vecSrc;
  D3DXVECTOR3 vecDest;

  // Move the light
  Move(XFrom, YFrom, ZFrom);

  // Calculate vector between angles
  m_Light.Direction.x = XAt - XFrom;
  m_Light.Direction.y = YAt - YFrom;
  m_Light.Direction.z = ZAt - ZFrom;

  return TRUE;
}

BOOL cLight::GetDirection(float *XDir, float *YDir, float *ZDir)
{
  if(XDir != NULL)
    *XDir = m_Light.Direction.x;
  if(YDir != NULL)
    *YDir = m_Light.Direction.y;
  if(ZDir != NULL)
    *ZDir = m_Light.Direction.z;
  return TRUE;
}

BOOL cLight::SetDiffuseColor(char Red, char Green, char Blue)
{
  m_Light.Diffuse.r = 1.0f / 255.0f * (float)Red;
  m_Light.Diffuse.g = 1.0f / 255.0f * (float)Green;
  m_Light.Diffuse.b = 1.0f / 255.0f * (float)Blue;

  return TRUE;
}

BOOL cLight::GetDiffuseColor(char *Red, char *Green, char *Blue)
{
  if(Red != NULL)
    *Red = (char)(255.0f * m_Light.Diffuse.r);

  if(Green != NULL)
    *Green = (char)(255.0f * m_Light.Diffuse.g);

  if(Blue != NULL)
    *Blue = (char)(255.0f * m_Light.Diffuse.b);

  return TRUE;
}

BOOL cLight::SetSpecularColor(char Red, char Green, char Blue)
{
  m_Light.Specular.r = 1.0f / 255.0f * (float)Red;
  m_Light.Specular.g = 1.0f / 255.0f * (float)Green;
  m_Light.Specular.b = 1.0f / 255.0f * (float)Blue;

  return TRUE;
}

BOOL cLight::GetSpecularColor(char *Red, char *Green, char *Blue)
{
  if(Red != NULL)
    *Red = (char)(255.0f * m_Light.Specular.r);

  if(Green != NULL)
    *Green = (char)(255.0f * m_Light.Specular.g);

  if(Blue != NULL)
    *Blue = (char)(255.0f * m_Light.Specular.b);

  return TRUE;
}

BOOL cLight::SetAmbientColor(char Red, char Green, char Blue)
{
  m_Light.Ambient.r = 1.0f / 255.0f * (float)Red;
  m_Light.Ambient.g = 1.0f / 255.0f * (float)Green;
  m_Light.Ambient.b = 1.0f / 255.0f * (float)Blue;

  return TRUE;
}

BOOL cLight::GetAmbientColor(char *Red, char *Green, char *Blue)
{
  if(Red != NULL)
    *Red = (char)(255.0f * m_Light.Ambient.r);

  if(Green != NULL)
    *Green = (char)(255.0f * m_Light.Ambient.g);

  if(Blue != NULL)
    *Blue = (char)(255.0f * m_Light.Ambient.b);

  return TRUE;
}

BOOL cLight::SetRange(float Range)
{
  m_Light.Range = Range;
  return TRUE;
}

float cLight::GetRange()
{
  return m_Light.Range;
}

BOOL cLight::SetFalloff(float Falloff)
{
  m_Light.Falloff = Falloff;
  return TRUE;
}

float cLight::GetFalloff()
{
  return m_Light.Falloff;
}

BOOL cLight::SetAttenuation0(float Attenuation)
{
  m_Light.Attenuation0 = Attenuation;
  return TRUE;
}

float cLight::GetAttenuation0()
{
  return m_Light.Attenuation0;
}

BOOL cLight::SetAttenuation1(float Attenuation)
{
  m_Light.Attenuation1 = Attenuation;
  return TRUE;
}

float cLight::GetAttenuation1()
{
  return m_Light.Attenuation1;
}

BOOL cLight::SetAttenuation2(float Attenuation)
{
  m_Light.Attenuation2 = Attenuation;
  return TRUE;
}

float cLight::GetAttenuation2()
{
  return m_Light.Attenuation2;
}

BOOL cLight::SetTheta(float Theta)
{
  m_Light.Theta = Theta;
  return TRUE;
}

float cLight::GetTheta()
{
  return m_Light.Theta;
}

BOOL cLight::SetPhi(float Phi)
{
  m_Light.Phi = Phi;
  return TRUE;
}

float cLight::GetPhi()
{
  return m_Light.Phi;
}

D3DLIGHT8 *cLight::GetLight()
{
  return &m_Light;
}

cVertexBuffer::cVertexBuffer()
{
  m_Graphics = NULL;
  m_pVB = NULL;
  m_NumVertices = 0;
  m_FVF = 0;
  m_Locked = FALSE;
  m_Ptr = NULL;
}

cVertexBuffer::~cVertexBuffer()
{
  Free();
}

IDirect3DVertexBuffer8 *cVertexBuffer::GetVertexBufferCOM()
{
  return m_pVB;
}

unsigned long cVertexBuffer::GetVertexSize()
{
  return D3DXGetFVFVertexSize(m_FVF);
}

unsigned long cVertexBuffer::GetVertexFVF()
{
  return m_FVF;
}

unsigned long cVertexBuffer::GetNumVertices()
{
  return m_NumVertices;
}

BOOL cVertexBuffer::Create(cGraphics *Graphics, unsigned long NumVertices, DWORD Descriptor, long VertexSize)
{
  Free();

  if((m_Graphics = Graphics) == NULL)
    return FALSE;
  if(m_Graphics->GetDeviceCOM() == NULL)
    return FALSE;
  if(!(m_NumVertices = NumVertices) || !(m_FVF = Descriptor) || !(m_VertexSize = VertexSize))
    return FALSE;

  if(FAILED(m_Graphics->GetDeviceCOM()->CreateVertexBuffer(
       m_NumVertices * m_VertexSize,
       0, m_FVF,
       D3DPOOL_DEFAULT, &m_pVB)))
    return FALSE;

  return TRUE;
}

BOOL cVertexBuffer::Free()
{
  Unlock();
  ReleaseCOM(m_pVB);
  m_Graphics = NULL;
  m_NumVertices = 0;
  m_FVF = 0;
  m_Locked = FALSE;
  m_Ptr = NULL;

  return TRUE;
}

BOOL cVertexBuffer::Set(unsigned long FirstVertex, unsigned long NumVertices, void *VertexList)
{
  if(m_Graphic

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区视频播放| 精东粉嫩av免费一区二区三区| 性做久久久久久免费观看 | 亚洲一区二区在线播放相泽| 亚洲成av人**亚洲成av**| 国产福利91精品一区二区三区| 欧美日韩一区二区三区免费看| 国产性做久久久久久| 日日噜噜夜夜狠狠视频欧美人| 国产成人精品影视| 欧美一区二区视频网站| 亚洲精品网站在线观看| 成人性生交大片免费看中文网站| 91精品国产综合久久小美女| 亚洲日穴在线视频| 成人精品国产福利| 亚洲精品在线观看视频| 日本成人在线不卡视频| 欧美午夜电影在线播放| 中文字幕亚洲综合久久菠萝蜜| 国内成人自拍视频| 日韩精品一区二区三区视频| 亚洲成av人**亚洲成av**| 日本伦理一区二区| 亚洲图片欧美激情| av电影天堂一区二区在线 | 国产综合色精品一区二区三区| 欧美伊人久久大香线蕉综合69 | 欧美一区二区人人喊爽| 亚洲成人av电影| 欧美三区免费完整视频在线观看| 最新热久久免费视频| 高清成人在线观看| 久久精品一区八戒影视| 国产麻豆日韩欧美久久| 国产视频一区在线观看| 国产精品一区二区男女羞羞无遮挡 | 在线观看不卡一区| 亚洲激情中文1区| 在线区一区二视频| 亚洲午夜私人影院| 制服.丝袜.亚洲.中文.综合| 天天色 色综合| 91精品麻豆日日躁夜夜躁| 日韩电影一区二区三区四区| 欧美一级黄色大片| 国产又黄又大久久| 国产精品色哟哟| caoporn国产一区二区| 亚洲三级电影全部在线观看高清| 日本道色综合久久| 喷水一区二区三区| 精品噜噜噜噜久久久久久久久试看| 国产一区在线不卡| 国产精品美女久久久久aⅴ国产馆| caoporn国产一区二区| 亚洲综合网站在线观看| 欧美一区二区久久久| 国产乱对白刺激视频不卡| 国产精品人妖ts系列视频| 日本大香伊一区二区三区| 日本欧美一区二区| 中文av字幕一区| 色香蕉久久蜜桃| 久久精品99久久久| 综合在线观看色| 日韩视频免费观看高清完整版在线观看| 精品亚洲国产成人av制服丝袜 | 成人永久免费视频| 亚洲一区二区三区中文字幕| 日韩午夜精品电影| 91丨九色丨尤物| 男人的j进女人的j一区| 国产精品嫩草影院com| 欧美三日本三级三级在线播放| 精品一区中文字幕| 亚洲另类春色国产| 国产欧美日韩在线视频| 欧美日产在线观看| aaa国产一区| 精品一二线国产| 亚洲制服丝袜在线| 中国色在线观看另类| 日韩一区二区精品在线观看| 成人免费高清在线| 黑人巨大精品欧美黑白配亚洲| 一区二区三区中文字幕电影| 国产亚洲欧美日韩日本| 在线不卡a资源高清| 99国产精品久| 国产精品一区二区黑丝| 热久久一区二区| 亚洲最快最全在线视频| 中文字幕精品综合| 久久综合九色欧美综合狠狠| 欧美美女网站色| 一本大道av伊人久久综合| 高潮精品一区videoshd| 国产一区二区在线看| 欧美aaaaa成人免费观看视频| 一区二区三区国产精华| 国产蜜臀av在线一区二区三区| 欧美军同video69gay| 在线免费av一区| 91黄色免费观看| 99久久综合狠狠综合久久| 国产91色综合久久免费分享| 九九久久精品视频| 免费看欧美女人艹b| 天堂成人国产精品一区| 亚洲18影院在线观看| 亚洲午夜久久久久中文字幕久| 一区二区在线观看视频| 亚洲另类一区二区| 亚洲男人天堂av| 亚洲综合清纯丝袜自拍| 亚洲一区在线视频| 精品国产麻豆免费人成网站| 免费人成在线不卡| 中文字幕一区二区不卡| 亚洲欧洲美洲综合色网| 国产精品久久久久精k8| 国产精品色哟哟| 亚洲欧美偷拍三级| 亚洲一区在线观看视频| 天堂精品中文字幕在线| 奇米一区二区三区| 精品一区二区av| 成人综合婷婷国产精品久久免费| 国产a区久久久| a在线欧美一区| 91成人免费电影| 日韩一二在线观看| 久久伊人蜜桃av一区二区| 国产欧美日产一区| 亚洲精品国产无套在线观| 婷婷久久综合九色综合绿巨人| 奇米777欧美一区二区| 国产麻豆精品视频| 91碰在线视频| 7777精品伊人久久久大香线蕉的| 精品国产乱码91久久久久久网站| 国产人成亚洲第一网站在线播放 | 国产在线播放一区| av亚洲精华国产精华精| 欧美三日本三级三级在线播放| 日韩一区二区三区精品视频| www国产成人| 亚洲九九爱视频| 日韩激情视频网站| 成人午夜短视频| 6080yy午夜一二三区久久| 久久精品在线观看| 亚洲综合男人的天堂| 国产精一区二区三区| 在线免费观看日韩欧美| 精品国产不卡一区二区三区| 亚洲欧美电影一区二区| 日本不卡一区二区三区 | 国产农村妇女精品| 手机精品视频在线观看| 国产69精品久久久久毛片 | 亚洲成av人片一区二区| 国产精品一区二区男女羞羞无遮挡| 一本色道**综合亚洲精品蜜桃冫| 日韩免费观看2025年上映的电影| 亚洲视频免费在线观看| 国产一区在线观看麻豆| 欧美日韩久久久一区| 国产精品入口麻豆原神| 美女视频一区二区| 在线一区二区三区四区五区| 久久女同性恋中文字幕| 日本欧美一区二区三区| 色婷婷综合久久久久中文一区二区 | 色综合久久综合中文综合网| 久久亚洲一级片| 免费观看在线综合| 欧美精三区欧美精三区| 自拍偷拍欧美激情| 国产91精品在线观看| 精品久久久久久久久久久久包黑料| 一区二区三区在线免费观看| 成人av电影在线播放| 国产色产综合色产在线视频| 免费高清视频精品| 91精品欧美综合在线观看最新| 亚洲精品一二三| 色哟哟一区二区在线观看| 国产精品久久久久久久久图文区| 国产一区 二区| 久久这里只有精品首页| 久久精品国产一区二区| 91精品国产丝袜白色高跟鞋| 亚洲午夜在线视频| 欧美丝袜第三区| 亚洲一线二线三线久久久| 在线观看国产一区二区| 亚洲精品欧美激情| 欧美在线free|