'OPENGL/Oscilloscope'에 해당되는 글 3건

  1. 2011.06.01 libgdx(1) - Helloworld
  2. 2011.03.25 OpenGL ES - Oscilloscope - 2. Dynamic Graph (2)
  3. 2011.03.23 OpenGL ES - Oscilloscope - 1. Draw Stopped Graph (1)
2011.06.01 17:29
 Oscilloscope 강좌를 OpenGL ES로 하다보니 순수 OpenGL ES API로는 체계적인 공부가 부족한 저로써는 너무 많은 애로사항에 부닺혔습니다.
 
 그러던 중에 libgdx라는 녀석을 찾았습니다.
 성능도 준수하고, 무엇보다도 크로스 플랫폼이여서 데스크탑에서 작성하고 실행해 볼 수도 있고 이걸 간단히 안드로이드로 바로 이식할 수 있는 오픈 엔진이라고 해서 사용해 볼까 합니다.(사실 아파치 2.0 라이센스에 끌렸던 것도 있습니다...--;)

공식 사이트는 
http://libgdx.badlogicgames.com/ 과
http://code.google.com/p/libgdx/ 입니다. 

우선 기본 라이브러리인 libgdx-0.9.1.zip(2011-06-01 기준 최신 릴리즈판)과 helloworld를 받아서 실행해보겠습니다.

 사실 helloworld 안에 실행가능한 라이브러리가 있어서 helloworld만 받아도 실행하는데 지장은 없습니다.

 우선 Desktop 버젼인 gdx-helloworld를 실행해 봅시다.

 이클립스로 import하게 되면 기본적으로 필요한 라이브러리들이 build path에 들어가 있습니다. 만약에 추가되지 않는다면 프로젝트 루트폴더에 적당한 폴더를 만들고 아래의 파일들을 복사하고 build path로 지정을 합니다.


 그럼 일단 실행해보겠습니다.

 



 다음과 같은 이쁜(?) hello world 로고가 나오는군요.

 이제 Android에서의 

 우선 빈 안드로이드 프로젝트를 하나 만들겠습니다.
 그리고 libs폴더를 만들고(일반 자바와 달리 libs라는 이름으로 하셔야됩니다!) gdx.jar, gdx-backend-android.jar, 그리고 armeabi, armeabi-v7a 폴더를 복사합시다.
 refresh 한번 해주시고 일반 java build path추가 하듯이 gdx-.jar와 gdx-backend-android.jar를 추가해줍시다.

 그리고 위에서 사용한 HelloWorld.java(실제 소스)를 복사해서 넣고, 여기에 들어가는 텍스쳐인 badlogic.jpg를 data폴더 채로 assets 폴더에 넣어줍니다. 

 이제 메인 액티비티를 AndroidApplication을 상속받도록 고치고(Activity의 하위 클래스입니다) initialize(new HelloWorld(), false); 를 추가해줍시다.


이제 실행해 보겠습니다.


 데스크탑에서와 동일한 화면을 볼 수 있습니다. 같은 소스코드로 이식이 가능하다는 것이 매우 편리한 것 같습니다.

 하지만 테스트 해 볼때 데스크탑 프로젝트에 소스를 복사하고 실제 이식을 할 때는 안드로이드에 복사를 하는 등의 귀찮은 작업조차 하지 않아야 진정한 Cross-platform 이라고 말할 수 있겠죠? 물론 이마저도 가능합니다. gdx-welloworld-android를 import해 보시거나 http://code.google.com/p/libgdx/wiki/ProjectSetup에 보시면(셋업을 참고한 곳입니다.) 아시겠지만, 메인프로젝트를 만들고 Desktop과 Android에서 각각 실행해 볼 수 빌드환경을 구축할 수 있습니다. 다음 강좌부터 다시 시작하는 Oscilloscope에서는 방금 말한 빌드 환경을 구축하는 것 부터 하겠습니다.




신고

'OPENGL > Oscilloscope' 카테고리의 다른 글

libgdx(1) - Helloworld  (0) 2011.06.01
OpenGL ES - Oscilloscope - 2. Dynamic Graph  (2) 2011.03.25
OpenGL ES - Oscilloscope - 1. Draw Stopped Graph  (1) 2011.03.23
Posted by JAVA_HOME

댓글을 달아 주세요

2011.03.25 23:38

지난 포스팅에 이어서 이번에는 실제 Oscilloscope에서 보이는 것 처럼 움직이는 Sin 그래프를 만들어 봅시다.

지난번에는 GraphView라는 클래스에 Axis와 Sin함수의 계산, 실제 Graph Line 등의 모든 Graph의 구성요소가 다 들어있었습니다.
하지만 이번에는 MVC 패턴에 맞게(!!) 계산하는 부분은 따로 SinCalculator class로, 현재의 값을 가지고 있는 모델은 GraphModel class로, 축을 그려주는 부분은 Axis class로, 실제 그래프는 GraphLines class로 모두 나누겠습니다.
처음부터 이렇게 나누어서 만들었어야 되는데 포스팅의 편의상 하나로 만들어 버려서 죄송합니다 (__)

