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

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

?? wgl應用.cpp

?? C++源代碼集
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// ewew.cpp : Defines the entry point for the application.
//


// WGL應用.cpp : Defines the entry point for the application.
//
#include"如何設置斷言.h"
#include<windows.h>
#include<malloc.h>
#include<math.h>
#include<stdio.h>
#include<GL/gl.h>

#pragma comment(lib,"opengl32")
#pragma comment(lib,"glu32")
#pragma comment(lib,"glaux")

#if defined(GL_SGI_cull_vertex)
      PFNGLCULLPARAMETERFVSGIPROC CullParameterfv;
#endif

#if defined(GL_SGI_compiled_vertex_array)
	  PFNGLLOCKARRAYSSGIPROC LockArrays;
	  PFNGLUNLOCKARRAYSSGIPROC UnlockArrays;
#endif

#if !defined(M_PI)
      #define M_PI 3.14159265F
#endif

#define X_OFFSET_STEP 0.025F;
#define Y_OFFSET_STEP 0.025F;

#define NUM_OBJECTS (sizeof(drawObject)/sizeof(drawObject[0]))

//
//char *windowName="WGL 應用";
int winX,winY;
int winWidth,winHeight;
HDC hDC;
HGLRC hGLRC;
HPALETTE hPalette;

void (*idleFunc)(void);

int objectIndex;
int objectNumMajor=24,objectNumMinor=23;
BOOL halfObject=FALSE;
BOOL redrawContinue=TRUE;
BOOL doubleBuffered=TRUE;
BOOL depthBuffered=TRUE;
BOOL drawOutlines=FALSE;
BOOL textureReplace=FALSE;
BOOL textureEnabled=FALSE;
BOOL useLighting=TRUE;
BOOL useVertexCull=TRUE;
BOOL useFaceCull=TRUE;
BOOL useVertexArray=TRUE;
BOOL useVertexLocking=TRUE;
BOOL perspectiveProj=TRUE;
BOOL useFog=FALSE;
enum MoveModes{MoveNone,MoveObject};
enum MoveModes mode=MoveObject;
float angle=10.0F,axis[3]={0.0F,0.0F,1.0F};
GLfloat objectXform[4][4];
GLfloat xOffset,yOffset;

void drawCube(void);
void drawTorus(void);
void drawSphere(void);

void (*drawObject[])(void)=
{
	drawTorus,drawSphere,drawCube,
};

void drawCube(void)
{
	glBegin(GL_QUADS);
	    glNormal3f(-1.0F,0.0F,0.0F);
		glTexCoord2f(0.0F,1.0F);glVertex3f(-0.5F,-0.5F,-0.5F);
		glTexCoord2f(0.0F,0.0F);glVertex3f(-0.5F,-0.5F,0.5F);
		glTexCoord2f(1.0F,0.0F);glVertex3f(-0.5F,0.5F,0.5F);
		glTexCoord2f(1.0F,1.0F);glVertex3f(-0.5F,0.5F,-0.5F);

	    glNormal3f(1.0F,0.0F,0.0F);
		glTexCoord2f(1.0F,1.0F);glVertex3f(0.5F,0.5F,0.5F);
		glTexCoord2f(0.0F,1.0F);glVertex3f(0.5F,-0.5F,0.5F);
		glTexCoord2f(0.0F,0.0F);glVertex3f(0.5F,-0.5F,-0.5F);
		glTexCoord2f(1.0F,0.0F);glVertex3f(0.5F,0.5F,-0.5F);

	    glNormal3f(0.0F,-1.0F,0.0F);
		glTexCoord2f(0.0F,1.0F);glVertex3f(-0.5F,-0.5F,-0.5F);
		glTexCoord2f(0.0F,0.0F);glVertex3f(0.5F,-0.5F,-0.5F);
		glTexCoord2f(1.0F,0.0F);glVertex3f(0.5F,-0.5F,0.5F);
		glTexCoord2f(1.0F,1.0F);glVertex3f(-0.5F,0.5F,0.5F);

	    glNormal3f(0.0F,0.0F,-1.0F);
		glTexCoord2f(0.0F,1.0F);glVertex3f(-0.5F,-0.5F,-0.5F);
		glTexCoord2f(0.0F,0.0F);glVertex3f(-0.5F,0.5F,-0.5F);
		glTexCoord2f(1.0F,0.0F);glVertex3f(0.5F,0.5F,-0.5F);
		glTexCoord2f(1.0F,1.0F);glVertex3f(0.5F,-0.5F,-0.5F);

	    glNormal3f(0.0F,0.0F,1.0F);
		glTexCoord2f(1.0F,1.0F);glVertex3f(0.5F,0.5F,0.5F);
		glTexCoord2f(0.0F,1.0F);glVertex3f(-0.5F,0.5F,0.5F);
		glTexCoord2f(0.0F,0.0F);glVertex3f(-0.5F,-0.5F,0.5F);
		glTexCoord2f(1.0F,0.0F);glVertex3f(0.5F,-0.5F,0.5F);
	glEnd();
}

