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

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

?? renderview.cpp

?? 詳細(xì)介紹c++編程
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// RenderView.cpp
#include "stdafx.h"
#include "Tool.h"
#include <math.h> 

#include "ToolDoc.h"
#include "RenderView.h"
#include "glm.h"

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

#define WIDTH 32 // 紋理文件的寬度
// 地形網(wǎng)格格點(diǎn)數(shù),用來控制地形矩陣的下標(biāo)
#define MAP 512

// This is the holding space for the landscape.
GLfloat y[MAP+1][MAP+1];
char object[MAP+1][MAP+1];

typedef struct color {
  GLfloat r, g, b;
} color;

// 地形網(wǎng)格點(diǎn)顏色
color c[MAP+1][MAP+1];

static GLubyte texImg[WIDTH][WIDTH][4];
static GLuint texName;

unsigned short int comp = 32; // Scale modifier.

unsigned short int temp, texture_mapping = FALSE,
                   land_fogging = TRUE, flat_shading = TRUE;

// 初始視點(diǎn)位置和視角
static GLfloat patriot_posx = 0, patriot_posy = 0, patriot_posz = 0;
static GLfloat lookx=0, looky=0, lookz=20;
static GLfloat speed = 0;

// The following code for mouse routines was contributed.
// These are used for the motion function.
#define FORWARD 1
#define UP 2
#define TURNLEFT 3
#define STRAFELEFT 4
#define LOOKUP 5

#define PI 3.14159f
#define H 0.4f
#define DT 2
#define VN 20
#define CN 16
#define TAILL 4
#define LIST  6
#define ADDL 0.3f
#define ADDH 0.1f
#define MISSLE 2

// Mouse position and button.
int oldmx = 0, oldmy = 0, mb;
int srnd;
float L = 10.0f,tmp[CN][2],red_green[6][CN],tail[6][CN];
float vetxm[LIST][VN+1][CN][7];
double ttt;

float vertex[213][3], normals[286][3];
int faces[187][2][41];

int loop1, counter = 0, flag=0;


// CRenderView
IMPLEMENT_DYNCREATE(CRenderView, CView)

BEGIN_MESSAGE_MAP(CRenderView, CView)
//{{AFX_MSG_MAP(CRenderView)
ON_WM_DESTROY()
ON_WM_SIZE()
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_CREATE()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()


// CRenderView construction/destruction
CRenderView::CRenderView()
{
  // OpenGL
  m_hGLContext = NULL;
  m_GLPixelIndex = 0;
}

CRenderView::~CRenderView()
{
	glmDelete(plane);
	glmDelete(patriot);
}

void CRenderView::InitGeometry(void)
{
  GLfloat fogColor[4] = {0.75, 0.75, 1.0, 1.0};
  patriot = glmReadOBJ("patriot.obj");
  plane = glmReadOBJ("plane.obj");
  glmUnitize(plane);
  glmScale(plane, 8.0f);
  patriot_posx = 3000.0;
  patriot_posy = 256.0;
  patriot_posz = 8500.0;

  lookx = 15.0;
  looky = -8.0; 
  lookz = -18.00;

//  loop=-5.0;
  Shoot = FALSE;
  speed = 0;

  srand(224);
  GenScean();
  GenFire();
  MakeFireList();
  srand((unsigned)time(NULL));
  MakeTexture();
  glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
  glGenTextures(1, &texName);
  glBindTexture(GL_TEXTURE_2D, texName);
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, WIDTH, WIDTH, 0, GL_RGBA, GL_UNSIGNED_BYTE, texImg);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

  glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

  glEnable(GL_DEPTH_TEST);
  glShadeModel(GL_SMOOTH);

  glFogi(GL_FOG_MODE, GL_LINEAR);
  glFogfv(GL_FOG_COLOR, fogColor);
  glFogf(GL_FOG_DENSITY, 0.8f);
  glFogf(GL_FOG_START, 400.0f);
  glFogf(GL_FOG_END, 500.0f);  
  glEnable(GL_TEXTURE_2D);
  glClearColor(0.75f, 0.75f, 1.0f, 1.0f);
}

BOOL CRenderView::PreCreateWindow(CREATESTRUCT& cs)
{
  return CView::PreCreateWindow(cs);
}

// CRenderView drawing
void CRenderView::OnDraw(CDC* pDC)
{
}

BOOL CRenderView::OnPreparePrinting(CPrintInfo* pInfo)
{
  return DoPreparePrinting(pInfo);
}

void CRenderView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}

void CRenderView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}

