개발/기술
-
libgdx - Renderer개발/기술 2018. 6. 22. 21:12
ShapeRenderer 컴퓨터 그래픽 소프트웨어에서 '렌더링'은 이진화된 데이터를 컴퓨터 내에 영상을 만들어내는 과정을 뜻한다. 게임 엔진인 libgdx에서도 렌더링 개념을 사용하며 객체 지향적인 관점으로 활용하기 위해 ShapeRenderer라는 클래스를 만들었다. ShapeRenderer 는 화면을 그리기 위한 객체로 개발자가 만들어둔 데이터를 다양한 API를 이용해화면에 출력해주는데 사용된다. ShapeRenderer renderer; @Override public void create() { renderer = new ShapeRenderer(); 실제 클래스의 내부를 보면 public으로 선언된 함수가 많은데 이중 대부분이 화면에 그리기 위해 사용 할 수 있는 API 들이다. 목적에 따라서 함..
-
Libgdx - 소개 및 주요함수 정리개발/기술 2018. 6. 20. 20:52
Libgdx는 오픈소스로 운영되는 게임엔진이다. 주로 2D용 게임을 개발하는데 사용하며 Mac과 Windows에서만 사용할 수 있는 Unity와는 다르게 Ubuntu 환경에서도 사용할 수 있어 개발하기 편리하고 개발한 코드가 Android, IOS, Desktop 환경에서도 동시에 사용 할 수 있는 cross platform 툴이다. 다만 Unity처럼 강력한 GUI 기능을 제공하지는 않고 직접 코드를 이용해서 일일이 그리는 원시적인 방법을 채택해 초심자들에겐 어려울 수 있으나 반대로 생각하면 무거운 기능을 줄이고 가능한 가볍게 만들었기 때문에 성능이 좋고 새로운 기능을 자신의 입맛에 맞게 추가 할 수 있어 능숙한 개발자들에겐 높은 자유도를 주기도 한다. 공식 홈페이지에 올라온 libgdx 게임은 아래와..
-
objdump 를 이용한 바이너리 깨보기개발/기술 2018. 5. 29. 23:02
개발하다보면 보안이나 라이센스의 이유로 코드는 없고 빌드된 바이너리만 가지고 있는 경우가 간혹 있다. 그런데 이 바이너리의 의사코드도(pseudo code)나 사용한 API 문서도 없고 바이너리를 만든 사람으로부터 어떠한 지원도 받을 수 없는 극한의 상황에서 반드시 바이너리에 포함된 API를 이용해서 무언가를 만들어야 한다면 개발자로선 참 난감한 상황일 것이다. 이런 개발자를 위해서(?) 컴파일러에서는 objdump라는 옵션이 있다. 바이너리에서 원래 코드를 볼 수 있는 환상적인 옵션은 아니고, 바이너리에 있는 기계어를 어셈블리 코드로 변환해주는 옵션이다. 어셈블리 코드는 컴퓨터를 처음 배웠을 때 다들 경험 했을 것이다. 프로그래밍 언어와 기계어 사이의 중간 언어이며, 바이너리를 수행하려는 아키텍처(x8..
-
그래픽 소프트웨어, 라이브러리 정리개발/기술 2018. 5. 6. 10:27
내가 일하는 곳 옆 소파트가 그래픽 관련된 일을 하는 곳이라서 같이 회의할 때마다 wayland, opengl, surface flinger과 같은 그래픽 라이브러리 용어를 자연스럽게 흘려 듣게 된다. 처음에는 생소했지만 어느정도 시간이 지나면 이들의 역할과 각각의 상관관계를 파악하게 될 줄 알았는데 만 2년이 지나도 용어 자체만 익숙해질뿐 이해 수준은 그대로인걸 보니 의도적인 노력 없이는 안되는 것 같다. 그래서 이번 포스트를 통해 이제껏 귀동냥으로 들은 용어와 그래픽의 기초적인 동작을 정리해보려고한다. 그래픽을 공부하기전에 잠깐 화가가돼서 그림을 그린다고 생각해보자. 지금처럼 태블릿을 이용해서 웹툰을 그리는 화가가 아니라 10년전 팔레트와 붓을 이용해서 그리는 화가 말이다. 그림을 그리기 위해선 어떤..
-
Yocto 내부 파일 분석개발/기술 2016. 10. 2. 15:50
Yocto 프로젝트를 다운 받고 나면 c 코드는 하나도 없고 대부분 .bb, .inc로 이뤄진 스크립트 파일들이 대부분인 것을 확인 할 수 있다. 소스코드 하나 없이 위 파일들만 있으면 설정한 보드에서 동작하는 이미지가 나온다는 것이 신기하기도 하다. 눈치를 챈 사람들도 있겠지만 이 .bb, .inc 파일들은 스크립트이다. 이미지를 만들 때 필요한 소스 코드들을, 어디서 읽어올 것인지 (do_fetch)어떤 설정을 줄 것인지 (do_configure)어떤 컴파일 명령을 줄 것인지 (do_compile)어디에 설치 할 것인지(do_install)에 대한 정보들을 담고 있다. 잘 생각해보면 위의 작업들은 우리가 특정 파일들을 다운받고 빌드 할 때까지 이뤄지는 작업들과 굉장히 유사하다. 예를 들면 linux ..
-
Yocto 작동방식개발/기술 2016. 10. 1. 13:51
Yocto 공식 홈페이지에 있는 yocto 아키텍쳐에 따르면 yocto는 다음과 같은 방식으로 구동된다. 위의 그림은 개발자가 하는 일과 yocto가 하는 일이 뒤섞여 있다. 각각을 나눠서 설명해보면 다음과 같다. 개발자 1. 개발자가 빌드 스크립트를 작성한다. Metadata(.bb + patches) 파일들을 작성한다. Yocto로 개발시 개발자가 주로 하는 일이다. 2. 환경설정, Machine 등을 설정한다 Machine(BSP) configuration, Policy Configuration, User Configuration. 주로 build 환경 설정 후 conf폴더 내의 .conf 파일들을 수정하는 작업을 말한다. 개발자가 작성/다운 받은 레시피들 중에서 어떤 machine 환경에서 빌드할..
-
Yocto 튜토리얼개발/기술 2016. 10. 1. 13:00
Yocto 공식 매뉴얼 사이트(http://www.yoctoproject.org/docs/2.0/yocto-project-qs/yocto-project-qs.html)를 참고해서 yocto를 한번도 다뤄보지 않은 사람이 qemux86(가상머신)로 구동 할 수 있는 이미지를 만드는 방법을 소개한다 1. 먼저 PC OS 버전에 따라서 yocto 빌드에 필요한 기본 라이브러리들을 설치해야 한다. Ubuntu를 사용하는 경우는 다음과 같다. $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat libsdl1.2-dev xterm2. 최신 yocto 릴리즈 프로젝트를 받는..
-
Yocto란?개발/기술 2016. 9. 16. 21:08
임베디드 개발자라면 개발보다 환경세팅이 더 힘들다는 말에 공감할 것이다. 가장 먼저 개발하는 보드의 아키텍처(ARM인지 x86인지)를 확인해야하고, 어떤 OS(대부분 Linux)를 사용하며 버전은 무엇인지 그리고 OS 이미지를 램에 올려줄 부트로더는 어떤걸 쓸건지 등등 선택해야 할 것들이 많다. 또한 정한 것들을 빌드할 수 있는 환경을 구축하는데도 엄청난 시간이 소요된다. 사용할 컴파일러를 선정하고 다운 받는 것 뿐만 아니라 컴파일러가 사용하는 라이브러리까지 미리 설치해둬야 하는데 자료조사도 어려운데 중간에 뻑나면 개발 하기도 전에 벌써 지친다. 누군가 빌드스크립트로 딱 정리를 해두지 않은 한 정말 피곤한 일이다. 여기서 더 나아가 한 프로젝트에서 여러 종류의 보드를 사용하고 다양한 리눅스 버전들을 올리..