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
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.