void drawSphere(void)
{
	struct vertex
	{
		GLfloat t[2];
		GLfloat n[3];
		GLfloat v[3];
	};

	int numVerts=(objectNumMajor+1)*(objectNumMinor+1);
	int numStrips=halfObject?objectNumMajor/2:objectNumMajor;
	int numPerStrip=2*(objectNumMinor+1);
	int numElements=(objectNumMajor+1)*numPerStrip;

	static struct vertex *vertexArray,*v;
	static GLuint *elementArray,*e;
	static int numMajor;
	static int numMinor;
	int i,j;

	if(!vertexArray||numMajor!=objectNumMajor||
		numMinor!=objectNumMinor)
	{
		float radius=0.6F;
		double majorStep=2.0F*M_PI/objectNumMajor;
		double minorStep=M_PI/objectNumMinor;

		if(vertexArray)free(vertexArray);
		vertexArray=(struct vertex*)calloc(numVerts,sizeof(struct vertex));

		if(elementArray)free(elementArray);
		elementArray=(GLuint*)calloc(numElements,sizeof(GLuint));

		numMajor=objectNumMajor;
		numMinor=objectNumMinor;

		v=vertexArray;
		e=elementArray;
		for(i=0;i<=numMajor;++i)
		{
			double a=i*majorStep;
			GLfloat x=(GLfloat)cos(a);
			GLfloat y=(GLfloat)sin(a);

			for(j=0;j<=numMinor;++j)
			{
				double b=j*minorStep;
				GLfloat c=(GLfloat)sin(b);
				GLfloat r=c*radius;
				GLfloat z=(GLfloat)cos(b);

				v->t[0]=i/(GLfloat)numMajor;
				v->t[1]=j/(GLfloat)numMinor;

				v->n[0]=x*c;
				v->n[1]=y*c;
				v->n[2]=z;

				v->v[0]=x*r;
				v->v[1]=y*r;
				v->v[2]=z*radius;

				v++;

				*e++=i*(numMinor+1)+j;
				*e++=(i+1)*(numMinor+1)+j;
			}
		}
	}

	if(useVertexArray)
	{
		glInterleavedArrays(GL_T2F_N3F_V3F,0,vertexArray);

        #if defined(GL_SGI_compiled_vertex_array)
		if(useVertexLocking && LockArray)
			LockArray(0,numVerts);
		#endif

		for(i=0,e=elementArray;i<numStrips;++i,e+=numPerStrip)
			glDrawElements(GL_TRIANGLE_STRIP,numPerStrip,
			GL_UNSIGNED_INT,e);

		#if defined(GL_SGI_compiled_vertex_array)
		if(useVertexLocking&& UnlockArray)UnlockArrays();
		#endif
	}
	else
	{
		for(i=0,e=elementArray;i<numStrips;++i,e+=numPerStrip)
		{
			glBegin(GL_TRIANGLE_STRIP);
			    for(j=0;j<numPerStrip;++j)
				{
					v=&vertexArray[e[j]];

					glTexCoord2fv(v->t);
					glNormal3fv(v->n);
					glVertex3fv(v->v);
				}
			glEnd();
		}
	}
}

