⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 car.cpp

📁 This code was developed by my techer. :D
💻 CPP
字号:
#include "objects/car.h"
#include "SDL.h"
#include "SDL_opengl.h"

Car::Car(float x, float y, float z, float rotx, float roty, float rotz):
Rendereable(x,y,z,rotx,roty,rotz)
{
	int cube = glGenLists(1);
	glNewList( cube, GL_COMPILE );
	{
		glBegin(GL_LINE_LOOP);
		{
			glVertex3f(.5f, .5f, .5f);
			glVertex3f(.5f, .5f, -.5f);
			glVertex3f(.5f, -.5f, -.5f);
			glVertex3f(-.5f, -.5f, -.5f);
			glVertex3f(-.5f, .5f, -.5f);
			glVertex3f(-.5f, .5f, .5f);
			glVertex3f(-.5f, -.5f, .5f);
			glVertex3f(.5f, -.5f, .5f);
		}
		glEnd();
		glBegin(GL_LINES);
		{
			glVertex3f(.5f, .5f, .5f);
			glVertex3f(-.5f, .5f, .5f);
			glVertex3f(.5f, .5f, -.5f);
			glVertex3f(-.5f, .5f, -.5f);
			glVertex3f(.5f, -.5f, .5f);
			glVertex3f(.5f, -.5f, -.5f);
			glVertex3f(-.5f, -.5f, .5f);
			glVertex3f(-.5f, -.5f, -.5f);
		}
		glEnd();
	}
	glEndList();

	int rueda = glGenLists(1);
	GLUquadric* quadratic = gluNewQuadric();
	glNewList( rueda, GL_COMPILE );
	{
		glTranslatef(0.f,0.f,-0.25);
		gluCylinder(quadratic, .5f, .5f,.5f,10,3);
		gluDisk(quadratic, .25f, .5f,10,3);
		glTranslatef(0.f,0.f,.5f);   
		gluDisk(quadratic, .25f, .5f,10,3);
	}
	glEndList();


	this->carDisplayListId = glGenLists(1);
	glNewList(this->carDisplayListId, GL_COMPILE);
	{

		glColor3f(1.f,0.f,0.f);

		glPushMatrix();
		glScalef(5.f,1.f,2.f);
		glCallList( cube );
		glPopMatrix();

		glPushMatrix();
		glTranslatef(.5f,.75f,0.f);
		glScalef(2.f,.5f,2.f);
		glCallList( cube );
		glPopMatrix();
		
		glColor3f(.4f,.4f,1.f);

		glPushMatrix();
		glTranslatef(2.3f,-0.4f,1.3f);   
		glCallList( rueda );
		glPopMatrix();

		glPushMatrix();
		glTranslatef(2.3f,-0.4f,-1.3f);   
		glCallList( rueda );
		glPopMatrix();

		glPushMatrix();
		glTranslatef(-2.3f,-0.4f,1.3f);
		glCallList( rueda );
		glPopMatrix();

		glPushMatrix();
		glTranslatef(-2.3f,-0.4f,-1.3f);   
		glCallList( rueda );
		glPopMatrix();

		glColor3f(.8f,.8f,0.f);

		glPushMatrix();
		glTranslatef(-2.5f,0.f,-.6f);
		glScalef(.1f,.3f,.3f);
		gluSphere( quadratic, 1.f, 12, 12 );
		glPopMatrix();

		glPushMatrix();
		glTranslatef(-2.5f,0.f,.6f);
		glScalef(.1f,.3f,.3f);
		gluSphere( quadratic, 1.f, 12, 12 );
		glPopMatrix();
	}
	glEndList();

}

void Car::draw()
{
	glPushMatrix();
	glTranslatef( this->x, this->y, this->z );

	if( this->rotx != 0 )
	{
		glRotatef( this->rotx, 1.f,0.f,0.f );
	}
	if( this->roty != 0 )
	{
		glRotatef( this->roty, 0.f,1.f,0.f );
	}
	if( this->rotz != 0 )
	{
		glRotatef( this->rotz, 0.f,0.f,1.f );
	}

	GLint args[2];
	glGetIntegerv( GL_POLYGON_MODE, args );
	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
	glCallList( this->carDisplayListId );
	glPolygonMode( GL_FRONT_AND_BACK, args[1]);

	glPopMatrix();
}

Car::~Car()
{
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -