OpenGL에서 2D 등각 투영 그리드입니다. (그림 : http://i.imgur.com/nUZax.png). 제발 실제 코드를 바르게 쓰지 전에 많은 것들이 그냥 시도하는 것입니다. 나는이 물건으로 손을 더럽 히려고 노력하고 있습니다.OpenGL, 등각 투영 2D 맵 및 텍스처
각 타일의 너비는 76 픽셀이고 높이는 38 픽셀입니다. 이제 저는 각각의 타일을 제가 만든 약간의 잔디 텍스처로 텍스처를 만들고 싶습니다. 그러나, 그것은 잘되지 않을 것입니다!
내 문제는 텍스처가 계속 엉망으로 보이고 있다는 것입니다. 크기가 절반 (예 : 절반 크기)보다 작으며 흰색으로 둘러싸여 있습니다. 이것은 텍스쳐를 적용 할 때 사용하는 코드입니다 (크기는 76x38입니다!).
void drawSquare(int x, int y) {
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
glTexCoord2i(38, -19); glVertex2i(x+38, y);
glTexCoord2i(-38, 19); glVertex2i(x, y+19);
glTexCoord2i(38, -19); glVertex2i(x-38, y);
glTexCoord2i(-38, 19); glVertex2i(x, y-19);
glEnd();
}
이
내가 이렇게 내 오르의 설정을 넣어, X를 계산 코드의 일부이며 Y.for (int y = 1; y < gridY+1; y++) {
for (int x = 1; x < gridX+1; x++) {
drawSquare((x-y) * 38 + (SCREEN_SIZE_X/2), (x+y) * 19);
}
}
아마도 추가해야합니다.
glOrtho(0, SCREEN_SIZE_X, 0, SCREEN_SIZE_Y, -1, 1);
나를 여기에 도움이 될 수
사람 (SCREEN_SIZE_X 및 SCREEN_SIZE_Y는 800 × 600 인)? 그 점은 크게 감사하겠습니다. 아마 그것을 더 분명하게하기 위해, 이것이 바로 지금처럼 보이는 방법입니다!
편집 : 일부 도움이 끝나면이 부분으로 변경되었습니다.
glBegin(GL_QUADS);
//glColor3f(r, g, b);
glTexCoord2f(0,1); glVertex2i(x+38, y);
glTexCoord2f(1,1); glVertex2i(x, y+19);
glTexCoord2f(1,0); glVertex2i(x-38, y);
glTexCoord2f(0,0); glVertex2i(x, y-19);
glEnd();
결과 : GL_TEXTURE_2D 사용시 http://i.imgur.com/sOqsH.png
나는 그것을 시도했지만 그때 텍스처는 여전히 모든 borked 나온다. 이 경우 어떻게 생겼는지 보여 줄 수 있어요. –
텍스처 좌표를 0에서 1 사이로 고정 했습니까? 0과 1 만 사용하고 텍스처가 각 타일에 _ 완전하게 표시되는지 확인하십시오. 그렇지 않은 경우 다른 것이 잘못되었습니다 ... – Rookie
스크린 샷과 코드가있는 원본 게시물을 업데이트했습니다. –