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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fixedfuncshader.cpp

?? activate your member account after checking your files. If
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
//======================================================================================//
// filename: FixedFuncShader.cpp                                                        //
//                                                                                      //
// author:   Pedro V. Sander                                                            //
//           ATI Research, Inc.                                                         //
//           3D Application Research Group                                              //
//           email: psander@ati.com                                                     //
//                                                                                      //
// Description: A programmable shader that                                              //
//              emulates parts of the fixed function pipeline                           //
//                                                                                      //
//======================================================================================//
//   (C) 2003 ATI Research, Inc.  All rights reserved.                                  //
//======================================================================================//

#define STRICT
#include <Windows.h>
#include <commctrl.h>
#include <math.h>
#include <stdio.h>
#include <D3DX9.h>
#include "DXUtil.h"
#include "D3DEnumeration.h"
#include "D3DSettings.h"
#include "D3DApp.h"
#include "D3DFont.h"
#include "D3DFile.h"
#include "D3DUtil.h"
#include "Resource.h"

#include "Effects/FixedFuncShader.fxh"
#include "Stats.h"
#include "SceneState.h"


//Display modes
enum FFS_MODE {FFS_MODE_SHADER, FFS_MODE_FIXED, FFS_MODE_BOTH, FFS_MODE_DIFF};

//Vertex structure
struct D3DVERTEX
{
   FLOAT px, py, pz;
   FLOAT nx, ny, nz;
   D3DCOLOR c;
   FLOAT tu, tv;
   static const DWORD FVF;
};
const DWORD D3DVERTEX::FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1;

//simple renderquad function
void RenderQuad(LPDIRECT3DDEVICE9 pd3dDevice, float x0, float y0, float x1, float y1, D3DCOLOR c);

//-----------------------------------------------------------------------------
// Name: class CMyD3DApplication
// Desc: Application class. The base class (CD3DApplication) provides the 
//       generic functionality needed in all Direct3D samples. CMyD3DApplication 
//       adds functionality specific to this sample program.
//-----------------------------------------------------------------------------
class CMyD3DApplication : public CD3DApplication
{	
   CD3DFont*   m_pFont;                      // Font for drawing text
   CD3DFont*   m_pFontSmall;                 // Font for drawing text
   bool        m_bUseD3DX;                   // Whether to use D3DXIntersect
   CD3DMesh*   m_pObject;                    // Object to render
   CD3DMesh*   m_pObject2;

   CD3DArcBall         m_ArcBall;                  // ArcBall used for mouse input
   D3DXMATRIXA16       m_matArcBall;

   //mesh vertex and index buffers
   LPDIRECT3DVERTEXBUFFER9 m_pMeshVB;
   LPDIRECT3DVERTEXBUFFER9 m_pMesh2VB;
   LPDIRECT3DINDEXBUFFER9  m_pMeshIB;

   //transformation matrices
   D3DXMATRIXA16 m_matView;
   D3DXMATRIXA16 m_matViewTrans;
   D3DXMATRIXA16 m_matViewRot;
   D3DXMATRIXA16 m_matWorld;
   D3DXMATRIXA16 m_matProj;

   //vertex deplarations
   LPDIRECT3DVERTEXDECLARATION9 m_pVertexDeclaration;
   LPDIRECT3DVERTEXDECLARATION9 m_pVertexDeclarationTween;

   //display mode (shader, fixed, both, or diff)
   FFS_MODE m_Mode;

   //current settings
   CSceneState m_scenestate;


   //diff state and settings
   bool        m_bDiffInit;            
   bool        m_bDiffSensitivity;

   bool        m_bShowSettingsText;

   DWORD       m_dwNumVertices;
   DWORD       m_dwNumFaces;

   //shader effects class
   LPD3DXEFFECT m_pEffect;

   //window dimensions
   int m_iWidth;
   int m_iHeight;

   //time of last FrameMove call
   float m_fTimeOld;

   //statistics gathering class instances
   CStats m_statFrameError;

   //state and mesh filenames and directories
   TCHAR m_strAppDir[512];
   TCHAR m_strMeshInitialDir[512];
   TCHAR m_strStateInitialDir[512];
   TCHAR m_strMeshFilename[512];
   TCHAR m_strStateFilename[512];

   //mesh info
   D3DXVECTOR3 m_vObjectCenter;
   float m_fObjectRadius;

