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

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

?? 選擇與反饋.cpp

?? C++源代碼集
?? CPP
字號:
#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);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清免费观看| www久久久久| 精品国产免费一区二区三区四区 | 亚洲精品国产视频| 日韩av一级片| 成人晚上爱看视频| 欧美日韩国产影片| 久久久久久久久一| 亚洲精品国久久99热| 免费看日韩a级影片| 大胆欧美人体老妇| 欧美一区二区视频观看视频| 中文一区二区在线观看| 性久久久久久久久| 国产91高潮流白浆在线麻豆| 欧美性生活影院| 国产欧美日韩综合| 日韩高清欧美激情| 久久婷婷国产综合精品青草| 中文字幕在线视频一区| 日本系列欧美系列| 91影院在线观看| 精品理论电影在线| 五月激情丁香一区二区三区| 国产成人av电影在线| 欧美一级欧美一级在线播放| 日韩理论在线观看| 国产一区二区三区免费看| 欧美日韩国产综合久久| 国产精品美女久久久久aⅴ国产馆| 天堂成人国产精品一区| 一本一本久久a久久精品综合麻豆| 精品国产一区二区三区四区四| 一级做a爱片久久| 成人中文字幕合集| 日韩美女主播在线视频一区二区三区| 亚洲激情一二三区| 丰满少妇久久久久久久| 337p日本欧洲亚洲大胆色噜噜| 亚洲国产日韩a在线播放| 99精品视频中文字幕| www久久精品| 美女免费视频一区| 欧美疯狂做受xxxx富婆| 一区二区三区四区高清精品免费观看| 国产一区不卡精品| 日韩欧美一区电影| 午夜欧美2019年伦理| 色94色欧美sute亚洲线路一久| 中文字幕国产一区| 国产精品白丝av| 91精品一区二区三区在线观看| 亚洲一区在线播放| 在线免费观看日本一区| 亚洲色图色小说| 99在线热播精品免费| 国产精品视频一二三区| 丰满岳乱妇一区二区三区| 国产亚洲一二三区| 成人自拍视频在线观看| 国产欧美日韩麻豆91| 国产成人av一区| 国产欧美日韩三级| 成人黄色777网| 狠狠色丁香久久婷婷综合_中 | 久久精品国产99| 欧美电影影音先锋| 婷婷六月综合网| 欧美精品v日韩精品v韩国精品v| 一区二区久久久| 欧美三级三级三级| 亚洲成人av免费| 91精品国产综合久久国产大片| 香蕉加勒比综合久久| 欧美裸体bbwbbwbbw| 日本视频一区二区三区| 欧美一区二区三区视频| 免费av网站大全久久| 日韩欧美一区二区三区在线| 国内外成人在线视频| 久久品道一品道久久精品| 国产盗摄精品一区二区三区在线| 国产日韩高清在线| 91在线精品一区二区| 一区二区三区四区乱视频| 在线免费亚洲电影| 日韩av午夜在线观看| 精品国产精品一区二区夜夜嗨| 国产美女在线观看一区| 国产精品情趣视频| 欧美这里有精品| 青青草97国产精品免费观看| 欧美精品一区二区不卡| www.色综合.com| 亚洲国产精品久久久久婷婷884| 91精品国产美女浴室洗澡无遮挡| 久久国产福利国产秒拍| 国产日韩成人精品| 色妹子一区二区| 欧美aⅴ一区二区三区视频| 2020日本不卡一区二区视频| 成人国产精品免费观看| 一区二区三区高清不卡| 欧美一区二区三区爱爱| 国产在线日韩欧美| 一区二区高清在线| 欧美sm极限捆绑bd| 风间由美一区二区三区在线观看| 中文字幕在线免费不卡| 欧美剧情电影在线观看完整版免费励志电影 | 国产成人精品免费视频网站| 亚洲欧美日韩国产综合| 91精品欧美久久久久久动漫| 国产91富婆露脸刺激对白| 亚洲午夜精品在线| 久久蜜桃香蕉精品一区二区三区| 一本到高清视频免费精品| 久久精品国产秦先生| 亚洲欧美在线高清| 精品久久久久久久久久久久包黑料 | 国产精品久久影院| 91精品国产福利在线观看 | 亚洲欧美成人一区二区三区| 欧美日韩免费在线视频| 国产成人自拍网| 亚洲福利电影网| 中文一区二区在线观看| 91精品国产91久久久久久最新毛片 | 久久嫩草精品久久久精品| 一本大道av一区二区在线播放| 精品综合久久久久久8888| 成人欧美一区二区三区| 日韩女优制服丝袜电影| 欧美视频三区在线播放| 粉嫩欧美一区二区三区高清影视| 日本成人超碰在线观看| 亚洲激情五月婷婷| 国产欧美一区二区精品婷婷 | 经典三级视频一区| 亚洲一区在线视频| 亚洲国产精品99久久久久久久久| 欧美一区欧美二区| 欧美三级一区二区| www.日韩大片| 国产高清不卡一区| 日本三级韩国三级欧美三级| 亚洲男同性视频| 国产调教视频一区| 日韩一区二区三区av| 欧美午夜精品免费| 97aⅴ精品视频一二三区| 国产一区在线观看麻豆| 日韩 欧美一区二区三区| 亚洲在线免费播放| 亚洲欧美一区二区在线观看| 国产色综合一区| 欧美一区二区三区不卡| 欧美剧在线免费观看网站 | 蜜臀av国产精品久久久久| 亚洲一区在线看| 一区二区三区在线播放| 精品亚洲aⅴ乱码一区二区三区| 日韩avvvv在线播放| 亚洲第一av色| 亚洲图片欧美综合| 一区二区三区四区五区视频在线观看| 国产精品久久久一本精品| 国产午夜精品一区二区三区四区| 欧美成人精品1314www| 欧美精品视频www在线观看| 欧美又粗又大又爽| 91影院在线免费观看| 99久久久精品免费观看国产蜜| 成人av资源网站| 成人ar影院免费观看视频| 成人激情小说网站| 成人黄页在线观看| 99久久99久久免费精品蜜臀| 国产91精品露脸国语对白| 国产69精品一区二区亚洲孕妇| 国产精品一区二区黑丝| 国产成人av电影在线观看| 国产成人综合网| 成人va在线观看| 99久免费精品视频在线观看| 一本一本大道香蕉久在线精品| 日本福利一区二区| 欧洲国产伦久久久久久久| 欧美日韩国产不卡| 欧美一区日韩一区| 精品福利二区三区| 国产亚洲精品bt天堂精选| 国产精品久久久久久久久果冻传媒| 欧美国产视频在线| 亚洲区小说区图片区qvod| 亚洲精品高清在线观看| 婷婷中文字幕综合| 韩国理伦片一区二区三区在线播放| 国产一区在线不卡| 91玉足脚交白嫩脚丫在线播放|