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

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

?? dissolve.c

?? C:Documents and SettingsAdministrator桌面VC++多媒體特效制作百例CHAR20Dissolve
?? C
字號:
/* dissolve.c - by Tom McReynolds, SGI *//* An Example of dissolve, using stencil *//* Drag with left mouse button to dissolve to the 3D background,   Drag with middle mouse button to dissolve to checkerboard, and   use right button for menu to clear stencil. */#include "glut.h"#include <stdlib.h>#include <string.h>#include <math.h>#include <stdio.h>#ifdef WIN32#define random rand#endifint winWidth = 512;int winHeight = 512;/* Create a single component texture map */GLfloat *make_texture(int maxs, int maxt){  int s, t;  static GLfloat *texture;  texture = (GLfloat *) malloc(maxs * maxt * sizeof(GLfloat));  for (t = 0; t < maxt; t++) {    for (s = 0; s < maxs; s++) {      texture[s + maxs * t] = ((s >> 4) & 0x1) ^ ((t >> 4) & 0x1);    }  }  return texture;}enum {  SPHERE = 1, CONE};GLfloat angle = 0.f;    /* angle of rotating object in  layer 0 */enum {  X, Y};GLboolean eraser = GL_FALSE;GLint layer = 1;GLint eraserpos[2] ={512 / 8, 512 / 12};/* draw eraser and erase what's underneath */GLubyte *eraserpix = 0;int erasersize = 0;voidmakeEraser(void){  int i, skip;  erasersize = 4 * winWidth / 4 * winHeight / 6;  eraserpix = (GLubyte *) realloc(eraserpix, erasersize * sizeof(GLubyte));  /* make it white */  (void) memset(eraserpix, 255, erasersize * sizeof(GLubyte));  skip = (int) (random() % 8);  for (i = 0; i < erasersize; i++) {    if (!skip) {      eraserpix[i] = 0;      eraserpix[i + 1] = 0;      eraserpix[i + 2] = 0;      eraserpix[i + 3] = 0;      skip = (int) (random() % 8);    } else      skip--;  }}/* ARGSUSED2 *//* left button, first layer, middle button, second layer */voidmouse(int button, int state, int x, int y){  if (state == GLUT_DOWN) {    eraser = GL_TRUE;    if (button == GLUT_LEFT_BUTTON)      layer = 1;    else                /* GLUT_MIDDLE: GLUT_RIGHT is for menu */      layer = 0;  } else {              /* GLUT_UP */    eraser = GL_FALSE;  }  glutPostRedisplay();}enum {  CLEAR};                      /* menu choices */GLboolean clearstencil = GL_TRUE;voidmenu(int choice){  switch (choice) {  case CLEAR:    clearstencil = GL_TRUE;    break;  }  glutPostRedisplay();}/* used to get current width and height of viewport */voidreshape(int wid, int ht){  glViewport(0, 0, wid, ht);  winWidth = wid;  winHeight = ht;  clearstencil = GL_TRUE;  makeEraser();  glutPostRedisplay();}voiddraweraser(void){  glMatrixMode(GL_PROJECTION);  glLoadIdentity();  gluOrtho2D(0, winWidth, 0, winHeight);  glMatrixMode(GL_MODELVIEW);  glLoadIdentity();  /* replace with this layer */  glStencilFunc(GL_ALWAYS, layer, 0);  glStencilOp(GL_KEEP, GL_REPLACE, GL_REPLACE);  glDisable(GL_LIGHTING);  glDisable(GL_DEPTH_TEST);  glEnable(GL_ALPHA_TEST);  glAlphaFunc(GL_NOTEQUAL, 0);  glRasterPos2i(eraserpos[X], eraserpos[Y]);  glBitmap(0, 0, 0.f, 0.f, -winWidth / 8.f, -winHeight / 12.f, 0);  glDrawPixels(winWidth / 4, winHeight / 6, GL_RGBA, GL_UNSIGNED_BYTE, eraserpix);  glDisable(GL_ALPHA_TEST);}voiddrawlayer2(void){  glMatrixMode(GL_PROJECTION);  glLoadIdentity();  gluOrtho2D(0, winWidth, 0, winHeight);  glMatrixMode(GL_MODELVIEW);  glLoadIdentity();  glDisable(GL_LIGHTING);  glDisable(GL_DEPTH_TEST);  glEnable(GL_TEXTURE_2D);  glBegin(GL_QUADS);  glTexCoord2i(0, 0);  glVertex2i(0, 0);  glTexCoord2i(1, 0);  glVertex2i(winWidth, 0);  glTexCoord2i(1, 1);  glVertex2i(winWidth, winHeight);  glTexCoord2i(0, 1);  glVertex2i(0, winHeight);  glEnd();  glDisable(GL_TEXTURE_2D);  if (glGetError())     /* to catch programming errors; should never happen */    printf("Oops! I screwed up my OpenGL calls somewhere\n");}voiddrawlayer1(void){  /* material properties for objects in scene */  static GLfloat wall_mat[] =  {1.f, 1.f, 1.f, 1.f};  static GLfloat lightpos[] =  {50.f, 50.f, -320.f, 1.f};  /* draw a perspective scene */  glMatrixMode(GL_PROJECTION);  glLoadIdentity();  glFrustum(-100., 100., -100., 100., 320., 640.);  glMatrixMode(GL_MODELVIEW);  glLoadIdentity();  /* turn on features */  glEnable(GL_DEPTH_TEST);  glEnable(GL_LIGHTING);  glEnable(GL_LIGHT0);  /* place light 0 in the right place */  glLightfv(GL_LIGHT0, GL_POSITION, lightpos);  /* remove back faces to speed things up */  glCullFace(GL_BACK);  /* Note: wall verticies are ordered so they are all front facing this lets     me do back face culling to speed things up.  */  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat);  /* floor */  /* make the floor textured */  glEnable(GL_TEXTURE_2D);  /* Since we want to turn texturing on for floor only, we have to make floor      a separate glBegin()/glEnd() sequence. You can't turn texturing on and     off between begin and end calls */  glBegin(GL_QUADS);  glNormal3f(0.f, 1.f, 0.f);  glTexCoord2i(0, 0);  glVertex3f(-100.f, -100.f, -320.f);  glTexCoord2i(1, 0);  glVertex3f(100.f, -100.f, -320.f);  glTexCoord2i(1, 1);  glVertex3f(100.f, -100.f, -520.f);  glTexCoord2i(0, 1);  glVertex3f(-100.f, -100.f, -520.f);  glEnd();  glDisable(GL_TEXTURE_2D);  /* walls */  glBegin(GL_QUADS);  /* left wall */  glNormal3f(1.f, 0.f, 0.f);  glVertex3f(-100.f, -100.f, -320.f);  glVertex3f(-100.f, -100.f, -520.f);  glVertex3f(-100.f, 100.f, -520.f);  glVertex3f(-100.f, 100.f, -320.f);  /* right wall */  glNormal3f(-1.f, 0.f, 0.f);  glVertex3f(100.f, -100.f, -320.f);  glVertex3f(100.f, 100.f, -320.f);  glVertex3f(100.f, 100.f, -520.f);  glVertex3f(100.f, -100.f, -520.f);  /* ceiling */  glNormal3f(0.f, -1.f, 0.f);  glVertex3f(-100.f, 100.f, -320.f);  glVertex3f(-100.f, 100.f, -520.f);  glVertex3f(100.f, 100.f, -520.f);  glVertex3f(100.f, 100.f, -320.f);  /* back wall */  glNormal3f(0.f, 0.f, 1.f);  glVertex3f(-100.f, -100.f, -520.f);  glVertex3f(100.f, -100.f, -520.f);  glVertex3f(100.f, 100.f, -520.f);  glVertex3f(-100.f, 100.f, -520.f);  glEnd();  glPushMatrix();  glTranslatef(-80.f, -80.f, -420.f);  glCallList(SPHERE);  glPopMatrix();  glPushMatrix();  glTranslatef(-20.f, -100.f, -500.f);  glCallList(CONE);  glPopMatrix();  if (glGetError())     /* to catch programming errors; should never happen */    printf("Oops! I screwed up my OpenGL calls somewhere\n");}voiddrawlayer0(void){  static GLfloat lightpos[] =  {50.f, 50.f, 0.f, 1.f};  glMatrixMode(GL_PROJECTION);  glLoadIdentity();  glOrtho(-50.f, 50.f, -50.f, 50.f, 0.f, 100.f);  glMatrixMode(GL_MODELVIEW);  glLoadIdentity();  glTranslatef(0.f, 0.f, -50.f);  glRotatef(angle, 0.f, 1.f, 0.f);  glRotatef(90.f, 0.f, 0.f, 1.f);  glTranslatef(0.f, -25.f, 0.f);  glEnable(GL_LIGHTING);  glEnable(GL_LIGHT0);  glLightfv(GL_LIGHT0, GL_POSITION, lightpos);  glCullFace(GL_BACK);  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);  glCallList(CONE);}voidredraw(void){  if (glutLayerGet(GLUT_NORMAL_DAMAGED) ||    clearstencil == GL_TRUE) {    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);    clearstencil = GL_FALSE;  } else    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);  glStencilFunc(GL_EQUAL, 2, ~0);  drawlayer2();  glStencilFunc(GL_EQUAL, 1, ~0);  drawlayer1();  glStencilFunc(GL_EQUAL, 0, ~0);  drawlayer0();  if (eraser)    draweraser();  glutSwapBuffers();}voididle(void){  angle += 1.f;  glutPostRedisplay();}voidpassive(int x, int y){  eraserpos[X] = x;  eraserpos[Y] = winHeight - y;}voidmotion(int x, int y){  eraserpos[X] = x;  eraserpos[Y] = winHeight - y;  glutPostRedisplay();}/* ARGSUSED1 */void key(unsigned char key, int x, int y){  switch (key) {  case '\033':    exit(0);  }}void visible(int vis){  if (vis == GLUT_VISIBLE)    glutIdleFunc(idle);  else    glutIdleFunc(NULL);}const int TEXDIM = 256;GLfloat *tex = 0;main(int argc, char *argv[]){  static GLfloat sphere_mat[] =  {1.f, .5f, 0.f, 1.f};  static GLfloat cone_mat[] =  {0.f, .5f, 1.f, 1.f};  GLUquadricObj *sphere, *cone, *base;  glutInit(&argc, argv);  glutInitWindowSize(winWidth, winHeight);  glutInitDisplayMode(GLUT_DOUBLE | GLUT_STENCIL | GLUT_DEPTH);  (void) glutCreateWindow("dissolve");  glutDisplayFunc(redraw);  glutMouseFunc(mouse);  glutMotionFunc(motion);  glutPassiveMotionFunc(passive);  glutKeyboardFunc(key);  glutVisibilityFunc(visible);  glutReshapeFunc(reshape);  glutCreateMenu(menu);  glutAddMenuEntry("Clear Stencil", CLEAR);  glutAttachMenu(GLUT_RIGHT_BUTTON);  glNewList(SPHERE, GL_COMPILE);  /* make display lists for sphere and cone; for efficiency */  sphere = gluNewQuadric();  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, sphere_mat);  gluSphere(sphere, 20.f, 20, 20);  gluDeleteQuadric(sphere);  glEndList();  glNewList(CONE, GL_COMPILE);  cone = gluNewQuadric();  base = gluNewQuadric();  glRotatef(-90.f, 1.f, 0.f, 0.f);  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cone_mat);  gluQuadricOrientation(base, GLU_INSIDE);  gluDisk(base, 0., 20., 20, 1);  gluCylinder(cone, 20., 0., 60., 20, 20);  gluDeleteQuadric(cone);  gluDeleteQuadric(base);  glEndList();  makeEraser();  /* load pattern for current 2d texture */  tex = make_texture(TEXDIM, TEXDIM);  glTexImage2D(GL_TEXTURE_2D, 0, 1, TEXDIM, TEXDIM, 0, GL_RED, GL_FLOAT, tex);  free(tex);  glClearStencil(2);  glEnable(GL_STENCIL_TEST);  /* used all the time */  glEnable(GL_CULL_FACE);  glCullFace(GL_BACK);  glutMainLoop();  return 0;             /* ANSI C requires main to return int. */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产色综合久久久蜜香臀| 99精品视频中文字幕| 一区二区三区丝袜| 国产精品久久久久国产精品日日 | 中文字幕乱码久久午夜不卡 | 欧美性猛交xxxx黑人交| 99这里只有精品| 91天堂素人约啪| 欧美在线视频全部完| 精品1区2区3区| 欧美日韩国产精品成人| 日韩午夜激情免费电影| 久久综合一区二区| 欧美国产精品v| 亚洲黄色录像片| 日韩—二三区免费观看av| 久久精工是国产品牌吗| 国产一区二区精品在线观看| 成人免费视频app| 欧美亚洲国产bt| 欧美成人猛片aaaaaaa| 国产精品视频免费| 亚洲电影在线免费观看| 韩国v欧美v日本v亚洲v| 99国产精品视频免费观看| 在线视频你懂得一区| 日韩欧美国产一区二区三区| 国产视频一区二区在线| 亚洲精品视频在线观看网站| 喷水一区二区三区| a亚洲天堂av| 日韩一区二区三区视频| 中文一区一区三区高中清不卡| 一区二区在线观看不卡| 成人av网在线| 欧美午夜电影一区| 久久久久九九视频| 亚洲精品高清在线| 精品写真视频在线观看| 在线观看精品一区| 久久久久亚洲蜜桃| 肉丝袜脚交视频一区二区| 国产成人综合在线播放| 在线播放国产精品二区一二区四区| 欧美激情中文字幕一区二区| 日本在线不卡视频一二三区| 成a人片国产精品| 日韩欧美资源站| 亚洲综合色视频| 不卡的电影网站| 国产午夜亚洲精品不卡| 日韩高清电影一区| 在线观看中文字幕不卡| 国产精品福利一区二区| 久久66热偷产精品| 91精品一区二区三区在线观看| 国产精品久久久久aaaa樱花| 国产一区激情在线| 日韩三级视频在线观看| 石原莉奈在线亚洲二区| 欧美色精品天天在线观看视频| 中文字幕国产一区| 国产成人在线免费观看| 久久夜色精品国产欧美乱极品| 日韩一区精品字幕| 国产欧美1区2区3区| 久久99精品久久久久| 欧美精品xxxxbbbb| 天天操天天综合网| 欧美日韩一本到| 亚洲国产精品一区二区www在线| 99综合影院在线| 亚洲同性同志一二三专区| 成人午夜视频在线观看| 国产色综合久久| 成人激情黄色小说| 国产精品高清亚洲| 色噜噜狠狠成人中文综合| 亚洲欧美一区二区三区国产精品| 99久久精品免费精品国产| 中文字幕av一区二区三区| 成人sese在线| 亚洲精选在线视频| 欧美日韩在线三区| 日韩激情av在线| 亚洲精品在线观| 国产mv日韩mv欧美| 亚洲欧美另类综合偷拍| 欧美在线播放高清精品| 午夜欧美视频在线观看| 欧美一级生活片| 国产成人免费在线观看不卡| 国产精品护士白丝一区av| 91在线视频网址| 日欧美一区二区| 久久亚区不卡日本| 91网页版在线| 免费日韩伦理电影| 欧美激情一区二区三区在线| 91色视频在线| 蜜臀av一区二区在线观看| 精品国产三级a在线观看| 国产69精品久久99不卡| 一区二区欧美在线观看| 欧美一区在线视频| 成人av在线资源网站| 五月天一区二区三区| 精品国产乱码久久久久久老虎| 成人成人成人在线视频| 婷婷丁香久久五月婷婷| 国产日韩欧美a| 51精品久久久久久久蜜臀| 成人晚上爱看视频| 日韩精品国产欧美| 最新日韩av在线| 日韩精品一区二区三区三区免费| 99视频精品在线| 久久不见久久见免费视频1| 亚洲人午夜精品天堂一二香蕉| 9191成人精品久久| 日本高清视频一区二区| 国产在线看一区| 爽好多水快深点欧美视频| 国产精品视频观看| 精品国产一区a| 欧美一区二区国产| 在线观看视频一区| 99久久99久久久精品齐齐 | 久久蜜臀中文字幕| 在线不卡欧美精品一区二区三区| 成人免费电影视频| 国内精品免费在线观看| 五月天激情综合| 亚洲免费看黄网站| 中文字幕在线观看一区| 久久久国产精品麻豆| 日韩欧美精品三级| 日韩视频一区二区三区在线播放 | 极品美女销魂一区二区三区免费| 亚洲国产日日夜夜| 亚洲另类在线一区| 专区另类欧美日韩| 日韩伦理免费电影| 亚洲视频综合在线| 国产精品灌醉下药二区| 国产精品高清亚洲| 国产精品入口麻豆原神| 欧美激情一区二区三区| 久久久美女毛片| xf在线a精品一区二区视频网站| 日韩欧美国产麻豆| 精品国产三级电影在线观看| 精品88久久久久88久久久| 欧美成人精品福利| 26uuu精品一区二区在线观看| 日韩三级在线免费观看| www国产成人| 国产视频视频一区| 国产精品不卡在线观看| 自拍偷拍亚洲欧美日韩| 亚洲欧美日韩国产另类专区| 亚洲一区二区三区四区五区黄| 亚洲综合在线第一页| 天堂久久久久va久久久久| 丝袜美腿亚洲综合| 国产做a爰片久久毛片| 国产成人午夜高潮毛片| 波多野结衣亚洲| 在线观看国产日韩| 日韩免费一区二区| 亚洲国产精品传媒在线观看| 一区二区中文字幕在线| 亚洲国产另类精品专区| 久久99国产精品麻豆| 丁香激情综合五月| 在线免费亚洲电影| 日韩视频一区二区三区 | 日韩一区二区免费高清| 久久综合给合久久狠狠狠97色69| 久久久影视传媒| 亚洲高清视频在线| 九一九一国产精品| 成人手机电影网| 欧美美女激情18p| 国产视频亚洲色图| 五月天一区二区| 成人午夜伦理影院| 欧美一区二区三区在线看| 国产精品久久久久久久午夜片| 亚洲伊人伊色伊影伊综合网| 蜜桃久久久久久久| 一本到高清视频免费精品| 欧美一级免费观看| 亚洲人成人一区二区在线观看| 三级在线观看一区二区| 成人黄色网址在线观看| 4438亚洲最大| 亚洲男人都懂的| 国产一区高清在线| 91 com成人网|