void drawTorus(void)
{
	struct vertex
	{
		GLfloat t[2];
		GLfloat n[3];
		GLfloat v[3];
	};

	int numVerts=(objectNumMajor+1)*(objectNumMinor+1);
	int numStrips=halfObject?objectNumMajor/2:objectNumMajor;
	int numPerStrip=2*(objectNumMinor+1);
	int numElements=(objectNumMajor+1)*numPerStrip;

	static struct vertex *vertexArray,*v;
	static GLuint *elementArray,*e;
	static int numMajor;
	static int numMinor;
	int i,j;

	if(!vertexArray||numMajor!=objectNumMajor||
		numMinor!=objectNumMinor)
	{
		float majorRadius=0.6F;
		float minorRadius=0.2F;
		double majorStep=2.0F*M_PI/objectNumMajor;
		double minorStep=2.0F*M_PI/objectNumMinor;

		if(vertexArray)free(vertexArray);
		vertexArray=(struct vertex*)calloc(numVerts,sizeof(struct vertex));

		if(elementArray)free(elementArray);
		elementArray=(GLuint*)calloc(numElements,sizeof(GLuint));

		numMajor=objectNumMajor;
		numMinor=objectNumMinor;

		v=vertexArray;
		e=elementArray;
		for(i=0;i<=numMajor;++i)
		{
			double a=i*majorStep;
			GLfloat x=(GLfloat)cos(a);
			GLfloat y=(GLfloat)sin(a);

			for(j=0;j<=numMinor;++j)
			{
				double b=j*minorStep;
				GLfloat c=(GLfloat)cos(b);
				GLfloat r=minorRadius*c+majorRadius;
				GLfloat z=minorRadius*(GLfloat)sin(b);

				v->t[0]=i/(GLfloat)numMajor;
				v->t[1]=j/(GLfloat)numMinor;

				v->n[0]=x*c;
				v->n[1]=y*c;
				v->n[2]=z/minorRadius;

				v->v[0]=x*r;
				v->v[1]=y*r;
				v->v[2]=z;

				v++;

				*e++=i*(numMinor+1)+j;
				*e++=(i+1)*(numMinor+1)+j;
			}
		}
	}

	if(useVertexArray)
	{
		glInterleavedArrays(GL_T2F_N3F_V3F,0,vertexArray);

        #if defined(GL_SGI_compiled_vertex_array)
		if(useVertexLocking && LockArray)
			LockArray(0,numVerts);
		#endif

		for(i=0,e=elementArray;i<numStrips;++i,e+=numPerStrip)
			glDrawElements(GL_TRIANGLE_STRIP,numPerStrip,
			GL_UNSIGNED_INT,e);

		#if defined(GL_SGI_compiled_vertex_array)
		if(useVertexLocking&& UnlockArray)UnlockArrays();
		#endif
	}
	else
	{
		for(i=0,e=elementArray;i<numStrips;++i,e+=numPerStrip)
		{
			glBegin(GL_TRIANGLE_STRIP);
			    for(j=0;j<numPerStrip;++j)
				{
					v=&vertexArray[e[j]];

					glTexCoord2fv(v->t);
					glNormal3fv(v->n);
					glVertex3fv(v->v);
				}
			glEnd();
		}
	}
}

void setCheckTexture(void)
{
	int texWidth=256;
	int texHeight=256;
	GLubyte* texPixels,*p;
	int texSize;
	int i,j;

	texSize=texWidth*texHeight*4*sizeof(GLubyte);
	if(textureReplace)
	{
		glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);
	}
	else
	{
		glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
	}

	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);

	texPixels=(GLubyte *)malloc(texSize);
	if(texPixels==NULL)return;

	p=texPixels;
	for(i=0;i<texHeight;++i)
	{
		for(j=0;j<texWidth;++j)
		{
			if((i^j)&32)
			{
				p[0]=0xff;p[1]=0xff;p[2]=0xff;p[3]=0xff;
			}
			else
			{
				p[0]=0x10;p[1]=0x10;p[2]=0x10;p[3]=0xff;
			}
			p+=4;
		}
	}
	glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,texWidth,texHeight,0
		,GL_RGBA,GL_UNSIGNED_BYTE,texPixels);
	free(texPixels);
}

void matrixIdentity(GLfloat m[4][4])
{
	m[0][0]=1.0f;m[0][1]=0.0f;m[0][2]=0.0f;m[0][3]=0.0f;
	m[1][0]=0.0f;m[1][1]=1.0f;m[1][2]=0.0f;m[1][3]=0.0f;
	m[2][0]=0.0f;m[2][1]=0.0f;m[2][2]=1.0f;m[2][3]=0.0f;
	m[3][0]=0.0f;m[3][1]=0.0f;m[3][2]=0.0f;m[3][3]=1.0f;
}

void setProjection(void)
{
	GLfloat aspect=(GLfloat)winWidth/(GLfloat)winHeight;

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	if(perspectiveProj)
	{
		glFrustum(-0.5F*aspect,0.5F*aspect,-0.5F,0.5F,1.0F,3.0F);
		#if defined(GL_SGI_cull_vertex)
		if(CullParameterfv)
		{
			GLfloat eye[4]={0.0F,0.0F,0.0F,1.0F};
			CullParameterfv(GL_CULL_VERTEX_EYE_POSITION_SGI,eye);
		}
		#endif
	}
	else
	{
		glOrtho(-1.0F*aspect,1.0F*aspect,-1.0F,1.0F,1.0F,3.0F);
		#if defined(GL_SGI_cull_vertex)
		if(CullParameterfv)
		{
			GLfloat eye[4]={0.0F,0.0F,1.0F,0.0F};
			CullParameterfv(GL_CULL_VERTEX_EYE_POSITION_SGI,eye);
		}
		#endif
	}
	glMatrixMode(GL_MODELVIEW);
}

