728x90
miniLibX기술을 연마하고 복소수의 수학적 개념을 발견/사용하고 컴퓨터 그래픽의 최적화 개념을 엿볼 수 있는 기회가 될 것입니다.
mlx를 사용하기 위해 Makefile에 다음을 추가합니다.
cc -lmlx -framework OpenGl -framework AppKit -Imlx 소스파일명.c
실행 결과 화면
사용 예시
#include <mlx.h>
typedef struct s_data {
void *img;
char *addr;
int bits_per_pixel;
int line_length;
int endian;
} t_data;
int main(void)
{
void *mlx;
void *mlx_win;
t_data img;
mlx = mlx_init();
mlx_win = mlx_new_window(mlx, 1920, 1080, "Hello world!");
img.img = mlx_new_image(mlx, 1920, 1080);
img.addr = mlx_get_data_addr(img.img, &img.bits_per_pixel, &img.line_length,&img.endian);
my_mlx_pixel_put(&img, 5, 5, 0x00FF0000);
mlx_put_image_to_window(mlx, mlx_win, img.img, 0, 0);
mlx_loop(mlx);
}
mlx_init
void * mlx_init ();
mlx 초기화로 mlx를 사용하기 위해 가장 먼저 사용하는 함수입니다.
mlx_new_window
void mlx_new_window ( void mlx_ptr, int size_x, int size_y, char *title );
새 창을 스크린에 띄웁니다. size_x, size_y는 창의 크기, title은 창 타이틀바에 표시될 문구, mlx_ptr = mlx_init이 반환한 연결 식별자입니다.
mlx_new_image
void mlx_new_image ( void mlx_ptr, int width, int height );
새 이미지를 메모리에 생성시킵니다.
mlx_get_data_addr
char mlx_get_data_addr ( void img_ptr, int bits_per_pixel, int size_line, int *endian );
- img_ptr : 사용할 이미지를 지정합니다.
- bits_per_pixel : 픽셀 색상으로 이미지 깊이라고도 합니다.
- size_line : 이미지의 한 줄의 메모리에 저장하는 데 사용되는 바이트 수로 다른 줄로 이동하는데 필요합니다.
- endian : 이미지의 필셀 색상을 리틀 엔디안 또는 빅 엔디안으로 저장해야하는지 알려줍니다.
mlx_put_image_to_window
int mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr, int x, int y);
(x,y) 위치의 지정된 창 인스턴스에 이미지를 넣습니다. 한 번에 많은 양의 그래픽 데이터를 작성하는 데 권장되는 방법이며 위치의 메모리를 변경할 때 창에 직접 표시됩니다.
mlx_destroy_image
int mlx_destroy_image(void *mlx_ptr, void *img_ptr);
창 개체를 삭제합니다.
mlx_key_hook
int mlx_key_hook(void *win_ptr, int (*f)(), void *param);
주요 이벤트에 연결합니다. 포커스 된 창에서 키를 누를 때마다 트리거 됩니다. 초점이 맞지 않는 창은 주요 이벤트를 등록하지 않습니다.
- win_ptr : 윈도우 인스턴스
- (*f)() : 핸들러 함수로 (int button, int x, int y, void *param)와 같이 호출됩니다.
- param : 이벤트에 제공할 매개변수입니다.
mlx_mouse_hook
int mlx_mouse_hook(void *win_ptr, int (*f)(), void *param);
마우스 이벤트에 연결합니다. 지정된 화면의 아무 곳이나 클릭할 때마다 트리거 됩니다.현재 이러한 마우스 이벤트는 거의 작동하지 않으므로 사용하지 않는 것이 좋습니다.
- win_ptr : 윈도우 인스턴스
- (*f)() : 핸들러 함수로 (int key_code, void *param)와 같이 호출됩니다.
- param : 이벤트에 제공할 매개변수입니다.
mlx_loop
int mlx_loop ( void *mlx_ptr );
그래픽 시스템은 양방향으로 한쪽에서는 스크린에 디스플레이할 필셀과 이미지 등을 명령하고 한쪽에서는 키보드나 마우스로부터 이벤트를 받을 수 있습니다. 이 이벤트를 받기 위해서는 mlx_loop를 사용해야 하며 키보드나 마우스로부터 받은 이벤트를 기다립니다. 또한 이벤트에 연결되는 사용자 정의 함수를 호출합니다.
728x90
반응형
'42 SEOUL > 2_frect-ol' 카테고리의 다른 글
[42Seoul/frac'ol] 망델브로 집합(Mandelbrot set), 쥘리아 집합(Julia set), Burning Ship 코드 (0) | 2022.07.27 |
---|---|
[42Seoul/fract'ol] 프랙탈(fractal)이란 ? (0) | 2022.07.27 |
[42Seoul/fract'ol] 프로젝트 소개 (0) | 2022.07.26 |
댓글