본문 바로가기

C Language

이미지 버퍼 초기화 함수

이미지 버퍼 초기화 함수

1. 기존 이미지 제거:
   ```c
   if (fdf->img.img)
       mlx_destroy_image(fdf->mlx_ptr, fdf->img.img);
   ```
   - 이미 존재하는 이미지가 있다면 먼저 제거합니다.
   - 이는 메모리 누수를 방지하고 새 이미지를 위한 공간을 확보합니다.

2. 새 이미지 생성:
   ```c
   fdf->img.img = mlx_new_image(fdf->mlx_ptr, WIDTH, HEIGHT);
   ```
   - `mlx_new_image` 함수를 사용하여 새 이미지를 생성합니다.
   - `WIDTH`와 `HEIGHT`는 이미지의 크기를 지정합니다.

3. 이미지 데이터 주소 얻기:
   ```c
   fdf->img.addr = mlx_get_data_addr(fdf->img.img, &fdf->img.bits_per_pixel,
       &fdf->img.line_length, &fdf->img.endian);
   ```
   - `mlx_get_data_addr` 함수를 사용하여 이미지 데이터의 메모리 주소를 얻습니다.
   - 이 함수는 픽셀 데이터에 직접 접근할 수 있게 해줍니다.
   - 함수는 다음 정보도 제공합니다:
     - `bits_per_pixel`: 픽셀당 비트 수
     - `line_length`: 이미지의 한 줄 길이 (바이트 단위)
     - `endian`: 엔디안 정보 (빅 엔디안 또는 리틀 엔디안)

4. 이미지 그리기:
   ```c
   draw(fdf);
   ```
   - 초기화된 이미지 버퍼에 실제 내용을 그립니다.
   - `draw` 함수는 FDF 맵 데이터를 사용하여 와이어프레임을 그릴 것입니다.

이 함수는 그래픽 렌더링을 위한 준비 단계로, 이미지 버퍼를 설정하고 초기화합니다. 이후 `draw` 함수에서 실제 그리기 작업이 이루어지며, 이 이미지는 나중에 화면에 표시될 것입니다.