   //textures used for diff mode
   LPDIRECT3DTEXTURE9 m_pTexture1;
   LPDIRECT3DTEXTURE9 m_pTexture2;
   LPDIRECT3DTEXTURE9 m_pTexture3;
   LPDIRECT3DSURFACE9 m_pTextureSurface1;
   LPDIRECT3DSURFACE9 m_pTextureSurface2;
   LPDIRECT3DSURFACE9 m_pTextureSurface3;

   //the environment map
   LPDIRECT3DCUBETEXTURE9 m_pCubeMap;    

   //vertex buffers for diff rendering
   LPDIRECT3DVERTEXBUFFER9 m_pQuadVB;

   //currently selected parameters
   int m_iCurParam;
   int m_iCurParamLight;

   float m_fTweenFactor;

   //settings from command line
   bool m_bLoadState;

   // Internal member functions

   HRESULT ConfirmDevice(D3DCAPS9*, DWORD, D3DFORMAT, D3DFORMAT);

   HRESULT OneTimeSceneInit();
   HRESULT InitDeviceObjects();
   HRESULT RestoreDeviceObjects();
   HRESULT InvalidateDeviceObjects();
   HRESULT DeleteDeviceObjects();
   HRESULT Render();
   void RenderSettings(CSceneState *psceneState, float xText = 2.f);

   HRESULT FrameMove();
   HRESULT FinalCleanup();

   HRESULT InitDiff();
   HRESULT ReleaseDiff();
   void RenderErrorBar();


   HRESULT LoadState();
   HRESULT LoadFullState();
   void SaveState();

   void ParseCommandLine();

public:
   LRESULT MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
   CMyD3DApplication();
};

//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: Entry point to the program. Initializes everything, and goes into a
//       message-processing loop. Idle time is used to render the scene.
//-----------------------------------------------------------------------------
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
   CMyD3DApplication d3dApp;

   InitCommonControls();
   if(FAILED(d3dApp.Create(hInst)))
   {
      return 0;
   }

   return d3dApp.Run();
}

//-----------------------------------------------------------------------------
// Name: CMyD3DApplication()
// Desc: Application constructor. Sets attributes for the app.
//-----------------------------------------------------------------------------
CMyD3DApplication::CMyD3DApplication() :
   m_pFont(NULL),
   m_pFontSmall(NULL),
   m_bUseD3DX(TRUE),
   m_pObject(NULL),
   m_pObject2(NULL),
   m_pMeshVB(NULL),
   m_pMeshIB(NULL),
   m_pMesh2VB(NULL),
   m_pVertexDeclaration(NULL),
   m_pVertexDeclarationTween(NULL),
   m_bDiffInit(false),
   m_bDiffSensitivity(false),
   m_bShowSettingsText(true),
   m_pEffect(NULL),
   m_pTexture1(NULL),
   m_pTexture2(NULL),
   m_pTexture3(NULL),
   m_pTextureSurface1(NULL),
   m_pTextureSurface2(NULL),
   m_pTextureSurface3(NULL),
   m_pCubeMap(NULL),
   m_pQuadVB(NULL),
   m_iCurParam(0),
   m_iCurParamLight(0),
   m_Mode(FFS_MODE_SHADER),
   m_fTimeOld(-1.f),
   m_statFrameError(CStats("Frame Error", false)),
   m_bLoadState(false)
{
   m_strWindowTitle    = _T("Fixed Function Shader");
   m_d3dEnumeration.AppUsesDepthBuffer = TRUE;
   m_bShowCursorWhenFullscreen = TRUE;

   GetCurrentDirectory(512, m_strAppDir);
   strcpy(m_strMeshInitialDir, m_strAppDir);
   strcpy(m_strStateInitialDir, m_strAppDir);
   strcpy(m_strMeshFilename, _T("Data\\car.x"));
   strcpy(m_strStateFilename, _T(""));


   m_dwCreationWidth   = 1024;
   m_dwCreationHeight  = 768;

// m_pFont         = new CD3DFont(_T("Comic Sans MS"), 12, 0);
// m_pFontSmall    = new CD3DFont(_T("Comic Sans MS"), 10, 0);
   m_pFont         = new CD3DFont(_T("Palatino Linotype"), 14, 0);
   m_pFontSmall    = new CD3DFont(_T("Palatino Linotype"), 10, 0);

   m_pObject        = new CD3DMesh();
   m_pObject2       = new CD3DMesh();

   m_bFrameMoving = false;
   DXUtil_Timer(TIMER_STOP);
}


