Openg Obect Render / Drawing (두개 객체 그리기와 이동) day_1

아래 소스 참조

1. Point와 Sphere를 같이 그리려구 했다. 그러나 같이 그려지지 않았다.
  허나 놀라운 사실은 다시 그리니까 가능했다. ㅡ_ㅡ

2.이동할때 반드시
  gl_MatrixMode( GL_MODELVIEW);
  glPushMatrix();
  glLoadIdentity();
  glPopMatrix();
  glLoadIdentity();
 이 셋트로 필요하다.  굳이 스택을 사용하지 않고도 LoadIdentuty()만으로도
 행렬을 초기화시켜 개별이동이 가능하지만 비추

 3.상대좌표를 절대 좌표식으로 사용하기 위해서는 결국 뷰포트나, 전체크기로
 나누기 이 문제는 한번더 알아볼 필요가 있다.


#include <GL/glut.h>      
#include <GL/gl.h>       
#include <GL/glu.h> 
#include <stdlib.h>


static float movex = 1.0f;   //이동용 변수

void MyDisplay( ){      
    glClear(GL_COLOR_BUFFER_BIT);  
    glViewport(0,0,800,800);
 glColor3f(0.5,0.0,0.5);

 glMatrixMode(GL_MODELVIEW);

 glPushMatrix();
 glLoadIdentity();

 //gluLookAt(0.0,  0.0, 0.0,0.0,0.0,-1.0,1.0,1.0,0.0);
 glTranslatef(movex / 800,0.0f,0.0f);
 glutWireSphere(0.2,15,15);
 
  glPopMatrix();
  glLoadIdentity();

 glColor3f(0.5,23.0,1.0);
 //glViewport(300,300,600,600);
 glutWireSphere(0.1,15,15);  

 glLoadIdentity();

 glTranslatef((movex + 10.0f)/ 800,0.0f,0.0f);   // 800 화면크기를 나누어 절대좌표식으로 사용
 glPointSize(5.0f);
 glBegin(GL_POINTS);
 glVertex2f(0.2, -0.3);
    glEnd();
    glFlush( ); // 버퍼에 있는 명령어를 프로세서에 전달하라는 강제 명령어

}
void Init()
{
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();

}
void MyKeyboard(unsigned char KeyPressed, int X, int Y){ 
    switch (KeyPressed){
  case 'A':
   movex = movex + 5;      // A키를 눌러 좌표이동을 위해 추가했다.
   break;
  case 'a':
   movex = movex + 5;
   break;
        case 'Q':   
            exit(0); break;
        case 'q':
            exit(0); break;
        case 27:          //'esc' 키의 아스키 코드 값
            exit(0); break;
 }
 glutPostRedisplay();
}


int main( ){
 glutInitWindowSize(800,800);
 glutInitDisplayMode(GLUT_RGBA);

    glutCreateWindow("OpenGL Drawing Example");
 Init();
 

    glutDisplayFunc(MyDisplay); //MyDisplay함수-callback함수로 등록
 glutKeyboardFunc(MyKeyboard); //callback 함수 등록 
    glutMainLoop( ); //이벤트 loop를 ...
    return 0;
}

by ChangeDuck | 2009/04/27 17:00 | OpenGL | 트랙백 | 덧글(0)

트랙백 주소 : http://funcoder.egloos.com/tb/4327447
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