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

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

?? 選擇與反饋.cpp

?? 經(jīng)典 C++代碼
?? CPP
字號(hào):
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<time.h>
#include<GL\glaux.h>
#pragma comment(lib,"opengl32")
#pragma comment(lib,"glu32")
#pragma comment(lib,"glaux")

#define MAXOBJS   10000
#define MAXSELECT 100
#define MAXFEED   300
#define SOLID     1
#define LINE      2
#define POINT     3

static void InitObjects(GLint num);
static void Init(void);
static void CALLBACK Resize(int width,int height);
static void Render(GLenum mode);
static DoSelect(GLint x,GLint y);
static void RecolorTri(GLint h);
static void DeleteTri(GLint h);
static void GrowTri(GLint h);
void CALLBACK Mouse_left(AUX_EVENTREC* event);
void CALLBACK Mouse_middle(AUX_EVENTREC* event);
void CALLBACK Mouse_right(AUX_EVENTREC* event);
static void CALLBACK Paint(void);
static void PaintZoom(GLint x,GLint y);
static void DumpFeedbackVert(GLint *i,GLint n);
static void PaintFeedback(GLint n);
static void DoFeedback(void);
static void CALLBACK Key_LEFT(void);
static void CALLBACK Key_RIGHT(void);
static void CALLBACK Key_Z(void);
static void CALLBACK Key_z(void);
static void CALLBACK Key_f(void);
static void CALLBACK Key_d(void);
static void CALLBACK Key_l(void);

GLint windW,windH;

GLuint selectBuf[MAXSELECT];
GLfloat feedBuf[MAXFEED];
GLint vp[4];
float zRotation=90.0;
float zoom=1.0;
GLint objectCount;
GLint numObjects;

struct object{
	float v1[2];
	float v2[2];
	float v3[2];
	float color[3];
}objects[MAXOBJS];

GLenum linePoly=GL_FALSE;

static void InitObjects(GLint num)
{
	GLint i;
	float x,y;

	if(num>MAXOBJS)
		num=MAXOBJS;
	if(num<1)num=1;

	objectCount=num;

	srand((unsigned int)time(NULL));
	for(i=0;i<num;i++)
	{
		x=(rand()%300)-150;
		y=(rand()%300)-150;

		objects[i].v1[0]=x+(rand()%50)-25;
		objects[i].v2[0]=x+(rand()%50)-25;
		objects[i].v3[0]=x+(rand()%50)-25;
		objects[i].v1[1]=y+(rand()%50)-25;
		objects[i].v2[1]=y+(rand()%50)-25;
		objects[i].v3[1]=y+(rand()%50)-25;
		objects[i].color[0]=((rand()%100)+50)/150.0;
		objects[i].color[1]=((rand()%100)+50)/150.0;
		objects[i].color[3]=((rand()%100)+50)/150.0;
	}
}

static void Init(void)
{
	numObjects=10;
	InitObjects(numObjects);
	glGetIntegerv(GL_VIEWPORT,vp);
}

static void CALLBACK Resize(int width,int height)
{
	windW=(GLint)width;
	windH=(GLint)height;
}

static void Render(GLenum mode)
{
	GLint i;

	for(i=0;i<objectCount;i++)
	{
		if(mode==GL_SELECT)glLoadName(i);
		glColor3fv(objects[i].color);
		glBegin(GL_POLYGON);
		    glVertex2fv(objects[i].v1);
			glVertex2fv(objects[i].v2);
			glVertex2fv(objects[i].v3);
		glEnd();
	}
}

