⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dl.c

📁 细胞自动机的一个源代码
💻 C
字号:
#include "main.h"void dl_dlgen(dl_t *dl) {  int i, j, k;  int b;  int a;  printf("dl_dlgen\n");  for (i=0; i<dl->n; i++) {    dl->dl[i] = 0;    printf("%i\n", dl->o[i].n);    if (dl->o[i].n) {      a = glGenLists(1);      if (!a) {	printf("GLERROR! %s\n", gluErrorString(glGetError()));      }      printf("compiling %i\n", a);      glNewList(a, GL_COMPILE);      printf(" %i parts to list\n", dl->o[i].n);      for (j=0; j<dl->o[i].n; j++) {	switch(dl->o[i].o[j].type) {	case 0: glBegin(GL_LINE_STRIP);	  printf("line strip\n");	  break;	case 1: glBegin(GL_TRIANGLES);	  break;	case 2: glBegin(GL_TRIANGLE_STRIP);	  printf("triangle strip\n");	  break;	default: printf("not a valid list type\n");	  break;	}	printf("   %i verts in part\n",	       dl->o[i].o[j].n);	printf("   color: %f %f %f\n",	       dl->o[i].o[j].r,	       dl->o[i].o[j].g,	       dl->o[i].o[j].b);	glColor3f(dl->o[i].o[j].r,		  dl->o[i].o[j].g,		  dl->o[i].o[j].b);	for (k=0; k<dl->o[i].o[j].n; k++) {	  glVertex3f(dl->o[i].o[j].v[k][0],		     dl->o[i].o[j].v[k][1],		     dl->o[i].o[j].v[k][2]);	  printf("%f, %f, %f\n",		 dl->o[i].o[j].v[k][0],		 dl->o[i].o[j].v[k][1],		 dl->o[i].o[j].v[k][2]);	}	glEnd();      }      glEndList();      dl->dl[i]=a;    }  }}void dl_print(dl_t *dl) {  int i, j, k;  printf("dl n: %i\n", dl->n);  for (i=0; i<dl->n; i++) {    printf(" display list: %i\n", dl->dl[i]);    printf(" number objects: %i\n", dl->o[i].n);    for (j=0; j<dl->o[i].n; j++) {      printf("  verts: %i, type: %i\n", dl->o[i].o[j].n,	     dl->o[i].o[j].type);      for (k=0; k<dl->o[i].o[j].n; k++) {	printf("    %f %f %f\n",	       dl->o[i].o[j].v[k][0],	       dl->o[i].o[j].v[k][1],	       dl->o[i].o[j].v[k][2]);      }    }  }}int dl_readcfg(dl_t *dl, FILE *fp) {  int i, j, k;  char line[CA_MAX_LINE], *c;  int n_obj;  int *obj_name_list;  obj_t *olist;  poly_t *po;  c = ca_readcfgl(line, fp);  if (atoi(c)!=4) {    printf("not a valid display config file\n");    return(-1);  }  printf("dl_readcfg\n");  n_obj = atoi(ca_readcfgl(line, fp));  olist = (obj_t *)malloc(sizeof(obj_t)*n_obj);  dl->n = n_obj;  dl->dl = (int *)malloc(sizeof(int)*n_obj);  dl->o = olist;  for (i=0; i<n_obj; i++) {    /* name of object */    c = ca_readcfgl(line, fp);    dl->dl[i] = atoi(c);    /* number of poly lists */    c = ca_readcfgl(line, fp);    olist[i].n = atoi(c);    if (olist[i].n) {      po = (poly_t *)malloc(sizeof(poly_t)*olist[i].n);      olist[i].o = po;    } else {      olist[i].o = NULL;    }    for (j=0; j<olist[i].n; j++) {      c = ca_readcfgl(line, fp);      po[j].type = atoi(c);      c = strchr(c+1, ' ');      po[j].n = atoi(c);      c = strchr(c+1, ' ');      po[j].r = atof(c);      c = strchr(c+1, ' ');      po[j].g = atof(c);      c = strchr(c+1, ' ');      po[j].b = atof(c);      po[j].v = (float **)malloc(sizeof(float *)*po[j].n);      for (k=0; k<po[j].n; k++) {	po[j].v[k] = (float *)malloc(sizeof(float)*3);	c = ca_readcfgl(line, fp);	po[j].v[k][0] = atof(c);	c = strchr(c+1, ' ');	po[j].v[k][1] = atof(c);	c = strchr(c+1, ' ');	po[j].v[k][2] = atof(c);      }    }  }  printf("dl_readcfg done, printing, and generating...\n");  printf("before\n");  dl_print(dl);  dl_dlgen(dl);  dl_print(dl);}void obj_init(obj_t *o, float **v, int n, int type) {  int i, j, k;  /*  o->v = (float **)malloc(sizeof(float)*n);  for (i=0; i<n; i++) {    o->v[i] = (float *)malloc(sizeof(float)*3);    memcpy(o->v[i], v[i], sizeof(float)*3);  }  o->n = n;  o->type = type;  */}void dl_init(dl_t *dl, int n) {  /*    dl->o = (obj_t *)malloc(sizeof(obj_t)*n);    bzero(dl->o, sizeof(obj_t *)*n);  */}void dl_add(dl_t *dl, obj_t *o, int name, int pos) {  /*    dl->dl[pos] = name;    dl->o[pos] = 0;  */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -