Exemple #1
0
Mpeg2 *glueMpeg2_open(char *filename, int stream_from_disk) {
  Mpeg2 *mpg=malloc(sizeof(Mpeg2));
  
  memset(mpg, 0, sizeof(Mpeg2));
  
  mpg->decoder = mpeg2_init();
  if (mpg->decoder == NULL) {
	  glueError("Could not allocate a decoder object (libmpeg2)");
  }
    
  mpg->info = mpeg2_info(mpg->decoder);
  
  if (stream_from_disk) {
    mpg->f = fopen(filename, "rb");
    mpg->stream_from_disk=1;
  } else {
    mpg->data = glueLoadfile(filename);
    mpg->stream_from_disk=0;
  }
  mpg->whereami = 0;
  mpg->framenum = 0;
  mpg->prevtime = 0;
  mpg->end = 0;
  
  glueLoading();
  
  return mpg;
}
Exemple #2
0
void meshlodder(Mesh *mesh) {
  Mvert *mv;
  int x;
  int group, lod;
  
  if (mesh->numgroups>MAX_GROUPS) glueError("too many groups in mesh!");
  loddermesh=mesh;
  
  // loop mesh groups
  for (group=0; group<mesh->numgroups; group++) {
  	Object *obu=mesh->groups[group];
  	int vc=obu->vc;

//    if (obu->orig_indices) glueError("object contains splitted shit, no way jose!");

    mv=malloc(sizeof(Mvert)*vc);

    for (x=0; x<vc; x++) {
    	mv[x].pos=obu->vertices[x];
  	  mv[x].parent=NPAR;
    }

    // fix parents for splitted vertices
    if (obu->orig_indices) {
      for (x=0; x<obu->linkcnt; x++) {
        int splitted, parent;

        splitted=obu->vertex_links[x*2+0];
        parent=obu->vertex_links[x*2+1]; 
        mv[splitted].parent=parent;
      }
    } 
    

    // loop lods
    for (lod=0; lod<MAX_LOD_REDUCTION; lod++) {
    	int killed;

      //int mergevertices(Mvert *data, int vc, int *indices, int fc) {
      killed=mergevertices(mv, vc, obu->indices, obu->fc);
#ifdef DEBUG_LODDER
      glueNoticef("mergevertices group %i lod %i, vc=%i killed=%i", group, lod, vc, killed);
#endif
      lodder_vertices[group][lod]=unpack_mvbuffer(mv, vc);
#ifdef DEBUG_LODDER
      dump_obj(lodder_vertices[group][lod], vc, obu->indices, obu->fc);
#endif
      //lodder_normals[group][lod]=calc_lodder_normals(lodder_vertices[group][lod], vc, i2, fc2);
    } // lod-loop
  
    free(mv);  
    glueLoading();
  } // mesh group loop
}  
Exemple #3
0
glue_static Framebuffer *glueCubemap(int res) {
  Framebuffer *fbo;
  int x;
  
  fbo=malloc(sizeof(Framebuffer));
  
  fbo->xres=res;
  fbo->yres=res;
  
  glGenFramebuffersEXT(1, &fbo->num);
  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo->num);
  
  // depth  
  glGenRenderbuffersEXT(1, &fbo->depthbuffer);
  glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, fbo->depthbuffer);  
  glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, res, res);
  glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, fbo->depthbuffer);

  // colortexture
  glGenTextures(1, &fbo->texnum);
	glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, fbo->texnum);
	glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    
  for (x=0; x<6; x++) {
    glTexImage2D(cubesides[x], 0, GL_RGBA, res, res, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);  
    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, cubesides[x], fbo->texnum, 0);
  }
   
  checkfbostatus();
  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

  fbo->texnum2=0;

  glueLoading();
   
  return fbo;
}