2009-06-01 2 views
1

타일 맵 편집기에서 opengl을 사용하고 있습니다. 타일 ​​맵을 GL_LUMINANCE32F 형식으로 저장 한 다음 OpenGL 명령으로 수정하십시오.opengl 내의 '무한'캔버스

이제 저는 캔버스 크기 제한이 타일 맵을 그리는 사람들에게 부담이된다는 것을 알고 있습니다. 그러면 무한 캔버스를 어떻게 구현할 수 있을까요? (확장 및 축소를 위해 사용자가 명시 적으로 트리거하지 않고도 확장 및 축소 가능)

필요에 따라 캔버스를 확장하거나 축소하는 것이 어렵지 않아 다른 캔버스를 쉽게 만들 수 있으며 이전 캔버스 내용을 이동할 수 있습니다 오래된 캔버스를 제거하십시오. 대신 캔버스가 축소 될 때 감지 할 수있는 방법과 축소 할 수있는 캔버스를 얻는 방법에 대한 단서가 없습니다.

그래서 캔버스 가장자리에있는 0의 행과 열을 감지해야합니다.

답변

2

타일로 무한 캔버스를 만듭니다.

+0

좋아, 그럼 빈 타일을 어떻게 감지합니까? – Cheery

+0

1024x768 이미지가 256x256 타일로 있다고 가정 해 보겠습니다. 그것은 4x3 타일입니다. 이미지는 y 차원에서 100 픽셀만큼 확장됩니다. 이제 4x4 타일로 1024x868 이미지를 얻었습니다. 부분적으로 표시된 타일을 추적합니다 (타일을 더 할당하기 전에 사용자가 다른 156 픽셀 확장까지 허용합니다). 사용자는 확장 한 내용 만 볼 수 있습니다. –

0

당신이 제안한 것처럼 캔버스를 축소하면 아티스트에게 도움이되지 않습니다. 자주 영역을 넓히기 위해 작업 영역을 확장합니다. 또한 대상 프로그램에서 작동해야하는 모델 주위에 빈 공간이있는 스프라이트 시트가 있습니다.

내 제안은 필요에 따라 확장하는 것인데, 아티스트는 크기를 수동으로 조정할 수 있습니다.

+0

그것은 타일 세트 드로잉과 관련이 있지만 지금은 타일 맵에 집중하고 있습니다. 나는 그렇지 않다면 생각하고 있는데, 예술가들은 특히 실험 할 때 물건을 제거하고 있습니다. 사용자가 원하지 않는 텍스처의 부분을 수동으로 드롭 할 수있게하거나, 거대한 텍스처를 제공하고 사용자가 레이어를 저장할 때만 잘라낼 수있게하는 것을 고려하십시오. – Cheery

1

마음에 떠오르는 한 가지 아이디어는 다음과 같은 방법으로 X 방향과 Y 방향으로 따로 따로 수축시키는 방법을 찾는 것입니다. 캔버스 크기의 절반 크기의 '여백'을 렌더링하고 ARB_ occlusion_query를 사용하여 비어 있으면 밖으로 나가십시오. 비어 있지 않은 경우 반으로 분할하고 반복합니다 (즉, 올바른 크기를 찾기 위해 이진 검색을 수행함). 여기에는 로그 (N) 단계가 필요합니다. N은 캔버스의 크기 (너비 또는 높이)이므로, 매번 수행하면 꽤 빠릅니다.

+0

오 클루 젼 쿼리와 스텐실이 흥미 롭습니다. 내가 한 곳에서 이진 검색 방법을 시도 할 것입니다. – Cheery