OpenGL

개발/OpenGL

프레임 버퍼 이미지 파일로 저장하기

1. 현재 프레임의 이미지 버퍼 값을 가져와 BMP 파일로 저장하는 코드 void screen_dump(int W, int H) { //W: window with H: window height char pixel_data[W*H*300] glReadPixels(0, 0, W, H, GL_BGR_EXT, GL_UNSIGNED_BYTE, pixel_data); BITMAPFILEHEADER bf; BITMAPINFOHEADER bi; char buff[256]; char *filename = "filename.bmp"; FILE *out = fopen(filename, "wb"); char *data = pixel_data; memset(&bf, 0, sizeof(bf)); memset(&bi, 0, siz..

개발/OpenGL

GLFW, GLEW, GLM을 사용하는 프로젝트 세팅하기

안녕하세요 여러분 이번 포스팅에서는 GLFW, GLEW, GLM을 사용하는 OpenGL 프로젝트를 세팅하는 법에 대해 설명하려고 합니다. 먼저 각 라이브러리에대해 설명을 간단하게 하려고 합니다. GLFW란? OpenGL은 실제 구현된 라이브러리가 아닌, 그래픽 API 스펙입니다. 라이브러리를 구현할 때 플랫폼에 따른 종속성을 배제하기 위해서 UI와 컨텍스트를 위한 API는 제외하고 구현하였는데요, GLUT, GLFW 등은 이러한 점을 해결하기 위해 사용되는 라이브러리 입니다. 윈도우 창을 생성하거나, 키보드 마우스 입력, 다양한 이벤트 콜백 함수들을 사용하기 위해서 GLFW를 사용합니다. 본 포스팅에서 사용하는 GLFW는 아래 링크에서 다운로드 받을 수 있습니다. GLEW란? OpenGL Extensio..

개발/OpenGL

OpenGL 애니메이션 처리하기(더블 버퍼링)

OpenGL에서 애니메이션을 처리하는 방법은 여러가지가 존재합니다. Timer 콜백함수를 설정해 일정 시간마다 애니메이션을 수행시킬 수도 있고, Idle 콜백함수를 설정해 지속적으로 애니메이션을 수행할 수도 있습니다. 하지만 가장 중요한건 애니메이션을 출력하려면 싱글 버퍼가 아닌 더블 버퍼를 사용해야 한다는 것 인데요. 싱글 버퍼를 이용할 경우 지웠다 그렸다를 반복하는 과정인 애니메이션을 재생할 경우, 깜빡거리는 현상이 발생하기 때문입니다. 먼저 더블 버퍼를 설정하기 위해 다음 소스코드와 같이 메인함수를 구성합니다. int main() { glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); // 더블버퍼 사용 glutCreateWindow("OpenGL"); glutMainL..

개발/OpenGL

OpenGL 점,선 그리기

그래픽의 가장 원시적요소가 Vertex(정점) 이고 이를 바탕으로 선과 면이 구성된다.점을 화면상에 표시해주기 위해서는 다음과 같은 코드가 필요하다 void glBegin(GLenum mode);void glEnd(); 위 두 코드 사이에 정점을 그려주면되는데 이때 Begin에 입력하는 mode에 따라 정점이 어떻게 그려지냐가 결정된다. 모드 설명GL_POINTS 독립적인 점GL_LINE_STRIP 연결된 선분GL_LINE_LOOP 시작점과 끝점을 이은 선분GL_LINES 두개의 정점들을 이은 선분GL_TRIANGLES 세개씩 연결한 삼각형GL_TRIANGLE_STRIP 연결된 삼각형GL_TRIANGLE_FAN 중심을 공유하는 삼각형GL_QUADS 정점 4개씩을 연결하여 사각형을 그린다GL_QUAD_ST..

njsung
'OpenGL' 태그의 글 목록