// CRenderView diagnostics
#ifdef _DEBUG
void CRenderView::AssertValid() const
{
  CView::AssertValid();
}

void CRenderView::Dump(CDumpContext& dc) const
{
  CView::Dump(dc);
}

CToolDoc* CRenderView::GetDocument() // non-debug version is inline
{
  if (m_pDocument){
    ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CToolDoc)));
    return (CToolDoc*)m_pDocument;
  }
  else return NULL;
}
#endif //_DEBUG

// Create OpenGL rendering context 
int CRenderView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
  if (CView::OnCreate(lpCreateStruct) == -1)
    return -1;
  
  HWND hWnd = GetSafeHwnd();
  HDC hDC = ::GetDC(hWnd);

  if(SetWindowPixelFormat(hDC)==FALSE)
    return 0;
  
  if(CreateViewGLContext(hDC)==FALSE)
    return 0;
  
  // Default mode
  glPolygonMode(GL_FRONT,GL_FILL);
  glPolygonMode(GL_BACK,GL_FILL);
  glShadeModel(GL_FLAT);
  
  InitGeometry();
  SetTimer(1,50,NULL);
  return 0;
}

BOOL CRenderView::SetWindowPixelFormat(HDC hDC)
{
  PIXELFORMATDESCRIPTOR pixelDesc;
  
  pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR);
  pixelDesc.nVersion = 1;
  
  pixelDesc.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |
    PFD_DOUBLEBUFFER | PFD_STEREO_DONTCARE;
  
  pixelDesc.iPixelType = PFD_TYPE_RGBA;
  pixelDesc.cColorBits = 32;
  pixelDesc.cRedBits = 8;
  pixelDesc.cRedShift = 16;
  pixelDesc.cGreenBits = 8;
  pixelDesc.cGreenShift = 8;
  pixelDesc.cBlueBits = 8;
  pixelDesc.cBlueShift = 0;
  pixelDesc.cAlphaBits = 0;
  pixelDesc.cAlphaShift = 0;
  pixelDesc.cAccumBits = 64;
  pixelDesc.cAccumRedBits = 16;
  pixelDesc.cAccumGreenBits = 16;
  pixelDesc.cAccumBlueBits = 16;
  pixelDesc.cAccumAlphaBits = 0;
  pixelDesc.cDepthBits = 32;
  pixelDesc.cStencilBits = 8;
  pixelDesc.cAuxBuffers = 0;
  pixelDesc.iLayerType = PFD_MAIN_PLANE;
  pixelDesc.bReserved = 0;
  pixelDesc.dwLayerMask = 0;
  pixelDesc.dwVisibleMask = 0;
  pixelDesc.dwDamageMask = 0;
  
  m_GLPixelIndex = ChoosePixelFormat(hDC,&pixelDesc);
  if(m_GLPixelIndex == 0) // Choose default
  {
    m_GLPixelIndex = 1;
    if(DescribePixelFormat(hDC,m_GLPixelIndex,
      sizeof(PIXELFORMATDESCRIPTOR),&pixelDesc)==0)
      return FALSE;
  }
  
  if(!SetPixelFormat(hDC,m_GLPixelIndex,&pixelDesc))
    return FALSE;
  
  return TRUE;
}

// Create an OpenGL rendering context
BOOL CRenderView::CreateViewGLContext(HDC hDC)
{
  m_hGLContext = wglCreateContext(hDC);
  
  if(m_hGLContext==NULL)
    return FALSE;
  
  if(wglMakeCurrent(hDC,m_hGLContext)==FALSE)
    return FALSE;
  
  return TRUE;
}

// Cleanup every OpenGL rendering context
void CRenderView::OnDestroy() 
{
  if(wglGetCurrentContext() != NULL)
    wglMakeCurrent(NULL,NULL);
  
  if(m_hGLContext != NULL)
  {
    wglDeleteContext(m_hGLContext);
    m_hGLContext = NULL;
  }
  CView::OnDestroy();
}

void CRenderView::OnSize(UINT nType, int cx, int cy) 
{
  CView::OnSize(nType, cx, cy);
  
  // Set OpenGL perspective, viewport and mode
  CSize size(cx,cy);
  double aspect;
  aspect = (cy == 0) ? (double)size.cx : (double)size.cx/(double)size.cy;

  glViewport(0, 0, (GLsizei) cx, (GLsizei) cy);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluPerspective(60.0, (GLfloat) cx/(GLfloat) cy, 1.0f, 5000.0f);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
}

