📄 dl.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 + -