l-yohai/cub3d

04_floor_ceiling에서 텍스쳐 넘버링으로 인해 오류가 발생합니다!

Closed this issue · 7 comments

241: int texNum = worldMap[mapX][mapY];에서 -1을 해주어야 정확한 텍스쳐 선택이 될 것 같습니다.
-1을 해주지 않아 texture buf 인덱스 참조에서 오류가 발생하는 경우가 생깁니다!

241: int texNum = worldMap[mapX][mapY];에서 -1을 해주어야 정확한 텍스쳐 선택이 될 것 같습니다.
-1을 해주지 않아 texture buf 인덱스 참조에서 오류가 발생하는 경우가 생깁니다!

texNum = worldMap[mapX][mapY] - 1 로 해주어야한다는 말씀이실까요?!

맞습니다!

241: int texNum = worldMap[mapX][mapY];에서 -1을 해주어야 정확한 텍스쳐 선택이 될 것 같습니다.
-1을 해주지 않아 texture buf 인덱스 참조에서 오류가 발생하는 경우가 생깁니다!

texNum = worldMap[mapX][mapY] - 1 로 해주어야한다는 말씀이실까요?!

흠,,! 어떤 상황에서 문제가 발생하는지 공유 가능하실까요?!

해당 예제에서 worldMap은 0에서 8 사이의 값을 가지고 있고, 색상을 선택하는 270라인 에서 texture[texNum[...]] 으로 접근하게 되는데, 아마 texture[8]로 접근할 때 문제가 발생할 수 있겠네요!

texNum을 모두 다 1씩 빼는것보단 8번 인덱스를 가진 텍스쳐를 하나 더 생성해주는 방법은 어떨까요?

아하 그것도 좋은 해결 방법이네요!
다만 minhykim님이 번역해주신 부분인 03번 예제에서

이전 코드에서 벽의 색상을 선택해 주었다면, 이번 코드에서는 벽의 텍스처를 선택해줄 것입니다.

선택된 텍스처종류를 나타내는 변수 texNum 은 맵에서 광선이 부딪힌 벽 한 칸(square)이 가진 값에서 1을 빼서 구할 수 있습니다.

1을 빼주는 이유는 0번째 텍스처도 0으로 표현되고 벽이 없는 것도 0으로 표현되기 때문입니다.
그러므로 worldMap[mapX][mapY]의 값이 1이면 texNum이 0이 되서 텍스처 종류 중 맨 첫번째 텍스처를 사용할 수 있게 해주는 것입니다.

이렇게 되어있던 부분때문에 -1을 하는 것이 맞는게 아닌가 생각해서 말씀드리게 되었습니다.

또한 실행시켰을 때의 텍스쳐도
스크린샷 2020-12-09 오후 6 20 46
위의 모습보다는 아래의 수정된 모습이 더 자연스러운 것 같다고 판단했습니다.
스크린샷 2020-12-09 오후 6 20 58

오..!! 제가 놓치고 있었나보네요. 반영해서 수정하겠습니다!!! 기여 정말 감사합니다 👍 :D