2014-01-30 8 views
1

Opengl 변형을 추가하면 이미지가 사라집니다.Opengl 변형을 추가하면 내 이미지가 계속 사라집니다.

void renderFileButton() 
{ 
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 
    glViewport(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT); 

    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

    glPushMatrix(); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(0, 320, 0, 240, -1, 1); 
    glMatrixMode(GL_MODELVIEW); 

    glGenBuffers(1, &vertexBufferID); 
    glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID); 
    glBufferData(GL_ARRAY_BUFFER, sizeof(file_vertices), file_vertices, 
     GL_STATIC_DRAW); 

    glEnableClientState(GL_VERTEX_ARRAY); 
    glVertexPointer(3, GL_FLOAT, sizeof(fileButtonVertexData), (GLvoid *) 
     offsetof(fileButtonVertexData, fileButtonPositionCoordinates)); 

    glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
    glTexCoordPointer(2, GL_FLOAT, sizeof(fileButtonVertexData), (GLvoid *) 
     offsetof(fileButtonVertexData, fileButtonTextureCoordinates)); 

    loadsprite("files/sprites/options.png"); 

    glScalef(0, 0, 1); 
    glRotatef(180, 1, 0, 0); 
    glTranslatef(0, 0, 0); 

    glPopMatrix(); 

} 

누군가 내가 여기서 잘못된 곳으로 말할 수 있습니까?

+1

무언가를 표시하는 변형이없는 코드를 보여줍니다. –

답변

2

0으로 스케일을 조정했습니다. 이것은 객체의 크기를 0으로 만듭니다. 사라지지 않을 겁니다.

나중에 한 번에 하나의 변환을 추가하고 아무 것도 수행하지 않는 변형을 추가하여 문제를 해결할 수 있습니다 (1로 축척, 0으로 회전, 0으로 변환). 그런 다음 의도 한 가치에 도달 할 때까지 천천히 변형을 증가시킵니다.

glPopMatrix 또한 모든 변환을 취소합니다.

마지막으로 실제 렌더링이 표시되지 않습니다. 단지 많은 국가 조작.

+0

화면에 나타나는 모든 스프라이트에 대해 별도의 렌더링 기능이 있습니다. 이 기능은 모든 것을 그룹으로 묶어 화면에 표시 할 수 있습니다. @BenVoigt –

+0

@PoppieSolumon : 음, 모든 변환은'glPopMatrix'에 의해 취소됩니다. –

+0

나는 glRotatef와 glTranslate를 다시 파티에 추가하자마자 나에게도 말한 단계를 수행했다. –

-1

어젯밤에 문제를 발견했습니다. 변환 순서가 문제였습니다.

glTranslatef(100, 100, 0); 
glRotatef(180.0f,0.0f,0.0f,1.0f); 
glScalef(-1.0f,1.0f,1.0f); 

이것은 모두 그 일을합니다.

+0

스케일링 * 값처럼 보이는 것이 내 대답에서 말한 것처럼 문제였다. 당신이 보여준 코드에서'glPopMatrix'가 당신이하는 모든 변형을 없애기 때문에 이것보다 더 많은 코드를 변경했다고 확신합니다. –

+0

예, 올바른 방향으로 나를 밀어 주셔서 감사합니다. @BenVoigt –

관련 문제