2011-07-30 8 views
4

저는 GLuint 텍스처를 매개 변수로 얻는 메소드가 있고 그 중 일부를 렌더링하고 싶습니다. 예를 들어 타일 세트를 생각해보십시오. 타일 세트를로드하고 레벨을로드 할 때 타일 세트 (타일)를 렌더링 할 수 있기를 원합니다.C++ Opengl 이미지의 일부분을 렌더링합니다

그리기 위해 설정된 타일에서 픽셀 좌표로 높이, 너비, posX 및 posY를 어떻게 든 정의 할 수 있다면 최적 일 것입니다.

저는 몇 시간 동안 노력해 왔으며 어떤 도움을 주시면 감사하겠습니다.

나는 현재 텍스처를 그리는 방법의 단순화 된 버전 :이 glTexCoord 기능을 사용 할

void Render::draw(GLuint texture, float posX, float posY, float sizeX, float sizeY) { 

    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); 
    glAlphaFunc(GL_GREATER,0.1f); 

    glBindTexture(GL_TEXTURE_2D, texture); 
    glPushMatrix(); 
    glTranslatef(posX,posY,0); 
    glBegin(GL_QUADS); 

    //Bottom-left vertex (corner) 
    glTexCoord2i(0, 0); 
    glVertex2f(-sizeX,-sizeY); 
    //Bottom-right vertex (corner) 
    glTexCoord2i(1, 0); 
    glVertex2f(sizeX,-sizeY); 
    //Top-right vertex (corner) 
    glTexCoord2i(1, 1); 
    glVertex2f(sizeX,sizeY); 
    //Top-left vertex (corner) 
    glTexCoord2i(0, 1); 
    glVertex2f(-sizeX,sizeY); 

    glEnd(); 
    glPopMatrix(); 
    glDisable(GL_BLEND); 
} 

답변

3

. 예를 들어
, 당신 타일셋은 4 개 타일을 포함, 당신은 [*] 타일, 당신은 같은 것을 할 것입니다 왼쪽 상단 모서리를 표시하려면 :

glTexCoord2f(0, 0); 
glVertex2f(-sizeX,-sizeY); 
glTexCoord2f(0.5, 0); 
glVertex2f(sizeX,-sizeY); 
glTexCoord2f(0.5, 0.5); 
glVertex2f(sizeX,sizeY); 
glTexCoord2i(0, 0.5); 
glVertex2f(-sizeX,sizeY); 

[*] 내가 어떻게 기억하지를 좌표는 정확히 작동하지만 코드에서 쉽게 테스트 할 수 있습니다.

+0

그래, 그 값은 0에서 1까지입니다. 대신 픽셀 좌표를 사용하여 위치를 정의하는 방법을 알고 있습니까? – Sane

+3

나는 마침내 그것을 이해했다! 관심있는 사람들을 위해 나는 해결책을 찾았습니다 : http://www.gamedev.net/topic/559980-opengl-and-2d-tiles/ – Sane

관련 문제