Fortran 을 공부하기 시작했던건.. 도대체 Fortran 이 어떤 언어이길래 아직까지 쓰이고, 과학적인 곳에 적합하다고 할까? 라는 생각에서였다.

그러다가 A First Course in Computational Physics 라는 책으로 전산 물리를 접하려고 했다. 일부러 Fortran 기반의 책을 골랐는데, 아쉽게도 동봉된 라이브러리가 너무 오래되서 지금쓰기 너무 어려웠다(컴파일러를 구해서 해보려 했지만 실패... 현재는 디스켓 분실....).

책에 있던 라이브러리에는 그래픽 라이브러리가 포함되어 있었기 때문에, 책 없이는 진행을 하기 힘들었다. 아에 C 언어로 하자면, GNU Plot 으로 데이터를 뽑아 출력하거나 OpenGL 로 바로 출력해서 쉽게 할 수 있었지만, 그렇게 하기에는 Fortran 을 포기해야 했다.

결국, 책에 있는 라이브러리를 포기하고, 다른 방법으로 Fortran 에서 OpenGL 을 할 수 있는 방법을 찾아보았는데, 첫번째 방법은 f90gl 라이브러리를 이용하는 것이었다[1].

이 라이브러리는 좀 까다로운 경향이 있어서, 윈도우에서의 Fortran 컴파일러인, Intel 의 Visual Fortran Compiler 와 함께 사용할 수 있는 방법을 찾아보았다. 결국 Visual Fortran Compiler 내부에 OpenGL 라이브러리가 함께 있는 것을 발견했고, 그냥 컴파일러를 설치하고(컴파일러는 Visual Studio 와 함께 사용할 수 있다), Visual Studio 에서 디렉토리 설정해주는 것만으로도 모든 준비가 끝났다.

이상하게도, 3D CUBE 라는 예제 프로그램은 돌아가지 않았고, 다음은 Olympic 이라는 프로그램이다.

사용자 삽입 이미지
무작위의 방향에서 5개의 링이 날아오면서 애니메이션된다.

사용자 삽입 이미지

소스는 뭐, 그리 짧진 않지만, 예를들어 조명과 재질 같은 경우 다음과 같이 C 와 같이 쉽게 사용할 수 있다.

      call fglLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, loc(lmodel_local))
      call fglLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, loc(lmodel_twoside))
      call fglLightModelfv(GL_LIGHT_MODEL_AMBIENT, loc(lmodel_ambient))
      call fglEnable(GL_LIGHTING)

      call fglMaterialfv(GL_FRONT, GL_AMBIENT, loc(bevel_mat_ambient))

일단 앞으로의 목적은... 이것을 Computational Physics 에서 간단하게 사용가능할 정도로 간단한 라이브러리를 만들어 볼까 한다. 기본적으로 윈도우를 만들고(위의 라이브러리에서 알아서 해줄듯), 간단하게 좌표를 설정해서 그래프를 그릴 수 있다면 아마 어느정도 도움이 될듯 하다.

  1. F90GL : http://math.nist.gov/f90gl/ - 이 라이브러리는 순수 OpenGL 인터페이스라기보다는 그걸 사용하는데 도움이 되는 여러 인터페이스가 같이 제공되는 듯 하다. 검색 좀 해보다가 인텔 컴파일러에 있는 라이브러리를 쓰기로 결정했다. 차후 리눅스에서 해볼땐 이 라이브러리를 써볼 생각이다. [본문으로]
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/30 11:58 2008/10/30 11:58

트랙백 주소 :: http://www.hybrid.pe.kr/tt/trackback/406

댓글을 달아 주세요

[로그인][오픈아이디란?]