[OpenGL] OpenGL Study 1 일차



광고 한번만 클릭 부탁드립니다^^
위에 냐옹이 말구~ 위에 배너요~^_^/ 


포스팅을 보시는 분들을 위해 노력 하는 블로거를 위하여! 부탁드립니다. 재미 삼아 포스팅을 정리하지만, 광고를 달아보았습니다. 얼마나 열심히 할 수 있을지...의문이지만요^^ 

Subject [OpenGL] OpenGL Study 1 일차

최종수정일 : 2011.08.09

안녕하세요~^^
오늘은 3D 로 넘어가보려고 하는데 ...
그전에 Single / double buffer 에 대해서 살짝 보도록 하겠습니다.
알고 있어서 정리 안하려구 했는데 해야겠네요 ㅎ 


by 퓨림노

글을 작성하겠습니다.

음 풀소스부터 고고싱 ㅎ


#include <windows.h>
#include <gl/gl.h>
#include <gl/GLU.h>
#include <gl/glut.h>


// 사각형 위치 크기 초기화 GLfloat x1 = 100.0f; GLfloat y1 = 150.0f; GLsizei rsize = 50; // step GLfloat xstep = 1.0f; GLfloat ystep = 1.0f; // widnows size GLfloat windowWidth = 250.0f; GLfloat windowHeight = 250.0f; // Render void RenderScene() { glClear(GL_COLOR_BUFFER_BIT); glColor3f( 1.0f, 0.0f, 0.0f ); glRectf( x1, y1, x1+rsize, y1+rsize ); //glFlush(); glutSwapBuffers(); } // timer void TimerFunction( int value ) { // horizontal if( x1 > windowWidth-rsize || x1 < 0 ) xstep = -xstep; // vertical if( y1 > windowHeight-rsize || y1 < 0 ) ystep = -ystep; // resize 될때 if( x1 > windowWidth - rsize ) x1 = windowWidth - rsize - 1; if( y1 > windowHeight - rsize ) y1 = windowHeight - rsize - 1; x1 += xstep; y1 += ystep; // re Draw glutPostRedisplay(); glutTimerFunc( 33, TimerFunction, 1 ); } // Setup void SetupRC() { glClearColor( 0.0f, 0.0f, 1.0f, 1.0f ); } void ChangeSize( GLsizei w, GLsizei h ) { // exception if( h == 0 ) h = 1; glViewport( 0, 0, w, h ); glMatrixMode(GL_PROJECTION); // 3D -> 2D glLoadIdentity(); // 정사각형 유지하기 if( w <= h ) { windowHeight = 250.0f * h / w; windowWidth = 250.0f; } else { windowWidth = 250.0f * h / w; windowHeight = 250.0f; } glOrtho( 0.0f, windowWidth, 0.0f, windowHeight, 1.0f, -1.0f ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void main() { // glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB ); glutInitDisplayMode( GLUT_DOUBLE| GLUT_RGB ); glutCreateWindow( "Bounce" ); glutDisplayFunc(RenderScene); glutReshapeFunc(ChangeSize); glutTimerFunc( 33, TimerFunction, 1 ); SetupRC(); glutMainLoop(); }


중요한 내용만 정리!! 고고싱 합니다. 

더블 버퍼링(Double - Buffering )
 - 시간이 오래걸리는 복잡한 그림을 일부분씩 보여주기 보다는 더블 버퍼링을 사용하여 이미지를 먼저 다 그린 후 완성된 그림을 화면에 보여줄 수 있다. 
 -  더블 버퍼링을 애니메이션에 사용할 수 있다. 

// glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );

glutInitDisplayMode( GLUT_DOUBLE| GLUT_RGB );


설정하는 것은 GLUT_SINGLE / GLUT_DOUBLE 설정한다. 


//glFlush();

glutSwapBuffers();

Rendering 을 하게 될 때에도 위와 같이 변하게 된다. 
Single - glfulsh()
double - glutSwapBuffer() 를 사용한다. 

음...........대충 요까지! 
 

'Library > openGL' 카테고리의 다른 글

[diary] OpenGL에서 glTranslatef 를 하자.  (0) 2011.09.27
[OpenGL] OpenGL Study 2 일차  (0) 2011.08.09
[openGL] offset  (0) 2011.08.09
[OpenGL] OpenGL Study 0 일차  (0) 2011.08.09
[OpenGL] OpenGL Study 0 일차  (0) 2011.08.08

댓글

Designed by JB FACTORY