Giter Site home page Giter Site logo

cub3d's Introduction

20210414

---------------------------------

20210513(목)

어제의 오답노트

mlx_loop_hook 에 들어가는 함수는 한 개의 파라미터만 받아야 한다. char **map, t_hub *info 두 개의 파라미터를 받는 함수를 넣는 바람에 첫 번째 인자(map)로 *info 를 받아 버려서 값이 0으로 초기화되는 문제를 겪었다.

mlx_hook 에 int key, t_hub *info 를 인자로 받는 함수를 넣으면 int key 에 입력된 키의 코드를 자동으로 할당해준다. (직접 key 값을 초기화하는게 아니다.)

---------------------------------

오늘 해야 할 것

mlx_addr_image 사용하기

천장, 바닥 색 칠해주기

(기존 색칠되었던 부분 지우고 새로 그리도록)

틈틈히 bmp 파일 생성, 스프라이트 알아보기

---------------------------------

오늘 공부 중...

mlx_new_image : 메모리에 새 이미지를 만들고 해당 이미지를 수정할 수 있는 void 포인터 반환.

mlx_get_data_addr :

mlx_put_image_to_window : 이미지를 주어진 win 포인터에 해당하는 창에 출력. x, y 는 이미지를 배치할 좌표.



---------------------------------

20210514(금)

11:10 ~.

cub3D 기능별 덩어로 쪼개기

왜? : 파싱 / DDA 알고리즘 / 키 후킹 부분을 따로 테스트하려니 파일이 규칙성 없이 분할되어 있어서 Makefile 수정이 불편함. 테스트용 메인에서 금방금방 당겨쓸 수 있도록 공용함수, 각 기능별 대표 함수, 정적 선언 함수를 적절히 분배할 것.

상세 : 어제 mlx 함수 활용을 연습하려고 보니 새로 메인을 짜고 메이크파일로 연결할 경우 기능별 함수가 너무 난잡하게 흩어져있어 신경 쓰이는 부분이 적지 않았다. 좀 더 간편하게 테스트용 메인을 연결하고 싶었다.

미구현 부분

맵 유효성 검사
.cub 파일 구조체 할당 후 무결성 검사
스프라이트
천장, 바닥 색 입력
벽 텍스쳐 입히기

질문

get_data_addr 에서 wide 800 일 때 size_line 이 3328 이 나오는 이유는? 픽셀당 32 bit 에 800 픽셀이면 25600 bits 혹은 3200 byte 가 맞지 않나?

The number of bytes used to store one line of image in memory : man 문구

해결!

Image 크기와 while 문이 완전히 똑같을 때 마지막 줄 끄트머리가 나오지 않고, get_data_addr 에서 받아 나온 size_line 을 사용했을 때 세그폴트가 터졌다.

While 문을 image 크기보다 조금 작게 하니까 두 문제 모두 해결되었다.

문제

dir 와 plane 에 따른 DDA 반환값 오류 -> 세그폴트

와…씨… y 가 인덱스 상으로 봤을 때 위(0)에서 아래쪽으로 증가한다는걸 완전히 까먹고 있었다.

Parse map && Dda

—[Parsing leaks 잡는 중…]—

info.graphic = malloc(sizeof(t_gdata)); 를 안 해주면 버스 에러가 생긴다.

gnl 을 사용했으면 받아온 line 을 쓴 후에 같은 함수에서 free 하길 추천.

남은 free 지점

texture 경로

이어서 … parse map 메모리 누수 잡기 test/ 메인 헤더 Makefile 활용
Dda 알고리즘 손보기

lldb, fsanitizer 공부

---------------------------------

20210515(토)

13:40 ~

연결리스트의 동적 메모리 할당을 해제할 때에는 내용물도 따로 따로 풀어줘야한다.(ft_strdup 같은 걸로 따로 할당 해 줬을때)

gnl = 0 일 때도 마지막 줄을 line 에 가져 나온다. 따라서 while (gnl == 1) 을 돌리고 안에 free(line) 를 넣어줄 경우 반복문 밖에서도 한 번은 free(line)을 해줘야 한다.

Hyeyoo 님 lldb 사용법

---------------------------------

20210516(일)

17:23 ~

오늘 할 거

텍스쳐 입히기

DDA 에서 알고리즘, 이미지 그리기 파트 분리

스크린 사이즈 버퍼 -> img 옮기기 -> put image to window

의문 : Khoi 님은 adds 를 int * 로 쓰고 나는 char * 로 돼 있다.

Texture 로딩 과정(xpm -> image_ptr) : mlx_xpm_file_to_image -> mlx_get_data_addr -> while (height, width) texture[][] == img[][] -> mlx_destroy_image(필수!)(이걸 해줘야 image 포인터를 나중에 화면 출력에 쓸 수 있음)


이후에 해야 할 것
int	**texture; -> 텍스쳐 크기만큼 동적할당
int	**buf; -> 화면 크기만큼 동적할당

texture  에 xpm 파일에서 불러들인 이미지 담아보기
buf 에서 벽 부분 텍스쳐 입혀보기

x 축, y 축으로만 나뉘어 있는 side 를 동, 서, 남, 북으로 확장하기

스프라이트 인식 및 출력
스프라이트 정렬 : 더 먼 스프라이트를 먼저 그리도록

스크린샷 비트맵 파일 생성

화면 출력 싱크 맞춰서 비 내리는 모습 해결하기

마지막에 읽던 포스팅
https://42kchoi.tistory.com/232

마지막에 하던 작업

load_image 함수 따라 적기

---------------------------------

cub3d's People

Watchers

KyungYoelKim avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.