본문 바로가기
  • fishing...
  • eating...
MISCELLANEOUSNESS

큐브를 만들어 보아요.

by 회색뿔 2010. 5. 23.



#include 
#include 							
#include 

GLfloat xrot=0.9f,yrot=0.8f,zrot=1.0f;
unsigned int MyTextureObject[1];
AUX_RGBImageRec *pTextureImage[1]; //텍스쳐 저장 공간을 가리키는 포인터

void MyReshape( int w,int h )
{						
	glViewport( 0, 0, w, h );
	glMatrixMode( GL_PROJECTION );
	glLoadIdentity();
	gluPerspective( 40.0,( GLfloat )w / ( GLfloat )h, 1.0, 1000.0f );
	glMatrixMode( GL_MODELVIEW );
	glLoadIdentity();
	gluLookAt( 0.0, 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
}

void drawBox()
{
	glBegin( GL_QUADS );
	{
		glColor3f( 1.0F, 0.0F, 0.0F );
		glVertex3f( -1.0f,-1.0f, 1.0f );	//앞면
		glVertex3f( 1.0f,-1.0f, 1.0f );
		glVertex3f( 1.0f, 1.0f, 1.0f );
		glVertex3f( -1.0f, 1.0f, 1.0f );

		glColor3f( 0.0F, 1.0F, 0.0F );
		glVertex3f( -1.0f,-1.0f,-1.0f );	//뒷면
		glVertex3f( -1.0f, 1.0f,-1.0f );
		glVertex3f( 1.0f, 1.0f,-1.0f );
		glVertex3f( 1.0f,-1.0f,-1.0f );

		glColor3f( 0.0F, 0.0F, 1.0F );
		glVertex3f( -1.0f, 1.0f,-1.0f );	//윗면
		glVertex3f( -1.0f, 1.0f, 1.0f );
		glVertex3f( 1.0f, 1.0f, 1.0f );
		glVertex3f( 1.0f, 1.0f,-1.0f );

		glColor3f( 1.0F, 1.0F, 0.0F );
		glVertex3f( -1.0f,-1.0f,-1.0f );	//아랫면
		glVertex3f( 1.0f,-1.0f,-1.0f );
		glVertex3f( 1.0f,-1.0f, 1.0f );
		glVertex3f( -1.0f,-1.0f, 1.0f );

		glColor3f( 0.0F, 1.0F, 1.0F );
		glVertex3f( 1.0f,-1.0f,-1.0f );	//우측면
		glVertex3f( 1.0f, 1.0f,-1.0f );
		glVertex3f( 1.0f, 1.0f, 1.0f );
		glVertex3f( 1.0f,-1.0f, 1.0f );

		glColor3f( 1.0F, 0.0F, 1.0F );
		glVertex3f( -1.0f,-1.0f,-1.0f );	//좌측면
		glVertex3f( -1.0f,-1.0f, 1.0f );
		glVertex3f( -1.0f, 1.0f, 1.0f );
		glVertex3f( -1.0f, 1.0f,-1.0f );
	}
	glEnd();
}

void MyDisplay( )
{
	int i, j, k;
	glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT );

	//glLoadIdentity();

	glPushMatrix();
  		glMatrixMode( GL_PROJECTION_MATRIX );
  		drawBox(); 

		for( i = -1; i < 2; i++ )
		{
			for( j = -1; j < 2; j++ )
			{
				for( k = -1; k < 2; k++ )
				{
					glPushMatrix();
						glTranslatef( i * 2.1F, j * 2.1F, k * 2.1F );
						drawBox();
					glPopMatrix();
				}
			}
		}
		
	glPopMatrix();

	glutSwapBuffers();
}

void MyTimer( int Value )
{
	glRotatef( xrot, 1.0f, 0.0f, 0.0f );	
	glRotatef( yrot, 0.0f, 1.0f, 0.0f );	
	glRotatef( zrot, 0.0f, 0.0f, 1.0f );
	
	glutPostRedisplay( );

	glutTimerFunc( 50, MyTimer, 1 );
}


void main( int argc,char * argv[ ] )
{
	glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
	glutCreateWindow( "OpenGL Sample Program" );
	
	glutDisplayFunc( MyDisplay );
	glutReshapeFunc( MyReshape );

	glutTimerFunc( 500, MyTimer, 1 );
	
	glEnable( GL_TEXTURE_2D );
	glShadeModel( GL_SMOOTH );
	glClearDepth( 1.0 );
	
	glEnable( GL_DEPTH_TEST );
	glDepthFunc( GL_LEQUAL );
	/*glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );*/
	glutMainLoop( );
}

예제로 돌아다니는 소스를 살짜쿵 수정해서 만들어 봐요..ㅋ
이제 사각형 9개는 띄웠으니..

피킹이랑, 회전만 구현하면 되겠네요.ㅋ


'MISCELLANEOUSNESS' 카테고리의 다른 글

Glut Picking 자료.  (0) 2010.05.23
NSMutableArray 탐색하는 방법 2가지.  (0) 2010.05.22
아이폰 개발 공부하기.  (0) 2010.05.21