//-----------------------------------------------------------------------------
// Name: ParseCommandLine()
// Desc: Parses the command line for options
//-----------------------------------------------------------------------------
void CMyD3DApplication::ParseCommandLine()
{
   char *strCmdLine = GetCommandLine();
   strlwr(strCmdLine);
   char *pc;

   //parse for an input state file
   if(pc = strstr(strCmdLine, "/s:"))
   {
      strcpy(m_strStateFilename, pc+3);
      if(pc = strstr(m_strStateFilename, " "))
      {
         *pc = 0;
      }

      _tcscpy(m_strStateInitialDir, m_strStateFilename);
      TCHAR* pLastSlash = _tcsrchr(m_strStateInitialDir, _T('\\'));
      if(pLastSlash)
      {
         *pLastSlash = 0;
      }

      SetCurrentDirectory(m_strAppDir);
      m_bLoadState = true;
   }

   //parse for an input mesh file
   if(pc = strstr(strCmdLine, "/x:"))
   {
      strcpy(m_strMeshFilename, pc+3);
      if(pc = strstr(m_strMeshFilename, " "))
      {
         *pc = 0;
      }

      _tcscpy(m_strMeshInitialDir, m_strMeshFilename);
      TCHAR* pLastSlash =  _tcsrchr(m_strMeshInitialDir, _T('\\'));
      if(pLastSlash)
      {
         *pLastSlash = 0;
      }
      SetCurrentDirectory(m_strAppDir);
   }


}

//-----------------------------------------------------------------------------
// Name: OneTimeSceneInit()
// Desc: Called during initial app startup, this function performs all the
//       permanent initialization.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::OneTimeSceneInit()
{
   ParseCommandLine();
   return S_OK;
}

//-----------------------------------------------------------------------------
// Name: FrameMove()
// Desc: Called once per frame, the call is the entry point for animating
//       the scene.
//-----------------------------------------------------------------------------
HRESULT CMyD3DApplication::FrameMove()
{
   if(m_fTimeOld == -1.f)
   {
      m_fTimeOld = m_fTime;
   }
   // Rotate the camera about the y-axis
   D3DXMATRIXA16 m_matTmp;
   D3DXMatrixRotationY(&m_matTmp, (m_fTime-m_fTimeOld)/2.866f);  //2.866 = 9/PI (so 18 time steps == 2PI)
   D3DXMatrixMultiply(&m_matViewRot, &m_matViewRot, &m_matTmp);
   m_fTimeOld = m_fTime;

   // recompute view matrix
   D3DXMatrixMultiply(&m_matView, &m_matViewRot, &m_matViewTrans);
   D3DXMatrixMultiply(&m_matView, &m_matView, &m_matArcBall);
   m_pd3dDevice->SetTransform(D3DTS_VIEW, &m_matView);

   return S_OK;
}


//-----------------------------------------------------------------------------
// Name: RenderErrorBar()
// Desc: Renders the errorbar for the diff mode
//-----------------------------------------------------------------------------
void CMyD3DApplication::RenderErrorBar()
{
   int iError = (int)(m_statFrameError.GetAvg()*256.f*256.f);
   int iErrorMax = (int)(m_statFrameError.GetMax()*256.f); 
   //NOTE: Two bars are not to same scale. 
   //Can't scale Max by an additional factor of 256 or it will be too large to fit

   RenderQuad(m_pd3dDevice, -(m_iWidth/2.f)+60.f, -(m_iHeight/2.f)+10.f, 
      -(m_iWidth/2.f)+60.f + iError, -(m_iHeight/2.f)+15.f, 0xFFFFFFFF);
   RenderQuad(m_pd3dDevice, -(m_iWidth/2.f)+60.f, -(m_iHeight/2.f)+20.f, 
      -(m_iWidth/2.f)+60.f + iErrorMax, -(m_iHeight/2.f)+25.f, 0xFFFF0000);
}