GLRenderer.java

Axis.java

GraphLines.java

GraphModel.java

SinCalculator.java





 움직이는 것을 보니까 이제 조금 그럴듯 해진것 같군요!

 원래는 이번 포스팅에서 Rendering을 하는 주기까지 설정하려고 했었습니다만..
Rerendering 주기를 줄 때 C에서 사용하던 GLUT의 timer callback function과 같은 기능으로 구현하고 싶었으나 이해를 조금 더 하고 구현을 해야되겠다는 생각이 들어서 다루지 않았습니다.

 다음 포스팅은 위에서 말한 Rendering 주기 설정, Effect, String 삽입 등을 하여 마무리를 해보도록 하겠습니다.

PS. JUnit 포스팅을 한 김에 안드로이드 JUnit을 사용해보았는데 실제 작업에서는 어떻게 해야될지 감이 잘 안오네요. 공부가 더 필요할거 같습니다. ㅠㅠ
신고

'OPENGL > Oscilloscope' 카테고리의 다른 글

libgdx(1) - Helloworld  (0) 2011.06.01
OpenGL ES - Oscilloscope - 2. Dynamic Graph  (2) 2011.03.25
OpenGL ES - Oscilloscope - 1. Draw Stopped Graph  (1) 2011.03.23
Posted by JAVA_HOME

댓글을 달아 주세요

  1. JAVA_HOME 2011.03.25 23:44 신고  댓글주소  수정/삭제  댓글쓰기

    참고 할만한 사이트 추가 : http://sgpag.springnote.com/pages/5603723

  2. SHTM 2012.03.22 16:49 신고  댓글주소  수정/삭제  댓글쓰기

    GraphModel.java 소스코드가 잘못들어가있네요~^^ 수정해주세요~!

2011.03.23 22:55

사실 OpenGL ES를 포스팅하게된 계기는 안드로이드에서 오실로스코프와 같은 View가 필요했기 때문이다. 2D 그래픽이므로 기본으로 제공되는 canvas를 쓸까도 생각해보았지만 3D로의 확장 가능성을 열어두고 싶었고, Performance 면에서 OpenGL이 좋지 않을까 하는 막연한 기대(!)때문이었다.

 계획으로는 총 3단계로 나누어서 포스팅을 하고자 한다.
 첫번쨰 포스팅은 기본적인 Initializing과 멈춰있는 그래프 하나 정도를 그리고 두번째에서는 실시간으로 Update되는 그래프, 세번째에서는 글자 삽입, 효과 주기 등의 다듬는 과정을 거칠까한다. 

 필자도 배우면서 하는것이므로 다음 포스팅때 앞에서 구현한 코드를 대폭(!) 고칠수도 있으니 이해해주기 바란다. 

 오늘은 그 첫번째로서 멈춰있는 그래프를 하나 그려볼까한다.
 우선 화면의 중심에 X축과 Y축을 그리고 Sin그래프 하나를 그려보겠다.

 이미 OpenGL ES 튜토리얼에서 initializing을 다루었으므로 실제로 그리는 부분만 코드를 첨부하겠다.
 좌표계의 설정등 Detail한 부분은 3번째에서 할 것이므로  다루지 않겠다.

우선 가로로 길게보는 그래프이므로 가로화면 모드로 고정하기 위해서(landscape) AndroidManifest.xml에서 다음을 추가하자.



그리고 일단 2D 좌표계로 고정을 하겠다.(3D로의 확장은 다음에 고려해보겠다)
(좌표계를 설정해주지 않으면 의도한 바대로 그래프가 나오지 않는다.!!)


다음은 X,Y축과 Sin그래프를 그리는 코드이다.



아래는 실행한 화면이다.




조금 더 다듬은 모습으로 프로토 타입을 만들고 싶었으나 Sin그래프를 그리는 과정에서 그래프가 나타나지 않아서 버그를 잡느라고 시간을 많이써서 이번 포스팅은 여기까지 하겠다.
신고

'OPENGL > Oscilloscope' 카테고리의 다른 글

libgdx(1) - Helloworld  (0) 2011.06.01
OpenGL ES - Oscilloscope - 2. Dynamic Graph  (2) 2011.03.25
OpenGL ES - Oscilloscope - 1. Draw Stopped Graph  (1) 2011.03.23
Posted by JAVA_HOME

댓글을 달아 주세요

  1. 김명훈 2012.11.20 22:22 신고  댓글주소  수정/삭제  댓글쓰기

    OpenGl을 처음 접하게 된 학생입니다.
    2d좌표계 고정은 어디에서 해야 하나요?...


티스토리 툴바