void CRenderView::OnPaint() 
{
  // Device context for painting  
  CPaintDC dc(this); 
  
  // Useful in singledoc templates
  HWND hWnd = GetSafeHwnd();
  HDC hDC = ::GetDC(hWnd);
  wglMakeCurrent(hDC,m_hGLContext);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glClearColor(0.75f, 0.75f, 1.0f, 1.0f);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  CheckHeight();
  gluLookAt(patriot_posx, patriot_posy, patriot_posz,patriot_posx+lookx, patriot_posy+looky, patriot_posz+lookz, 0.0f,1.0f,0.0f);
  RenderTerrain();
  TrackObj();
  glFlush();
  SwapBuffers(hDC);
}

void CRenderView::RenderTerrain()
{
  int x, z, position_x, position_z;
  GLfloat x1, x2, z1, z2;

  glPushMatrix();  
  position_x = (int)patriot_posx/comp;
  position_z = (int)patriot_posz/comp;
  for(x=position_x-16; x<position_x+17; x++){
    for(z=position_z-16; z<position_z+17; z++) {
      if(x>0 && x<MAP && z>0 && z<MAP) {
        x1 = (float)x*comp;
        x2 = (float)x*comp + comp;
        z1 = (float)z*comp;
        z2 = (float)z*comp + comp;
		// 繪制地形時必須關(guān)閉光照,因為這里沒有定義法向量
		glDisable(GL_LIGHTING);
        glBegin(GL_POLYGON);
        glColor3f(c[x][z].r, c[x][z].g, c[x][z].b);
        glTexCoord2f(0.0f, 0.0f);
        glVertex3f(x1, y[x][z], z1);
        glColor3f(c[x+1][z].r, c[x+1][z].g, c[x+1][z].b);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(x2, y[x+1][z], z1);
        glColor3f(c[x][z+1].r, c[x][z+1].g, c[x][z+1].b);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(x1, y[x][z+1], z2);
        glEnd();
        glBegin(GL_POLYGON);
        glColor3f(c[x+1][z+1].r, c[x+1][z+1].g, c[x+1][z+1].b);
        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(x2, y[x+1][z+1], z2);
        glColor3f(c[x][z+1].r, c[x][z+1].g, c[x][z+1].b);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(x1, y[x][z+1], z2);
        glColor3f(c[x+1][z].r, c[x+1][z].g, c[x+1][z].b);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(x2, y[x+1][z], z1);
		glEnd();
        if(object[x][z]=='t')
          DrawTree(x, z);
      }
    }  
  }
  glPopMatrix();
}

