Jump to content

  • Log In with Google      Sign In   
  • Create Account

#Actualslicer4ever

Posted 09 February 2012 - 02:41 PM

Hi,

I started learning OpenGL not too long ago from this website:
http://www.swiftless...opengltuts.html


I got only to point 5: OpenGL Color.

What I want to do is:
· Draw a sphere: done
· Increase its radius once a second: NOT done

I don’t want to use the keyboard to increase the radius. I already know how to do that.

Here is what my code looks like:

#include "TimeUtils.hpp"
//More code
int main(int argc, char *argv[])
{
//More code
/*
		Increment Sphere radius once a second
	*/
	long time01, time02;
	time01 = time_now();// Returns the time now
  
	long timeDifference = 0;
	long lastDifference = 0;
	long count  = 0;
  
	while(1)
	{
		time02 = time_now();  // Returns the time now	
		count  = (time02-time01)/1000; // Number of seconds since “time01”
		timeDifference = count;
		if(timeDifference != lastDifference)
		{
			lastDifference = timeDifference;
			Sphere::itsRadius = Sphere::itsRadius + 0.002; //Does not work: Supposed to increase radius once per second
		}
  
		glutReshapeFunc(resize);
		glutDisplayFunc(display);
		glutIdleFunc(idle);
//More code
glutMainLoop();
if( ((time02-time01)/1000) >= MAX) break;// Stop after MAX seconds
	  }//End while loop
return EXIT_SUCCESS;
}//End main()
//More code
static void display(void)
{
	const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
	const double a = t*90.0;
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glColor3d(1,0,0);
	glPushMatrix();
	glTranslated(0,0,-6);
	glutSolidSphere(Sphere::itsRadius,Sphere::itsSlices,Sphere::itsStacks);
	glPopMatrix();
	glutSwapBuffers();
}
//More code


The time trick I used above work on its own but, not when I draw my sphere.

Thank you for your help.

Regards,

Herve


two things
1: can you confirm if(timeDifference != lastDifference) is ever true?
2. are you certain time_now() is in milliseconds(or is 1000th a microsecond?)

edit:

My guess is that your radius increase is too slow to be noticed. I mean it is ok when you keep pressed a key and it works, as you add 0.002 to your radius like every 15ms, but now you are trying to do that once a second. That means that it takes 500 seconds (that is about 8 minutes) to get a radius of 1.0f added to your sphere. Try increasing the 0.002 value to something like 0.5 and see how it works.

^^That too^^

#1slicer4ever

Posted 09 February 2012 - 02:40 PM

Hi,

I started learning OpenGL not too long ago from this website:
http://www.swiftless...opengltuts.html


I got only to point 5: OpenGL Color.

What I want to do is:
· Draw a sphere: done
· Increase its radius once a second: NOT done

I don’t want to use the keyboard to increase the radius. I already know how to do that.

Here is what my code looks like:

#include "TimeUtils.hpp"
//More code
int main(int argc, char *argv[])
{
//More code
/*
		Increment Sphere radius once a second
	*/
	long time01, time02;
	time01 = time_now();// Returns the time now
  
	long timeDifference = 0;
	long lastDifference = 0;
	long count  = 0;
  
	while(1)
	{
		time02 = time_now();  // Returns the time now	
		count  = (time02-time01)/1000; // Number of seconds since “time01”
		timeDifference = count;
		if(timeDifference != lastDifference)
		{
			lastDifference = timeDifference;
			Sphere::itsRadius = Sphere::itsRadius + 0.002; //Does not work: Supposed to increase radius once per second
		}
  
		glutReshapeFunc(resize);
		glutDisplayFunc(display);
		glutIdleFunc(idle);
//More code
glutMainLoop();
if( ((time02-time01)/1000) >= MAX) break;// Stop after MAX seconds
	  }//End while loop
return EXIT_SUCCESS;
}//End main()
//More code
static void display(void)
{
	const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
	const double a = t*90.0;
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glColor3d(1,0,0);
	glPushMatrix();
	glTranslated(0,0,-6);
	glutSolidSphere(Sphere::itsRadius,Sphere::itsSlices,Sphere::itsStacks);
	glPopMatrix();
	glutSwapBuffers();
}
//More code


The time trick I used above work on its own but, not when I draw my sphere.

Thank you for your help.

Regards,

Herve


two things
1: can you confirm if(timeDifference != lastDifference) is ever true?
2. are you certain time_now() is in milliseconds(or is 1000th a microsecond?)

PARTNERS