static GLint DoSelect(GLint x,GLint y)
{
	GLint hits;

	glSelectBuffer(MAXSELECT,selectBuf);
	(void)glRenderMode(GL_SELECT);
	glInitNames();
	glPushName((GLuint)~0);

	glPushMatrix();

	glViewport(0,0,windW,windH);
	glGetIntegerv(GL_VIEWPORT,vp);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPickMatrix(x,windH-y,4,4,vp);
	gluOrtho2D(-175,175,-175,175);
	glMatrixMode(GL_MODELVIEW);

	glClearColor(0.0,0.0,0.0,0.0);
	glClear(GL_COLOR_BUFFER_BIT);

	glScalef(zoom,zoom,zoom);
	glRotatef(zRotation,0,0,1);

	Render(GL_SELECT);

	glPopMatrix();

	hits=glRenderMode(GL_RENDER);

	if(hits<=0)return -1;

	return selectBuf[(hits-1)*4+3];
}

static void RecolorTri(GLint h)
{
	objects[h].color[0]=((rand()%100)+50)/150.0;
	objects[h].color[1]=((rand()%100)+50)/150.0;
	objects[h].color[2]=((rand()%100)+50)/150.0;
}

static void DeleteTri(GLint h)
{
	objects[h]=objects[objectCount-1];
	objectCount--;
}

static void GrowTri(GLint h)
{
	float v[2];
	float *oIdV;
	GLint i;

	v[0]=objects[h].v1[0]+objects[h].v2[0]+objects[h].v3[0];
    v[1]=objects[h].v1[1]+objects[h].v2[1]+objects[h].v3[1];
	v[0]/=3;
	v[1]/=3;

	for(i=0;i<3;i++)
	{
		switch(i)
		{
		case 0:
			oIdV=objects[h].v1;
			break;
		case 1:
			oIdV=objects[h].v2;
			break;
		case 2:
			oIdV=objects[h].v3;
			break;
		}
		oIdV[0]=1.5*(oIdV[0]-v[0])+v[0];
		oIdV[1]=1.5*(oIdV[1]-v[1])+v[1];
	}
}

void CALLBACK Mouse_left(AUX_EVENTREC *event)
{
	GLint mouseX,mouseY;
	GLint hit;
	mouseX=event->data[AUX_MOUSEX];
	mouseY=event->data[AUX_MOUSEY];
	hit=DoSelect((GLint)mouseX,(GLint)mouseY);
	if(hit!=-1)RecolorTri(hit);

	//return GL_FALSE;
}

void CALLBACK Mouse_middle(AUX_EVENTREC *event)
{
	GLint mouseX,mouseY;
	GLint hit;
	mouseX=event->data[AUX_MOUSEX];
	mouseY=event->data[AUX_MOUSEY];
	hit=DoSelect((GLint)mouseX,(GLint)mouseY);
	if(hit!=-1)GrowTri(hit);

	//return GL_FALSE;
}

void CALLBACK Mouse_right(AUX_EVENTREC *event)
{
	GLint mouseX,mouseY;
	GLint hit;
	mouseX=event->data[AUX_MOUSEX];
	mouseY=event->data[AUX_MOUSEY];
	hit=DoSelect((GLint)mouseX,(GLint)mouseY);
	if(hit!=-1)DeleteTri(hit);

	//return GL_FALSE;
}

static void CALLBACK Paint(void)
{
	glPushMatrix();

	glViewport(0,0,windW,windH);
	glGetIntegerv(GL_VIEWPORT,vp);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(-175,175,-175,175);
	glMatrixMode(GL_MODELVIEW);

	glClearColor(0.0,0.0,0.0,0.0);
	glClear(GL_COLOR_BUFFER_BIT);
	glScalef(zoom,zoom,zoom);
	glRotatef(zRotation,0,0,1);

	Render(GL_RENDER);

	glPopMatrix();
}

static void PaintZoom(GLint x,GLint y)
{
	glPushMatrix();

	glViewport(0,0,windW,windH);
	glGetIntegerv(GL_VIEWPORT,vp);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPickMatrix(x,windH-y,4,4,vp);
	gluOrtho2D(-175,175,-175,175);
	glMatrixMode(GL_COLOR_BUFFER_BIT);

	glScalef(zoom,zoom,zoom);
	glRotatef(zRotation,0,0,1);

	Render(GL_RENDER);

	glPopMatrix();
}