void CRenderView::GenScean(void)
{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区不卡| 在线观看一区二区视频| 欧美xxxxxxxxx| 国产伦精一区二区三区| 国产日韩欧美综合一区| 成人性生交大片免费看中文网站| 国产欧美一区二区精品性色超碰| av不卡在线观看| 一区二区激情视频| 日韩视频免费直播| 国产精品系列在线播放| 亚洲日本va在线观看| 欧美性受xxxx| 国产在线播放一区二区三区| 中文字幕免费观看一区| 欧洲亚洲国产日韩| 久久黄色级2电影| 日韩伦理av电影| 6080日韩午夜伦伦午夜伦| 国产福利视频一区二区三区| 亚洲人成网站影音先锋播放| 9191久久久久久久久久久| 国产一区二区三区免费| 一区二区成人在线| 精品国产亚洲在线| 91久久线看在观草草青青| 免费成人深夜小野草| 国产精品电影院| 欧美一区二区三区啪啪| 成人av在线影院| 日本一不卡视频| 国产精品另类一区| 日韩情涩欧美日韩视频| 99综合电影在线视频| 另类综合日韩欧美亚洲| 一区二区三区中文字幕电影| 精品国产免费人成在线观看| 色婷婷综合视频在线观看| 国产一区二三区| 亚洲五月六月丁香激情| 中文字幕欧美日韩一区| 日韩女优制服丝袜电影| 欧美无砖砖区免费| 不卡的看片网站| 精品一区二区日韩| 亚洲成a人在线观看| 国产精品天美传媒沈樵| 日韩午夜av一区| 欧美日韩国产大片| 色老汉av一区二区三区| 国产一区二区三区| 美女精品自拍一二三四| 亚洲一区二区三区激情| 亚洲色图在线看| 国产精品丝袜一区| 欧美精品一区二区三区四区| 欧美日韩一级大片网址| 91国产成人在线| 91毛片在线观看| 成人久久视频在线观看| 国产麻豆成人精品| 久久99久久99小草精品免视看| 亚洲午夜久久久久中文字幕久| 中文字幕在线一区免费| 国产精品久久久久久久久免费樱桃 | 91美女片黄在线观看91美女| 国产精品一二三| 国产一区二区中文字幕| 国产乱子轮精品视频| 免费观看30秒视频久久| 老司机免费视频一区二区| 蜜臀99久久精品久久久久久软件| 午夜精品久久久久久久99樱桃| 亚洲一区二区三区美女| 亚洲成人免费av| 日本中文字幕一区二区视频| 亚洲成人精品在线观看| 亚洲一区电影777| 亚洲电影一级黄| 日本不卡视频一二三区| 久久精品国产久精国产爱| 美女一区二区三区在线观看| 五月激情六月综合| 亚洲伊人伊色伊影伊综合网| 一区二区三区四区五区视频在线观看| 亚洲三级电影网站| 综合欧美亚洲日本| 亚洲综合999| 日韩av电影天堂| 国产在线一区观看| 成人av网站在线观看| 在线亚洲一区二区| 91麻豆精品国产无毒不卡在线观看| 91精品国产欧美日韩| 日韩免费观看2025年上映的电影 | 欧美变态凌虐bdsm| 中文字幕中文字幕在线一区| 综合久久给合久久狠狠狠97色| 亚洲精品高清视频在线观看| 亚洲成人一区在线| 国模一区二区三区白浆| 成人99免费视频| 精品视频一区二区不卡| 日韩三级免费观看| 中文字幕欧美日本乱码一线二线| 中文字幕一区二区在线播放| 五月婷婷综合在线| 国产福利视频一区二区三区| 91福利国产精品| 欧美电影精品一区二区| 国产精品久久久久久久第一福利| 亚洲一区免费视频| 国产成人午夜精品影院观看视频| 99久久99精品久久久久久| 在线不卡中文字幕播放| 久久久久国产成人精品亚洲午夜| 亚洲欧美电影院| 另类的小说在线视频另类成人小视频在线 | 色偷偷成人一区二区三区91 | 国产亚洲欧美中文| 一区二区三区免费网站| 日韩精品一区第一页| 国产传媒久久文化传媒| 欧美体内she精视频| 国产欧美综合色| 日韩国产欧美在线视频| 不卡一卡二卡三乱码免费网站| 91.com视频| 亚洲日本va午夜在线影院| 狠狠色综合播放一区二区| 91黄色在线观看| 中文字幕免费在线观看视频一区| 日韩成人精品视频| 在线免费不卡电影| 久久久www免费人成精品| 日本亚洲三级在线| 在线观看亚洲精品| 国产精品美女www爽爽爽| 美女爽到高潮91| 欧美日韩在线播放三区| 亚洲色图视频网| 丁香一区二区三区| 精品精品欲导航| 日韩精品一二三区| 在线欧美日韩国产| 国产精品无遮挡| 国产在线日韩欧美| 欧美老肥妇做.爰bbww| 亚洲免费高清视频在线| 成人h动漫精品一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 日日夜夜精品视频免费| 一本到不卡精品视频在线观看| 亚洲国产精品av| 国产成人免费9x9x人网站视频| 日韩欧美高清在线| 久久精品国产亚洲aⅴ| 日韩亚洲欧美一区| 日韩影院在线观看| 91精品国产综合久久久蜜臀粉嫩| 亚洲成人一区二区在线观看| 在线观看成人免费视频| 一区二区三区在线看| 色欧美乱欧美15图片| 一区二区三区中文字幕电影 | 一本一道综合狠狠老| 中文字幕人成不卡一区| 91免费国产视频网站| 亚洲人妖av一区二区| 91麻豆文化传媒在线观看| 亚洲日本韩国一区| 欧美三级中文字幕在线观看| 午夜精品在线看| 亚洲精品水蜜桃| 在线免费不卡电影| 亚洲成人动漫av| 欧美一区二区视频网站| 蜜臀av一级做a爰片久久| 欧美一级精品在线| 国产久卡久卡久卡久卡视频精品| 国产亚洲精品精华液| 99久久99久久精品国产片果冻| 中文字幕字幕中文在线中不卡视频| 91麻豆6部合集magnet| 同产精品九九九| 精品三级在线观看| yourporn久久国产精品| 亚洲精品v日韩精品| 欧美精品黑人性xxxx| 国产美女主播视频一区| 国产精品国产三级国产aⅴ原创| 欧美在线小视频| 卡一卡二国产精品| 中文字幕乱码日本亚洲一区二区| 色综合 综合色| 久久99久久久欧美国产| 国产精品久久久久久久久免费樱桃 | 欧美日本在线看| 国产一区视频在线看| 一区二区三区在线观看欧美|