모바일 3D 그래픽스 출간

드디어 책이 출간되었습니다. 그제 출간되었다는 연락을 받았을 때는 매우 기뻤는데, 또 막상 출간된것을 확인하고 보니 좋습니다. 아마 처음으로 번역이라는 것을 해봐서 그런지 출간까지의 소소한 과정들이 여러가지 큰 기분으로 다가서는 듯 합니다.

사용자 삽입 이미지

이번에 구글 안드로이드 폰이 국내에 출시되면 구입하려고 벼르고 있습니다. 모토롤라에서 모토로이라는 안드로이드 OS가 탑재된 폰이 2월 초부터 판매된다고 하니… 이미 2년 약정기간이 지난 제 폰을 바꿀 수 있을듯합니다.

안드로이드 폰 쪽으로  개발에 시간을 내 해보려고 하는데요. 그에 대한 연장선으로 모바일에서 3D 그래픽을 적용해 볼 수 있을 듯합니다.

참고로 아이폰이나 Windows Mobile에서도 OpenGL ES를 지원하니 이 책의 내용을 적용해 3D 그래픽을 적용할 수 있습니다. 관심있으신 분들은 살펴보시기 바랍니다.

[C#] 동적 Bitmap 생성

.NET에서 C# 코드로 비트맵을 생성하고 생성한 이 비트맵에 원하는 그래픽 요소를 그린 후 스트림에 전송하는 방법에 대한 정리입니다. 매우 간단한 내용이지만 그래픽에 대해 관심이 많은 개발자로써 천천히 정리해 봤습니다.

int w = 100;
int h = 100;

Image img = new Bitmap(w, h);
Graphics grp = Graphics.FromImage(img);

위의 코드는 100×100 크기의 비트맵 이미지를 생성하고 이 이미지에 그래픽 요소를 그리기 위한 Graphics 클래스의 인스턴스와 바인딩 합니다. 이제 Graphics 클래스의 인스턴스 변수인 grp를 이용해 우리가 원하는 그래픽 요소를 그릴 수 있습니다. 아래는 간단하게 선을 그리고 파일로 저장하는 코드입니다.

grp.DrawLine(Pens.Aqua, 10, 10, 90, 90);
img.Save("d:/a.bmp");

저장된 파일은 아래와 같습니다.

그림을 살펴보면.. 그래픽 객체로 직접 선을 그린 픽셀을 제외하고 나머지 픽셀들은 모두 투명이라는 것을 알 수 있습니다. 그리고 아래의 코드는 비트맵 이미지를 구성하는 픽셀 하나 하나에 대한 색상 정보를 가져올 수 있는 힌트를 제공하는 코드입니다.

Bitmap bmp = img as Bitmap;
Color clr = bmp.GetPixel(10, 10);
MessageBox.Show(clr.ToString());

MessageBox를 통해 Color타입의 clr을 toString 매서드를 통해 얻은 값은 아래 그림과 같습니다. 자바와 같이 C# 역시 모든 객체에 대해 toString() 매서드를 제공하여 자신에 대한 정보를 사용자가 읽어 파악할 수 있는 문자열 형태의 값을 제공하고 있습니다.

사용자 삽입 이미지
끝으로 픽셀값을 Color 타입으로 가져오고 있습니다. Color는 퍼포먼스를 위해서 클래스가 이난 구조체 타입으로 선언되어 있습니다.