#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 |