void setMaterial(void)
{
	GLfloat matAmb[4]={0.01F,0.01F,0.01F,1.00F};
	GLfloat matDiff[4]={0.45F,0.05F,0.65F,0.60F};
	GLfloat matSpec[4]={0.50F,0.50F,0.50F,1.00F};
	GLfloat matShine=20.00F;

	glMaterialfv(GL_FRONT,GL_AMBIENT,matAmb);
	glMaterialfv(GL_FRONT,GL_DIFFUSE,matDiff);
	glMaterialfv(GL_FRONT,GL_SPECULAR,matSpec);
	glMaterialf(GL_FRONT,GL_SHININESS,matShine);
}

void init(void)
{
	GLfloat lightOPos[4]={0.70F,0.70F,1.25F,0.00F};
	GLfloat fogDensity=2.35F*0.180F;
	GLfloat fogColor[4]={0.4F,0.4F,0.5F,0.0F};

	#if defined(GL_SGI_cull_vertex)
	  CullParameterfv=(PFNGLCULLPARAMETERFVSGIPROC)
		 wglGetProcAddress("glCullParameterfvSGI");
	#endif

	#if defined(GL_SGI_compiled_vertex_array)
	  LockArrays=(PFNGLLOCKARRAYSSGIPROC)
		  wglGetProcAddress("glLockArraysSGI");
	  UnlockArrays=(PFNGLUNLOCKARRAYSSGIPROC)
		  wglGetProcAddress("glUnlockArraysSGI");
	#endif

	glFogi(GL_FOG_MODE,GL_EXP2);
	glFogf(GL_FOG_DENSITY,fogDensity);
	glFogfv(GL_FOG_COLOR,fogColor);

	setProjection();
	glTranslatef(0.0F,0.0F,-2.0F);
	setMaterial();
	glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE);
	glLightfv(GL_LIGHT0,GL_POSITION,lightOPos);
	glEnable(GL_LIGHT0);
	setCheckTexture();
	matrixIdentity(objectXform);
}

void resize(void)
{
	setProjection();
	glViewport(0,0,winWidth,winHeight);
}

