Тема: OpenGL
Показать сообщение отдельно
Старый 12.02.2009, 20:28   #43
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGL

void Oval(int x,int y,int radius)
{
	if(radius<0)return;

	float iter = (sqrtf((float)radius * 0.5f) + 2);

	float a = 0;
	float da = 3.1415f / iter;
	float vsin,vcos;

	glBegin(GL_TRIANGLE_FAN);
	while(a<2*3.1415f)
	{
		sgSinCos(a,vsin,vcos);
		glVertex2f(x + vsin * radius, 
			y + vcos * radius);
		a+=da;
	}
	glEnd();
}
__forceinline void sgSinCos(float Angle,float & SinValue,float & CosValue )
{
	__asm
	{
		fld Angle;
		fsincos;
		mov eax,[CosValue];
		fstp [eax];
		mov eax,[SinValue];
		fstp [eax];
	}
}
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Morganolla (13.02.2009)