Undergoing

가스켓 프로그램 본문

~2012.05.01 Legacy

가스켓 프로그램

Halkrine 2010. 3. 14. 21:39

그래픽스 수업 들은지 얼마나 됐다고 괴랄한 과제를 내주신다. 이건 과제는 아니지만, 원래 수업 시간 중에 실습해야 할 부분이었길래 CCCV 해본다.

헤더 파일 및 라이브러리 파일은 
http://www.xmission.com/~nate/glut.html

여기서 다운로드하면 되고, 비주얼 스튜디오별로 설치하는 법이 약간 다르다(구자영 교수님 PPT에서 발췌).

< Visual Studio 2008 >
glut32.dll : C:\WINDOWS\system32\ glut32.lib : C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\ glut.h : C:\Program Files\Microsoft Visual Studio 9.0\VC\include\GL\
=> 설정 project -> 해당프로젝트명properties.. -> Configuration Properties -> Linker -> Input항목 중 Additional Dependencies에 opengl32.lib glut32.lib glu32.lib 를 입력
< Visual Studio 2005 >
glut32.dll : C:\WINDOWS\system32\ glut32.lib : C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ glut.h : C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\GL\
 
< Visual Studio 6.0 >
glut32.dll : C:\WINDOWS\System32\ glut32.lib : C:\Program Files\VisualStudio\VC98\Lib\ glut.h : C:\Program Files\VisualStudio\VC98\Include\GL\
=> 설정 project -> Setting -> Link 탭항목 중 Object/library modules:에 opengl32.lib glut32.lib glu32.lib 를 입력 


좌우지간 가스켓 프로그램 소스는 다음과 같다.

--------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
//헤더 파일 순서 주의. 이 순서대로 하지 않으면 에러 뜬다.

 void myinit(void)
 {
 /* 속성들 */

  glClearColor(1.0, 1.0, 1.0, 1.0); /* 불투명한 흰 배경 */
  glColor3f(1.0, 0.0, 0.0); /* 적색으로 그림 */

 /* 관측의 설정 */

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(0.0, 50.0, 0.0, 50.0);
  glMatrixMode(GL_MODELVIEW);
 } 
 void display(void)
 {
  GLfloat vertices[3][2] = {{0.0, 0.0}, {25.0, 50.0},
         {50.0, 0.0}};
  /* 삼각형 */
  int i, j, k;
  int rand(); /* 표준 난수 발생기 */
  GLfloat p[2] = {75.0, 50.0}; /* 임의의 점 */

  glClear(GL_COLOR_BUFFER_BIT);/* 윈도우를 지움 */
  /* 5000 개의 새로운 점을 계산하고 그림 */
  glBegin(GL_POINTS);
  for (k=0; k<5000; k++)
  {
   j = rand()%3;/* 하나의 정점을 무작위로 선택 */
  /* 정점과 이전의 점의 중점을 계산 */
   p[0] = (p[0]+vertices[j][0])/2.0;
   p[1] = (p[1]+vertices[j][1])/2.0;
  /* 점을 그림 */
   glVertex2fv(p);
  }
  glEnd();
  glFlush();
 }

 void main(int argc, char **argv)
 {
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize(500, 500);
  glutInitWindowPosition(0, 0);
  glutCreateWindow("simple OpenGL example");
  glutDisplayFunc(display);
  myinit();
  glutMainLoop();
 }
--------------------------------------------------------------

실행 결과


C 기초도 부실한데 초장부터 이런 거 짜고 있으니 걱정이다.