コード例 #1
0
ファイル: sierpinski3d.c プロジェクト: RazZziel/pongclock
ENTRYPOINT void
release_gasket(ModeInfo * mi)
{
  if (gasket != NULL)
  {
    int         screen;

    for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
    {
      gasketstruct *gp = &gasket[screen];

      if (gp->glx_context)
      {
	/* Display lists MUST be freed while their glXContext is current. */
        glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));

        if (glIsList(gp->gasket0)) glDeleteLists(gp->gasket0, 1);
        if (glIsList(gp->gasket1)) glDeleteLists(gp->gasket1, 1);
        if (glIsList(gp->gasket2)) glDeleteLists(gp->gasket2, 1);
        if (glIsList(gp->gasket3)) glDeleteLists(gp->gasket3, 1);
      }
    }
    (void) free((void *) gasket);
    gasket = NULL;
  }
  FreeAllGL(mi);
}
コード例 #2
0
ファイル: GLArea.c プロジェクト: xomachine/gabedit
void free_surfaces_all()
{
	if(positiveSurfaces)
	{
		gint i;
		for(i=0;i<numberOfSurfaces;i++)
		if (glIsList(positiveSurfaces[i]) == GL_TRUE) glDeleteLists(positiveSurfaces[i],1);
		g_free(positiveSurfaces);
	}
	if(negativeSurfaces)
	{
		gint i;
		for(i=0;i<numberOfSurfaces;i++)
		if (glIsList(negativeSurfaces[i]) == GL_TRUE) glDeleteLists(negativeSurfaces[i],1);
		g_free(negativeSurfaces);
	}
	if(nullSurfaces)
	{
		gint i;
		for(i=0;i<numberOfSurfaces;i++)
		if (glIsList(nullSurfaces[i]) == GL_TRUE) glDeleteLists(nullSurfaces[i],1);
		g_free(nullSurfaces);
	}
	numberOfSurfaces = 0;
	positiveSurfaces = NULL;
	negativeSurfaces = NULL;
	nullSurfaces = NULL;
	free_iso_all();
	deleteSurfacesPovRayFile();
}
コード例 #3
0
void PointListRenderer::render() {

    tgtAssert(geometryInport_.isReady(), "inport not ready");

    // regenerate display list, if input data has changed
    if (geometryInport_.hasChanged() || displayList_ == 0) {

        if (glIsList(displayList_))
            glDeleteLists(displayList_, 1);
        displayList_ = 0;

        // cast geometry to PointListGeometry or PointSegmentListGeometry and generate display list
        PointListGeometry<vec3>* pointList = dynamic_cast< PointListGeometry<vec3>* >(geometryInport_.getData());
        PointSegmentListGeometry<vec3>* segmentList = dynamic_cast< PointSegmentListGeometry<vec3>* >(geometryInport_.getData());
        if (pointList)
            generateDisplayList(pointList->getData());
        else if (segmentList)
            generateDisplayList(segmentList->getPoints());

        // message on invalid geometry
        if (!pointList && !segmentList) {
            LWARNING("Invalid geometry. PointListGeometry<vec3> or PointSegmentListGeometry<vec3> expected.");
        }
    }

    // render display list
    if (glIsList(displayList_)) {
        glCallList(displayList_);
    }
}
コード例 #4
0
/**
 * Sends data to OpenGL (will crash if called by a non-OpenGL thread) (enforces serial entry if and only if the display list is out of date)
 */
void SurfaceMesh::draw() const {

	if ( needUpdate ) {

		if ( !glIsList( meshList ) ) {

			meshList = glGenLists( 1 );
		}
		
		needUpdate = false;
		glEnableClientState( GL_VERTEX_ARRAY );
		glEnableClientState( GL_COLOR_ARRAY );
		glEnableClientState( GL_NORMAL_ARRAY );
		glNewList( meshList, GL_COMPILE_AND_EXECUTE );
			glInterleavedArrays( GL_C4F_N3F_V3F, 0, c4fn3fv3f );
			glDrawElements( GL_TRIANGLES, numFaces * 3, GL_UNSIGNED_INT, triangles );
		glEndList();
	}
	else if ( glIsList( meshList ) ) {

		glCallList( meshList );
	}
	else {

		// Nothing to draw
	}
}
コード例 #5
0
ファイル: glplanet.c プロジェクト: katahiromz/XScreenSaverWin
ENTRYPOINT void
release_planet (ModeInfo * mi)
{
  if (planets != NULL) {
	int screen;

	for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) {
	  planetstruct *gp = &planets[screen];

	  if (gp->glx_context) {
		/* Display lists MUST be freed while their glXContext is current. */
        /* but this gets a BadMatch error. -jwz */
		/*glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));*/

		if (glIsList(gp->platelist))
		  glDeleteLists(gp->platelist, 1);
		if (glIsList(gp->starlist))
		  glDeleteLists(gp->starlist, 1);
	  }
	}
	(void) free((void *) planets);
	planets = NULL;
  }
  FreeAllGL(mi);
}
コード例 #6
0
void CLAYERS_OGL_DISP_LISTS::DrawBot() const
{
    beginTransformation();

    if( glIsList( m_layer_bot_triangles ) )
        glCallList( m_layer_bot_triangles );

    if( glIsList( m_layer_bot_segment_ends ) )
        glCallList( m_layer_bot_segment_ends );

    endTransformation();
}
コード例 #7
0
ファイル: model.cpp プロジェクト: AnotherFoxGuy/OpenCity
   /*=====================================================================*/