static void DumpFeedbackVert(GLint *i,GLint n)
{
	GLint index;

	index=*i;
	if(index+7>n)
	{
		*i=n;
		printf("   ???\n");
		return;
	}
	printf("(%g%g%g),color=(%4.2f%4.2f%4.2f)\n",
		feedBuf[index],
		feedBuf[index+1],
		feedBuf[index+2],
		feedBuf[index+3],
		feedBuf[index+4],
		feedBuf[index+5]);

	index+=7;
	*i=index;
}

static void PaintFeedback(GLint n)
{
	GLint i;
	GLint verts;

	printf("Feedback results(%d floats):\n",n);
	for(i=0;i<n;i++)
	{
		switch((GLint)feedBuf[i])
		{
		case GL_POLYGON_TOKEN:
				printf("Polygon");
				i++;
				if(i<n)
				{
					verts=(GLint)feedBuf[i];
					i++;
					printf(":%d vettices",verts);
				}
				else verts=0;

				printf("\n");
				while(verts)
				{
					DumpFeedbackVert(&i,n);
					verts--;
				}
				i--;
				break;
		case GL_LINE_TOKEN:
			printf("Line:\n");
			i++;
			DumpFeedbackVert(&i,n);
			DumpFeedbackVert(&i,n);
			i--;
			break;
		case GL_LINE_RESET_TOKEN:
			printf("Line Reset:\n");
			i++;
			DumpFeedbackVert(&i,n);
			DumpFeedbackVert(&i,n);
			i--;
			break;
		default:
			printf("%9.2f\n",feedBuf[i]);
			break;
		}
	}
	if(i==MAXFEED)
		printf("...\n");
	printf("\n");
}

static void DoFeedback(void)
{
	GLint x;

	glFeedbackBuffer(MAXFEED,GL_3D_COLOR,feedBuf);
	(void)glRenderMode(GL_FEEDBACK);

	glPushMatrix();

	glViewport(0,0,windW,windH);
	glGetIntegerv(GL_VIEWPORT,vp);

	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(-175,175,-175,175);
	glMatrixMode(GL_MODELVIEW);

	glClearColor(0.0,0.0,0.0,0.0);
	glClear(GL_COLOR_BUFFER_BIT);

	glScalef(zoom,zoom,zoom);
	glRotatef(zRotation,0,0,1);

	Render(GL_FEEDBACK);

	glPopMatrix();

	x=glRenderMode(GL_RENDER);
	if(x==-1)
		x=MAXFEED;

	PaintFeedback((GLint)x);
}

static void CALLBACK Key_LEFT(void)
{
	zRotation+=0.5;
}

static void CALLBACK Key_RIGHT(void)
{
	zRotation-=0.5;
}

static void CALLBACK Key_Z(void)
{
	zoom/=0.75;
}

static void CALLBACK Key_z(void)
{
	zoom*=0.75;
}

static void CALLBACK Key_f(void)
{
	DoFeedback();
}

static void CALLBACK Key_d(void)
{
	GLint mouseX,mouseY;

	auxGetMouseLoc(&mouseX,&mouseY);
	PaintZoom((GLint)mouseX,(GLint)mouseY);
}

static void CALLBACK Key_l(void)
{
	linePoly=!linePoly;
	if(linePoly)
		glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
	else
		glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
}

