亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩欧美国产午夜精品| 91香蕉视频黄| 日韩va亚洲va欧美va久久| 日韩主播视频在线| 成人一区二区在线观看| 国产福利精品一区| 在线观看亚洲精品| 久久伊人中文字幕| 亚洲欧美日韩在线不卡| 国内久久婷婷综合| 91丨九色丨尤物| 欧美一区二区三区的| 国产精品污www在线观看| 亚洲日本护士毛茸茸| 偷拍一区二区三区| 国产69精品久久99不卡| 91 com成人网| 国产精品伦理一区二区| 亚洲人成人一区二区在线观看| 日韩黄色片在线观看| 成人自拍视频在线| 精品日韩一区二区| 国产精品伦一区二区三级视频| 日韩专区中文字幕一区二区| 91在线你懂得| 午夜成人在线视频| 热久久一区二区| 中文字幕欧美国产| 成人高清免费观看| 日韩美女啊v在线免费观看| 国产主播一区二区| 17c精品麻豆一区二区免费| 免费高清视频精品| 制服丝袜亚洲色图| 午夜电影久久久| 国产一区二区网址| 91精品国产乱码| 最新中文字幕一区二区三区| 免费美女久久99| 欧美片网站yy| 亚洲毛片av在线| 成人av在线播放网站| 日韩免费福利电影在线观看| 亚洲人成在线播放网站岛国| 国产精品 日产精品 欧美精品| 欧美高清视频在线高清观看mv色露露十八 | 日本一区免费视频| 免费人成黄页网站在线一区二区| 欧美色区777第一页| 一区二区三区在线视频观看| av一区二区三区黑人| 中文字幕av一区 二区| 国产一区二区成人久久免费影院| 欧美网站大全在线观看| 亚洲美女屁股眼交| 欧美综合一区二区| 亚洲国产aⅴ天堂久久| 在线观看亚洲专区| 亚洲成人一区在线| 91啪九色porn原创视频在线观看| 亚洲精品视频一区| 欧美一a一片一级一片| 一区二区三区波多野结衣在线观看| 国产sm精品调教视频网站| 欧美韩日一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美一区二区三区婷婷月色| 久久国产三级精品| 一区精品在线播放| 欧美日韩综合一区| 精品无人码麻豆乱码1区2区 | 日韩欧美久久一区| 国产成人精品影视| 亚洲图片欧美色图| 精品第一国产综合精品aⅴ| 成人免费的视频| 日精品一区二区三区| 中文字幕精品综合| 欧美剧在线免费观看网站| 国产精品1区二区.| 亚洲成a人片在线不卡一二三区| 久久一区二区三区四区| 91丨porny丨在线| 日本中文字幕不卡| 1区2区3区欧美| 亚洲精品在线免费观看视频| 色香蕉久久蜜桃| 狠狠色伊人亚洲综合成人| 一区二区三区欧美久久| 久久亚洲精品小早川怜子| 在线欧美小视频| 国产经典欧美精品| 人禽交欧美网站| 亚洲欧美另类久久久精品2019| 欧美成人精品1314www| 欧美在线观看视频在线| 成人av网站大全| 极品少妇xxxx精品少妇偷拍| 亚洲va欧美va国产va天堂影院| 国产精品国产a| 久久久久久久久97黄色工厂| 欧美日韩亚洲综合在线 | 国产亚洲一区二区在线观看| 欧美日韩一区二区三区四区五区| 国产激情视频一区二区三区欧美 | 亚洲黄一区二区三区| 精品少妇一区二区三区在线播放 | 欧美日精品一区视频| eeuss鲁片一区二区三区在线观看| 麻豆成人综合网| 日本 国产 欧美色综合| 日韩专区欧美专区| 亚洲大片精品永久免费| 亚洲毛片av在线| 亚洲人一二三区| 国产精品美女久久久久av爽李琼| 欧美精品一区二区三区很污很色的| 欧美日韩国产首页| 欧美性色综合网| 欧美在线看片a免费观看| 欧美影院精品一区| 91成人国产精品| 在线观看欧美黄色| 欧美日韩综合在线免费观看| 91国偷自产一区二区使用方法| 91色九色蝌蚪| 日本道色综合久久| 欧洲日韩一区二区三区| 欧洲一区二区av| 91久久线看在观草草青青 | 国产农村妇女精品| 国产精品午夜在线观看| 亚洲欧洲国产专区| 亚洲欧美激情小说另类| 亚洲成人综合网站| 日韩电影在线免费观看| 看电视剧不卡顿的网站| 理论电影国产精品| 国产精品 欧美精品| 国产**成人网毛片九色 | 国产精品66部| 成人av电影在线播放| 91国偷自产一区二区三区成为亚洲经典 | 不卡免费追剧大全电视剧网站| 成人爽a毛片一区二区免费| 91免费观看在线| 欧美精品99久久久**| 精品国产自在久精品国产| 日本一区二区高清| 亚洲福利一区二区| 麻豆成人91精品二区三区| 成人性生交大片免费| 欧美三级资源在线| 久久众筹精品私拍模特| 亚洲精品欧美激情| 男人的天堂亚洲一区| 99久久精品国产精品久久 | 国产mv日韩mv欧美| 在线成人午夜影院| 国产视频一区在线播放| 亚洲精品中文字幕在线观看| 日韩成人一级片| 成人午夜精品在线| 欧美高清视频在线高清观看mv色露露十八 | 国产老女人精品毛片久久| 成人免费高清视频在线观看| 欧美精品日韩一本| 中文字幕一区视频| 免费成人在线播放| 91麻豆福利精品推荐| 欧美一卡二卡在线观看| 亚洲欧洲国产日韩| 国产精品自拍网站| 欧美日韩不卡一区| 中文字幕一区免费在线观看| 久久国产精品第一页| 欧美亚洲国产怡红院影院| 亚洲国产成人自拍| 蜜臀久久久久久久| 欧美怡红院视频| 国产精品亲子乱子伦xxxx裸| 人禽交欧美网站| 欧美日韩一级视频| 亚洲欧美二区三区| 国产suv精品一区二区883| 欧美一区二区成人6969| 一区二区三区中文字幕| 成人免费毛片嘿嘿连载视频| 精品久久久三级丝袜| 午夜不卡在线视频| 在线观看国产一区二区| 国产精品欧美综合在线| 国内久久婷婷综合| 亚洲精品在线电影| 日本亚洲视频在线| 91超碰这里只有精品国产| 亚洲成人在线免费| 欧美视频中文字幕| 尤物av一区二区| 色综合久久久久网|