Model::~Model()
{
	OPENCITY_DEBUG( "dtor" );

// Delete display lists
	if (glIsList( _uiOpaqueOneSide ))
		glDeleteLists( _uiOpaqueOneSide, 1 );
	if (glIsList( _uiOpaqueTwoSide ))
		glDeleteLists( _uiOpaqueTwoSide, 1 );
	if (glIsList( _uiAlpha ))
		glDeleteLists( _uiAlpha, 1 );
}
コード例 #8
0
ファイル: opengl.c プロジェクト: ntoand/electro
static void fini_opengl_obj(void)
{
    if (xyz_list && glIsList(xyz_list)) glDeleteLists(xyz_list, 1);
    if (grd_list && glIsList(grd_list)) glDeleteLists(grd_list, 1);
    if (cap_list && glIsList(cap_list)) glDeleteLists(cap_list, 1);
    if (cyl_list && glIsList(cyl_list)) glDeleteLists(cyl_list, 1);
    if (box_list && glIsList(box_list)) glDeleteLists(box_list, 1);

    box_list = 0;
    cyl_list = 0;
    cap_list = 0;
    grd_list = 0;
    xyz_list = 0;
}
コード例 #9
0
void CLAYERS_OGL_DISP_LISTS::DrawBotAndMiddle() const
{
    beginTransformation();

    if( glIsList( m_layer_middle_contourns_quads ) )
        glCallList( m_layer_middle_contourns_quads );

    if( glIsList( m_layer_bot_triangles ) )
        glCallList( m_layer_bot_triangles );

    if( glIsList( m_layer_bot_segment_ends ) )
        glCallList( m_layer_bot_segment_ends );

    endTransformation();
}
コード例 #10
0
ファイル: boxed.c プロジェクト: sev-/xscreensaver
ENTRYPOINT void
init_boxed(ModeInfo * mi)
{
   int screen = MI_SCREEN(mi);
   
   /* Colormap    cmap; */
   /* Boolean     rgba, doublebuffer, cmap_installed; */
   boxedstruct *gp;

   MI_INIT(mi, boxed, free_boxed);
   gp = &boxed[screen];
   gp->window = MI_WINDOW(mi);
   
   if ((gp->glx_context = init_GL(mi)) != NULL) {
      reshape_boxed(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
      glDrawBuffer(GL_BACK);
      if (!glIsList(gp->listobjects))	{
	 gp->listobjects = glGenLists(3);
	 gp->gllists[0] = 0;
	 gp->gllists[1] = 0;
	 gp->gllists[2] = 0;
      }
      pinit(mi);
   } else {
      MI_CLEARWINDOW(mi);
   }
}
コード例 #11
0
ファイル: SubdivScene.cpp プロジェクト: ANorwell/Graphics
///////////////////////////////////////////
//  Main logic for constructing the HDS
////////////////////////////////////////
void SubdivScene::init() {

    initCamera();
  
  //clear the HDS and list
  HDS.clear();
  if (glIsList(scene_list_id))
    glDeleteLists(scene_list_id, 1);

  //make a new list
  scene_list_id = glGenLists(1);

  redrawRequired = true;

  switch(scenario) {
  case 0:
    printf("==Scenario 1:==\n");
    scenario1();
    break;
  case 1:
    printf("==Scenario 2:==\n");
    scenario2();
    break;
  case 2:
    printf("==Scenario 3:==\n");
    scenario3();
    break;
  default:
    break;
  }

  HDS.print();
}
コード例 #12
0
ファイル: Mandel.cpp プロジェクト: gamma057/MandelViewer
void Mandel::draw() noexcept{
	glClear(GL_COLOR_BUFFER_BIT);
	if(glIsList(list) == GL_TRUE) glDeleteLists(list, 1);
		glNewList(list, GL_COMPILE_AND_EXECUTE);
		glBegin(GL_QUADS);
		const double dx = 2.0/getWidth();
		const double dy = 2.0/getHeight();
		double x1, y1, x2, y2;
	Color col;
	for(int i = 0; i < width; i += res){
		for(int j = 0; j < height; j += res){
			if(broad){
				x1 = -2.0+i*dx;
				y1 = -2.0+j*dy;
			}else{
				x1 = -1.0+i*dx;
				y1 = -1.0+j*dy;
			}
			x2 = x1+res*dx;
			y2 = y1+res*dy;
			col = blur(i, j);
			glColor3d(col.r, col.g, col.b);
			glVertex2d(x1, y2);
			glVertex2d(x1, y1);
			glVertex2d(x2, y1);
			glVertex2d(x2, y2);
		}
	}
	glEnd();
	glEndList();
	glFlush();
}
コード例 #13
0
ファイル: Graphics.cpp プロジェクト: vlopezsa/gvoldesc
void CGraphics::Render() {
	wglMakeCurrent(hDC,hRC);

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Se borra el buffer de pantalla y profundidad
	glLoadIdentity(); // Se resetea la matriz Current Modelview

	if(cam) {
		cam->LookAt();
	}

	if(gList.size()>0) {
		vector<int>::iterator it;

		it = gList.begin();

		for(; it!=gList.end(); it++) {
			if(glIsList(*it)==GL_TRUE)
				glCallList(*it);
			else
				it = gList.erase(it);

			if(it==gList.end())
				break;
		}
	}

	SwapBuffers(hDC);
}
コード例 #14
0
void flag_free(void)
{
    if (glIsList(flag_list))
        glDeleteLists(flag_list, 1);

    flag_list = 0;
}
コード例 #15
0
void mark_free(void)
{
    if (glIsList(mark_list))
        glDeleteLists(mark_list, 1);

    mark_list = 0;
}
コード例 #16
0
void swch_free(void)
{
    if (glIsList(swch_list))
        glDeleteLists(swch_list, 2);

    swch_list = 0;
}
コード例 #17
0
void goal_free(void)
{
    if (glIsList(goal_list))
        glDeleteLists(goal_list, 1);

    goal_list = 0;
}
コード例 #18
0
void Geometry::draw()  //Display saved geometry (default uses display list)
{
   GL_Error_Check;

   //Default to no shaders
   if (glUseProgram) glUseProgram(0);

   if (geom.size())
   {
      if (redraw) update();
         GL_Error_Check;
      redraw = false;
      //Draw using display lists if available
      for (unsigned int i=0; i<geom.size(); i++)
      {
         //Because of quad surface sorting, have to check drawable when creating lists
         //When quads moved to triangle renderer can re-enable this and won't have to
         //recreate display lists when hiding/showing/switching viewports
         //if (drawable(i) && displaylists[i] && glIsList(displaylists[i]))
         if (displaylists[i] && glIsList(displaylists[i]))
            glCallList(displaylists[i]);
         GL_Error_Check;
      }
   }
   GL_Error_Check;

   labels();
}
コード例 #19
0
Gears::~Gears()
{
    int i;

    for (i = 0; i < mGearCnt; i++)
        if (glIsList(mGears[i])) glDeleteLists(mGears[i], 1);
}
コード例 #20
0
ファイル: Environment.cpp プロジェクト: alon/bhuman2009fork
void Environment::createDL()
{
  if((dlhandle == 0 || !glIsList(dlhandle)) && cubeMap.getUseAsDirectTextures())
  {
    if(dlhandle == 0)
      dlhandle = glGenLists(1);
    glNewList(dlhandle, GL_COMPILE);
    {
      glEnableClientState(GL_VERTEX_ARRAY);
      glVertexPointer(3, GL_FLOAT, 0, environmentCubeVertices);
      if(texIDhandles.empty())
        texIDhandles = cubeMap.getTextureIDs();
      if(texIDhandles.size() > 0)
      {
        if(GLEW_VERSION_1_3)
          glActiveTexture(GL_TEXTURE0);
        glEnable(GL_TEXTURE_2D);
        glEnableClientState(GL_TEXTURE_COORD_ARRAY);
        glTexCoordPointer(2, GL_FLOAT, 0, environmentCubeTexCoords);

        glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, nocolor);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_REPEAT);

        if(texIDhandles.size() == 1)
        {
          glBindTexture(GL_TEXTURE_2D, texIDhandles[0]);
          glDrawArrays(GL_QUADS, 0, 24);
        }
        else
        {
          glBindTexture(GL_TEXTURE_2D, texIDhandles[0]);
          glDrawArrays(GL_QUADS, 0, 4);
          glBindTexture(GL_TEXTURE_2D, texIDhandles[1]);
          glDrawArrays(GL_QUADS, 4, 4);
          glBindTexture(GL_TEXTURE_2D, texIDhandles[2]);
          glDrawArrays(GL_QUADS, 8, 4);
          glBindTexture(GL_TEXTURE_2D, texIDhandles[3]);
          glDrawArrays(GL_QUADS, 12, 4);
          glBindTexture(GL_TEXTURE_2D, texIDhandles[4]);
          glDrawArrays(GL_QUADS, 16, 4);
          glBindTexture(GL_TEXTURE_2D, texIDhandles[5]);
          glDrawArrays(GL_QUADS, 20, 4);
        }

        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
        glDisable(GL_TEXTURE_2D);
      }
      else
        glDrawArrays(GL_QUADS, 0, 24);
      glDisableClientState(GL_VERTEX_ARRAY);
    }
    glEndList();
  }
}
コード例 #21
0
ファイル: DisplayList.cpp プロジェクト: fudy1129/kvs
/*===========================================================================*/
void DisplayList::clear()
{
    if ( glIsList( m_id ) == GL_TRUE )
    {
        glDeleteLists( m_id, m_range );
    }
}
コード例 #22
0
ファイル: stairs.c プロジェクト: mmarseglia/xscreensaver
ENTRYPOINT void
init_stairs (ModeInfo * mi)
{
	int         screen = MI_SCREEN(mi);
	stairsstruct *sp;

	if (stairs == NULL) {
		if ((stairs = (stairsstruct *) calloc(MI_NUM_SCREENS(mi),
					     sizeof (stairsstruct))) == NULL)
			return;
	}
	sp = &stairs[screen];

	sp->step = 0.0;
	sp->rotating = 0;
	sp->sphere_position = NRAND(NPOSITIONS);
	sp->sphere_tick = 0;

	if ((sp->glx_context = init_GL(mi)) != NULL) {

		reshape_stairs(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
		glDrawBuffer(GL_BACK);
		if (!glIsList(sp->objects))
			sp->objects = glGenLists(1);
		pinit(mi);
	} else {
		MI_CLEARWINDOW(mi);
	}

    sp->trackball = gltrackball_init (False);
}
コード例 #23
0
ファイル: splitflap.c プロジェクト: Zygo/xscreensaver
ENTRYPOINT void
free_splitflap (ModeInfo *mi)
{
  splitflap_configuration *bp = &bps[MI_SCREEN(mi)];
  int i;

  if (!bp->glx_context) return;
  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);

  if (bp->flappers) free (bp->flappers);
  if (bp->tc) textclient_close (bp->tc);
  if (bp->trackball) gltrackball_free (bp->trackball);
  if (bp->rot) free_rotator (bp->rot);
  if (bp->rot2) free_rotator (bp->rot2);
  if (bp->font_data) free_texture_font (bp->font_data);
  if (bp->dlists) {
    for (i = 0; i < countof(all_objs); i++)
      if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
    free (bp->dlists);
  }
  if (bp->texinfo) {
    for (i = 0; i < bp->texinfo_size; i++)
      if (bp->texinfo[i].texid) glDeleteTextures (1, &bp->texinfo[i].texid);
    free (bp->texinfo);
  }
}
コード例 #24
0
void
release_gasket(ModeInfo * mi)
{
  if (gasket != NULL)
  {
    int         screen;

    for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++)
    {
      gasketstruct *gp = &gasket[screen];

      if (gp->colors != NULL) {
	XFree((caddr_t) gp->colors);
	gp->colors = (XColor *) NULL;
      }
      if (gp->glx_context)
      {
	/* Display lists MUST be freed while their glXContext is current. */
        glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));

        if (glIsList(gp->gasket1)) glDeleteLists(gp->gasket1, 1);
      }
    }
    free(gasket);
    gasket = (gasketstruct *) NULL;
  }
  FreeAllGL(mi);
}
コード例 #25
0
ファイル: svGlyph.cpp プロジェクト: ivcl/SplitVectors
void svGlyph::Render()
{
  //if(STILL_UPDATE) return;

  //glColor3fv(render_property.color.getValue());
  if(display_mode == SV_IMMEDIATE) {
    //cerr << "calling svGlyph::Render: Generate() " << endl;
    Generate();
  }
  else if(display_mode == SV_DISPLAYLIST && glIsList(display_list)) {
    //cerr << "call svGlyph::Render: displaylist... " << endl;
    glCallList(display_list);
  }
  else if (display_mode == SV_STORE) 
  {
    //cerr << "call svGlyph::Render(): mode is SV_STORE" << endl;
    //BuildDisplayListFromStore();
    /*
    if(ENABLE_COLOR==true || ENABLE_LINEWIDTH==true)
      RenderStoreDirect();
    else
      RenderStoreDirect();
      */
      //RenderStore();
  }
}
コード例 #26
0
ファイル: Flux.cpp プロジェクト: packagesdev/flux
scene::~scene()
{
	if (glIsList(1))
		glDeleteLists(1, 1);
	
	if (_fluxes!=NULL)
		delete[] _fluxes;
}
コード例 #27
0
ファイル: Cursor.cpp プロジェクト: almacha/miceamaze
void Cursor::render() {
	glLoadIdentity();
	glTranslatef(x, y, 0);
	if (!glIsList(displayList)) {
		Functions::error("no list");
	}
	glCallList(displayList);
}
コード例 #28
0
ファイル: pulsar.c プロジェクト: Zygo/xscreensaver
/* all sorts of nice cleanup code should go here! */
ENTRYPOINT void free_pulsar(ModeInfo * mi)
{
  pulsarstruct *gp = &Pulsar[MI_SCREEN(mi)];
  if (!gp->glx_context) return;
  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
  free(gp->quads);
  if (glIsList(gp->quad_list)) glDeleteLists(gp->quad_list, 1);
}
コード例 #29
0
ファイル: Body.cpp プロジェクト: vsemionov/solar-space
void CBody::FreeGFX()
{
	glDeleteTextures(4,(GLuint *)textures);
	ZeroMemory(textures,sizeof(textures));
	if (glIsList(objects[0]))
		glDeleteLists(objects[0],1);
	ZeroMemory(objects,sizeof(objects));
}
コード例 #30
0
ファイル: PrincipalAxisGL.c プロジェクト: xomachine/gabedit
GLuint principalAxisGenList(GLuint axisList)
{
	V4d specular = {1.0f,1.0f,1.0f,1.0f};
	V4d FirstDiffuse = {1.0f,1.0f,1.0f,1.0f};
	V4d FirstAmbiant = {1.0f,1.0f,1.0f,1.0f};
	V4d secondDiffuse = {1.0f,1.0f,1.0f,1.0f};
	V4d secondAmbiant = {1.0f,1.0f,1.0f,1.0f};
	V4d thirdDiffuse = {1.0f,1.0f,1.0f,1.0f};
	V4d thirdAmbiant = {1.0f,1.0f,1.0f,1.0f};
	V3d firstVector = {1.0f,1.0f,1.0f};
	V3d secondVector = {1.0f,1.0f,1.0f};
	V3d thirdVector = {1.0f,1.0f,1.0f};
	GLdouble radius = axis.radius;
	gint i;

	if (glIsList(axisList) == GL_TRUE) glDeleteLists(axisList,1);

	compute_the_principal_axis();

	if(!axis.def) return 0;

	for(i=0;i<3;i++)
	{
		FirstDiffuse[i] = axis.firstColor[i];
		secondDiffuse[i] = axis.secondColor[i];
		thirdDiffuse[i] = axis.thirdColor[i];

		FirstAmbiant[i] = FirstDiffuse[i]/10;
		secondAmbiant[i] = secondDiffuse[i]/10;
		thirdAmbiant[i] = thirdDiffuse[i]/10;
	}
	FirstDiffuse[3] = 1;
	FirstAmbiant[3] = 1;

	secondDiffuse[3] = 1;
	secondAmbiant[3] = 1;

	thirdDiffuse[3] = 1;
	thirdAmbiant[3] = 1;

	for(i=0;i<3;i++)
	{
		firstVector[i]   =  axis.firstVector[i]*axis.scal;
		secondVector[i]   =  axis.secondVector[i]*axis.scal;
		thirdVector[i] =  axis.thirdVector[i]*axis.scal;
	}
	

	

    axisList = glGenLists(1);
	glNewList(axisList, GL_COMPILE);
	drawAxis(firstVector, radius, axis.origin,  specular, FirstDiffuse, FirstAmbiant);
	drawAxis(secondVector, radius, axis.origin,  specular, secondDiffuse, secondAmbiant);
	drawAxis(thirdVector, radius, axis.origin,  specular, thirdDiffuse, thirdAmbiant);
	glEndList();
	return axisList;
}