void main(int argc,char **argv)
{
	GLenum type;

	windW=300;
	windH=300;
	auxInitPosition(0,0,windW,windH);

	type=AUX_RGB|AUX_SINGLE;

	auxInitDisplayMode(type);

	if(auxInitWindow("Select Test")==GL_FALSE)
		auxQuit();

	Init();
	auxExposeFunc((AUXEXPOSEPROC)Resize);
	auxReshapeFunc((AUXRESHAPEPROC)Resize);
	auxKeyFunc(AUX_LEFT,Key_LEFT);
	auxKeyFunc(AUX_RIGHT,Key_RIGHT);
	auxKeyFunc(AUX_Z,Key_Z);
	auxKeyFunc(AUX_z,Key_z);
	auxKeyFunc(AUX_f,Key_f);
	auxKeyFunc(AUX_d,Key_d);
	auxKeyFunc(AUX_l,Key_l);
	auxMouseFunc(AUX_LEFTBUTTON,AUX_MOUSEDOWN,Mouse_left);
	//auxMouseFunc(AUX_MIDDLEBUTTON,AUX_MOUSEDOWN,Mouse_middle);
	auxMouseFunc(AUX_RIGHTBUTTON,AUX_MOUSEDOWN,Mouse_right);
	auxMainLoop(Paint);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美女屁股眼交3| 在线视频综合导航| 精品一区二区三区免费播放| 亚洲国产精品久久久久秋霞影院 | 综合久久久久综合| 国产精品久久久久久久久久久免费看 | 欧美视频中文字幕| 欧美色图免费看| 欧美色网一区二区| 欧美亚洲国产一区二区三区| 欧美性感一类影片在线播放| 欧洲精品在线观看| 欧美久久久久久久久中文字幕| 欧美色视频在线观看| 在线观看www91| 欧美日韩二区三区| 日韩精品一区二区三区三区免费| 日韩一区二区麻豆国产| 精品国产乱码91久久久久久网站| 26uuu国产一区二区三区 | 日韩av高清在线观看| 亚洲成av人片在www色猫咪| 国产午夜精品一区二区三区嫩草 | 中文字幕的久久| 在线观看网站黄不卡| 欧美探花视频资源| 欧美va日韩va| 制服丝袜亚洲网站| 日韩欧美中文字幕制服| 国产色婷婷亚洲99精品小说| 国产女主播一区| 亚洲免费资源在线播放| 日韩电影免费在线| 国产黄色91视频| 在线国产亚洲欧美| 欧美精品乱码久久久久久按摩| 日韩一区二区三区在线| 欧美日韩电影在线| 中文字幕一区二区不卡| 日韩美女啊v在线免费观看| 亚洲一区在线观看免费观看电影高清 | 日韩欧美你懂的| 97久久超碰精品国产| 欧美色视频一区| 久久一二三国产| 综合久久国产九一剧情麻豆| 亚洲一区二区欧美日韩| 精品无码三级在线观看视频| 99视频热这里只有精品免费| 7777精品伊人久久久大香线蕉经典版下载| 日韩欧美色电影| 亚洲图片你懂的| 久久99精品国产麻豆不卡| 成人aa视频在线观看| 欧美一区二区三区视频免费播放| 国产欧美一区二区精品秋霞影院| 一区二区三区丝袜| 国产一区欧美一区| 欧美日韩一区高清| 日本一区二区高清| 日韩高清在线电影| 白白色 亚洲乱淫| 精品免费99久久| 一区二区三区波多野结衣在线观看| 91精品国产美女浴室洗澡无遮挡| 国产一区二区三区电影在线观看| 激情成人午夜视频| 欧美在线色视频| 中文字幕欧美三区| 裸体健美xxxx欧美裸体表演| 91天堂素人约啪| 久久精品在线观看| 99久久精品国产网站| 日韩精品中文字幕一区二区三区| 一区二区三区丝袜| 成人av集中营| www久久久久| 天堂精品中文字幕在线| 色综合色狠狠综合色| 国产欧美日韩一区二区三区在线观看| 亚洲一区二区3| 成人动漫中文字幕| 久久综合久久99| 麻豆一区二区在线| 欧美日韩精品专区| 亚洲综合免费观看高清完整版| 国产福利一区二区三区视频在线| 91精品一区二区三区久久久久久 | 欧美性videosxxxxx| 国产精品丝袜久久久久久app| 免费欧美日韩国产三级电影| 91行情网站电视在线观看高清版| 国产精品视频你懂的| 国产精品自拍网站| 亚洲精品一区二区三区精华液 | 欧美日韩夫妻久久| 亚洲综合清纯丝袜自拍| 在线一区二区三区四区| 中文字幕一区二区三区视频| 国产成人av电影在线| 久久蜜桃av一区精品变态类天堂| 久久成人综合网| 日韩欧美精品在线| 蜜臀a∨国产成人精品| 91精品国产一区二区三区蜜臀| 亚洲一区二区欧美激情| 欧美在线观看一区| 亚洲一区二区三区四区在线| 91精彩视频在线观看| 亚洲激情综合网| 91精品办公室少妇高潮对白| 一区二区三区欧美日韩| 欧美午夜免费电影| 亚洲国产日韩a在线播放| 欧美性一二三区| 亚洲成a人片在线观看中文| 欧美吻胸吃奶大尺度电影| 亚洲图片一区二区| 亚洲欧美日韩一区二区三区在线观看 | 久久99国产精品久久| 精品国产一区二区三区久久影院| 久久av老司机精品网站导航| 精品国产1区二区| 国产激情视频一区二区在线观看 | 色婷婷久久一区二区三区麻豆| 18涩涩午夜精品.www| 色哟哟一区二区在线观看| 亚洲综合色区另类av| 欧美日韩成人综合天天影院| 日本美女一区二区三区视频| 精品91自产拍在线观看一区| 国产成人午夜精品5599| 一区精品在线播放| 欧美中文字幕亚洲一区二区va在线 | 中文字幕国产一区| 在线精品视频免费播放| 男人操女人的视频在线观看欧美| 亚洲精品一区二区三区影院 | 中文字幕乱码一区二区免费| 一区二区日韩av| 欧美区视频在线观看| 人妖欧美一区二区| 中文字幕第一页久久| 欧美性一区二区| 久久狠狠亚洲综合| 中文字幕在线视频一区| 欧美日韩在线观看一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久精品亚洲精品国产欧美kt∨ | 欧美猛男gaygay网站| 久久国产精品99久久久久久老狼| ww亚洲ww在线观看国产| 91性感美女视频| 日韩精品一卡二卡三卡四卡无卡| 久久午夜老司机| 91成人国产精品| 国产一区二区三区不卡在线观看| 亚洲精品免费播放| 欧美精品一区二区三区蜜桃视频 | 日本一区二区综合亚洲| 欧美色图片你懂的| 成人一级黄色片| 亚洲aaa精品| 中文字幕欧美日本乱码一线二线 | 一片黄亚洲嫩模| 亚洲一区二区三区四区在线免费观看 | 欧美人与性动xxxx| 国产成人午夜精品5599 | 91麻豆123| 久久成人综合网| 亚洲专区一二三| 国产三级欧美三级| 9191精品国产综合久久久久久| 成人性生交大片免费看中文 | 国产一区二区主播在线| 亚洲影院理伦片| 久久久精品免费观看| 日韩午夜在线播放| 在线视频你懂得一区| 成人一区二区视频| 久久电影网站中文字幕 | 色综合久久88色综合天天免费| 国内精品伊人久久久久av影院| 亚洲国产一区二区在线播放| 国产精品美女久久久久av爽李琼| 日韩欧美在线一区二区三区| 日本丶国产丶欧美色综合| 国产成人精品免费网站| 精品一区二区三区香蕉蜜桃| 午夜欧美视频在线观看| 成人av网站免费| 制服丝袜成人动漫| 99久精品国产| 夫妻av一区二区| 国产一区中文字幕| 精品亚洲免费视频| 男男视频亚洲欧美| 日韩国产成人精品| 视频一区中文字幕国产| 亚洲成人免费av|