//-----------------------------------------------------------------------------
// Name: RenderSettings()
// Desc: Renders the state settings
//-----------------------------------------------------------------------------
void CMyD3DApplication::RenderSettings(CSceneState *psceneState, float xText)
{
   //set up the cursor
   POINT ptCursor;
   GetCursorPos(&ptCursor);
   ScreenToClient(m_hWnd, &ptCursor);
   m_pd3dDevice->SetCursorPosition(ptCursor.x, ptCursor.y, 0L);

   int iCurParam = m_iCurParam;

   //render current settings
   switch(m_Mode)
   {
      case FFS_MODE_SHADER:
         m_pFont->DrawText(10, (float)m_iHeight - 30, D3DCOLOR_ARGB(255,255,255,0), "Programmable pipeline");//, D3DFONT_CENTERED_X);
         break;
      case FFS_MODE_FIXED:
         m_pFont->DrawText(10, (float)m_iHeight - 30, D3DCOLOR_ARGB(255,255,255,0), "Fixed function pipeline");//, D3DFONT_CENTERED_X);
         break;
      case FFS_MODE_DIFF:
         m_pFont->DrawText(10, (float)m_iHeight - 30, D3DCOLOR_ARGB(255,255,255,0), "DIFF");//, D3DFONT_CENTERED_X);
         break;
      case FFS_MODE_BOTH:
         m_pFont->DrawText(10, (float)m_iHeight - 30, D3DCOLOR_ARGB(255,255,255,0), "Programmable pipeline");
         m_pFont->DrawText((float)m_iWidth/2+10, (float)m_iHeight - 30, D3DCOLOR_ARGB(255,255,255,0), "Fixed function pipeline");
         break;
   }

   FLOAT yText = 40.0f;
   FLOAT ySpacing = 20.f;

   if(xText < m_iWidth / 2)
   {
      // Output statistics
      m_pFont->DrawText(xText,  0, D3DCOLOR_ARGB(255,255,255,0), m_strFrameStats);
      m_pFont->DrawText(xText, 20, D3DCOLOR_ARGB(255,255,255,0), m_strDeviceStats);


      // Output info
      m_pFontSmall->DrawText(xText, yText, D3DCOLOR_ARGB(255,255,255,0), m_bUseD3DX ? _T("Using D3DX") : _T("Not Using D3DX"));
      yText += ySpacing;
   }
   else
      yText += ySpacing;

   char tmp[512];
   char *onoff[2] = {_T("OFF"), _T("ON")};
   D3DCOLOR cols[2] = {D3DCOLOR_ARGB(255,0,255,255), D3DCOLOR_ARGB(255,255,0,0)};
   ySpacing = 15.f;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级专区免费大片| 色素色在线综合| 久久久亚洲精华液精华液精华液| 免费观看91视频大全| 2021国产精品久久精品| 国产原创一区二区| 国产精品人妖ts系列视频| 91色porny在线视频| 亚洲一区二区在线观看视频| 欧美综合亚洲图片综合区| 丝袜诱惑亚洲看片| 久久夜色精品国产噜噜av| 成人福利电影精品一区二区在线观看| 自拍偷拍国产亚洲| 欧美日韩亚洲综合| 国产一区二区在线观看免费| 国产精品污网站| 欧美亚洲综合网| 久久www免费人成看片高清| 中文无字幕一区二区三区| 91成人免费电影| 精品一区二区三区影院在线午夜 | 99在线热播精品免费| 亚洲一区在线观看视频| 欧美va亚洲va在线观看蝴蝶网| 高清成人免费视频| 亚洲高清免费视频| 欧美激情一区二区三区蜜桃视频| 91久久精品午夜一区二区| 裸体在线国模精品偷拍| 国产精品女主播在线观看| 宅男在线国产精品| www.av亚洲| 麻豆国产一区二区| 一区二区三区国产豹纹内裤在线| 欧美一区二区不卡视频| av亚洲精华国产精华精华| 免费观看一级欧美片| 亚洲码国产岛国毛片在线| 精品国产乱码久久久久久1区2区| www..com久久爱| 久久99精品国产.久久久久久| 亚洲人成在线播放网站岛国| 精品99一区二区三区| 欧洲国内综合视频| 波多野结衣精品在线| 美腿丝袜亚洲三区| 亚洲成在人线在线播放| 国产精品你懂的在线| 精品国产第一区二区三区观看体验| 色悠悠久久综合| 丰满少妇在线播放bd日韩电影| 视频在线观看91| 亚洲免费av高清| 国产精品视频一二三区| 精品国产不卡一区二区三区| 欧美伦理电影网| 在线视频欧美区| 99在线精品观看| 国产成人综合亚洲网站| 久久电影网站中文字幕| 首页综合国产亚洲丝袜| 亚洲午夜激情网站| 亚洲色大成网站www久久九九| 国产夜色精品一区二区av| 精品欧美一区二区久久| 日韩一区二区三区电影| 777午夜精品视频在线播放| 欧美少妇bbb| 在线观看区一区二| 色婷婷av久久久久久久| 91精品91久久久中77777| 色综合咪咪久久| 91国偷自产一区二区三区成为亚洲经典 | 不卡一卡二卡三乱码免费网站| 蜜臀av国产精品久久久久| 日韩影院精彩在线| 日本vs亚洲vs韩国一区三区| 亚洲一区免费观看| 午夜精品久久久久久| 视频一区欧美精品| 秋霞午夜av一区二区三区| 日韩精品福利网| 日本不卡在线视频| 美女视频网站久久| 国产又黄又大久久| 成人毛片在线观看| 色哟哟亚洲精品| 欧美视频一区二区在线观看| 欧美日韩在线播放| 91精品国产美女浴室洗澡无遮挡| 欧美精品777| 2023国产一二三区日本精品2022| 久久日一线二线三线suv| 中文字幕欧美日韩一区| 国产精品久99| 亚洲成人综合网站| 激情综合色播激情啊| 国产不卡视频在线播放| 91视频免费播放| 9191成人精品久久| 久久美女高清视频| 亚洲六月丁香色婷婷综合久久| 一区二区三区四区在线免费观看| 亚洲成人av在线电影| 老司机精品视频一区二区三区| 国产精品一区一区三区| 92国产精品观看| 在线综合视频播放| 国产欧美视频一区二区| 亚洲影视在线播放| 极品美女销魂一区二区三区免费| 国产99久久久国产精品| 欧美性感一区二区三区| 久久这里只有精品首页| 亚洲精品成人在线| 久久成人久久鬼色| 91免费视频网址| 精品国产凹凸成av人导航| 国产精品电影一区二区| 秋霞av亚洲一区二区三| 不卡视频免费播放| 日韩三级在线观看| 亚洲视频免费观看| 国产一区二区三区在线观看免费| 色综合天天综合网天天狠天天| 日韩一区二区不卡| 亚洲日本一区二区| 激情图片小说一区| 欧美精品在线一区二区三区| 国产欧美日韩卡一| 欧美bbbbb| 色88888久久久久久影院野外| 亚洲精品一区二区三区蜜桃下载| 亚洲影视在线播放| av一区二区三区| 久久久久国产精品免费免费搜索| 亚洲成av人片在线观看无码| 成人激情动漫在线观看| 精品奇米国产一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 国产成人免费视频网站| 制服丝袜亚洲精品中文字幕| 一级女性全黄久久生活片免费| 国产成人午夜电影网| 日韩欧美在线观看一区二区三区| 亚洲综合男人的天堂| caoporen国产精品视频| 国产日产欧美一区| 精品一区二区日韩| 日韩欧美综合在线| 日精品一区二区三区| 欧美午夜精品久久久久久孕妇 | 中文字幕一区二区在线播放| 精品亚洲aⅴ乱码一区二区三区| 欧美日韩中字一区| 亚洲男人的天堂一区二区| 国产精品自拍在线| 久久久精品免费免费| 九九九精品视频| 日韩视频一区二区| 奇米影视7777精品一区二区| 欧美日韩高清一区二区不卡| 一区二区三区欧美日| 日本道精品一区二区三区| 亚洲免费观看高清完整版在线观看 | 狂野欧美性猛交blacked| 欧美丰满一区二区免费视频| 亚洲综合视频在线观看| 色婷婷久久综合| 一区二区三区在线观看动漫| 在线观看亚洲精品| 亚洲一级不卡视频| 欧美视频一区二区| 日韩极品在线观看| 日韩三级精品电影久久久| 久久国产精品一区二区| 欧美va在线播放| 国产jizzjizz一区二区| 国产精品三级av在线播放| jiyouzz国产精品久久| 亚洲精品一二三| 欧美美女黄视频| 久久99国产精品麻豆| 欧美国产精品一区二区| av在线不卡免费看| 亚洲一区二区三区四区在线免费观看 | 亚洲精品国产第一综合99久久| 色欲综合视频天天天| 午夜精品爽啪视频| 日韩视频免费观看高清完整版| 激情文学综合丁香| 国产精品久久久久9999吃药| 欧美在线高清视频| 美日韩一区二区三区| 国产性天天综合网| 色94色欧美sute亚洲13| 三级成人在线视频| 国产日产欧美精品一区二区三区| 97久久人人超碰|