void doRedraw(void)
{
	if(useFog)
	{
		glClearColor(0.4F,0.4F,0.5F,1.0F);
		glEnable(GL_FOG);
	}
	else
	{
		glClearColor(0.2F,0.2F,0.1F,1.0F);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩三区| 日韩欧美一区在线| 中文字幕中文在线不卡住| 国产一区二区精品久久99| 欧美精品一区在线观看| av午夜一区麻豆| 亚洲免费在线电影| 成人国产精品免费网站| 国产乱码精品一区二区三区av| 国产成人av影院| 精一区二区三区| 亚洲国产综合人成综合网站| 国产精品欧美一区二区三区| 欧美日韩成人在线一区| 91麻豆精品一区二区三区| 国产91丝袜在线播放九色| 蜜臀av一区二区三区| 国产欧美日韩精品在线| 成人听书哪个软件好| 七七婷婷婷婷精品国产| 日韩精品乱码av一区二区| 蜜臀av一区二区| 日韩激情视频网站| 337p日本欧洲亚洲大胆精品 | 91啪亚洲精品| 日韩成人午夜精品| 久久久久九九视频| 一本色道久久综合亚洲aⅴ蜜桃 | 国产suv精品一区二区三区| 亚洲欧美一区二区三区国产精品 | 日韩精品三区四区| 国产婷婷色一区二区三区| 成人91在线观看| 青青青爽久久午夜综合久久午夜| 国产亚洲精品中文字幕| 欧美日韩在线观看一区二区 | 韩国一区二区三区| 亚洲精品日产精品乱码不卡| 日韩一区二区三区四区| 99re这里只有精品视频首页| 免费一级片91| 中文字幕一区二区5566日韩| 91精品国产高清一区二区三区蜜臀 | 国产精品久久国产精麻豆99网站| 欧美日韩免费观看一区二区三区 | 国产精品小仙女| 天天影视涩香欲综合网| 中文字幕一区二区5566日韩| 日韩精品中文字幕一区二区三区| 91蝌蚪porny| 国产精品中文字幕欧美| 天堂成人国产精品一区| 亚洲人成亚洲人成在线观看图片| 精品奇米国产一区二区三区| 欧美午夜精品久久久久久孕妇 | 国产曰批免费观看久久久| 亚洲香肠在线观看| 最新热久久免费视频| 久久先锋影音av| 日韩午夜小视频| 欧美挠脚心视频网站| 色哟哟在线观看一区二区三区| 国产成人精品www牛牛影视| 人妖欧美一区二区| 日韩国产精品91| 亚洲一区精品在线| 亚洲最大成人综合| 国产精品久久精品日日| 中文欧美字幕免费| 国产欧美精品一区aⅴ影院| 日韩欧美一二三四区| 91精品国产综合久久久久久漫画| 色婷婷久久久久swag精品| 成人黄色网址在线观看| 成人激情校园春色| 成人国产在线观看| 国产91精品精华液一区二区三区| 美女网站色91| 蜜臀av一区二区| 久久国产婷婷国产香蕉| 裸体在线国模精品偷拍| 乱一区二区av| 国产一区二区三区美女| 国产一区激情在线| 国产福利精品导航| 成人黄色a**站在线观看| 成人性色生活片免费看爆迷你毛片| 国产成人超碰人人澡人人澡| 成人三级在线视频| 91在线免费视频观看| 91在线播放网址| 欧美在线观看你懂的| 在线电影一区二区三区| 91精品国产丝袜白色高跟鞋| 日韩欧美激情一区| 久久精品这里都是精品| 国产精品久久久久毛片软件| 国产精品毛片无遮挡高清| 亚洲三级在线播放| 亚洲成a人v欧美综合天堂| 日韩av中文字幕一区二区三区| 老司机午夜精品99久久| 国产精品538一区二区在线| 福利一区福利二区| 色美美综合视频| 欧美电影免费提供在线观看| 国产日本欧美一区二区| 一区二区三区不卡视频在线观看| 午夜欧美2019年伦理| 国产一区欧美二区| 一本一本大道香蕉久在线精品| 51午夜精品国产| 国产精品网站在线观看| 天堂成人国产精品一区| 粉嫩av一区二区三区粉嫩| 欧美最猛性xxxxx直播| 26uuu精品一区二区| 亚洲精品久久久蜜桃| 韩国精品主播一区二区在线观看| 99视频热这里只有精品免费| 在线成人高清不卡| 中文字幕视频一区| 免费观看在线色综合| 色综合色狠狠天天综合色| 欧美一二三区在线| 国产精品成人网| 午夜精品久久久久久久99樱桃| 另类调教123区| 成人18视频在线播放| 日韩免费一区二区| 国产精品电影一区二区| 夜夜精品浪潮av一区二区三区| 亚洲va天堂va国产va久| 国产成人在线免费| 在线观看视频一区二区| 欧美不卡123| 亚洲人123区| 亚洲男人天堂av网| 国产白丝精品91爽爽久久| 欧美亚一区二区| 久久精品亚洲国产奇米99| 亚洲日本在线视频观看| 日韩成人一级片| 91在线观看视频| 精品久久久久香蕉网| 亚洲精品自拍动漫在线| 天天操天天色综合| 色妞www精品视频| 久久亚洲免费视频| 亚洲一区免费视频| 高清不卡在线观看av| 久久网站热最新地址| 亚洲成人av一区二区| www..com久久爱| 日韩欧美色电影| 中文字幕中文乱码欧美一区二区| 国产一区久久久| 欧美一区二区三区的| 亚洲精品国产精华液| 国产不卡视频在线播放| 精品理论电影在线观看| 亚洲最新视频在线播放| k8久久久一区二区三区 | 日本高清不卡aⅴ免费网站| 欧美精品一区二区三区四区| 五月激情综合网| 色94色欧美sute亚洲线路一久| 国产日韩欧美综合一区| 亚洲3atv精品一区二区三区| 欧美色精品在线视频| 亚洲免费资源在线播放| 成人福利视频网站| 久久久不卡网国产精品一区| 国产成人av电影在线观看| 91精品国产综合久久福利软件 | 亚洲日本在线天堂| 成人精品免费网站| 亚洲男人天堂av| 成a人片国产精品| 中文字幕 久热精品 视频在线| 精品一区二区三区久久| 久久精品夜色噜噜亚洲a∨| 久久99国产乱子伦精品免费| 精品国免费一区二区三区| 久热成人在线视频| 亚洲精品在线一区二区| 久久成人免费日本黄色| 日韩欧美中文字幕一区| 久久99九九99精品| 国产精品全国免费观看高清| 国产suv精品一区二区883| 国产日韩欧美一区二区三区综合| 极品少妇一区二区三区精品视频| 欧美在线一区二区| 蜜桃一区二区三区四区| 精品成人私密视频| 国产不卡高清在线观看视频| 日韩美女久久久| 91黄色激情网站| 日韩va亚洲va欧美va久久|