2012-03-16 5 views
0

Я реализую просмотр панорамирования/масштабирования для jpegs. Я показываю одно изображение за раз, сопоставленное текстуре, а затем при нажатии клавиши обмениваются изображениями.OpenGL изменение размера текстуры/квадрата

Моя проблема заключается в том, что хотя изображение меняется, размер квадрата фиксируется на ширину и высоту первого загруженного изображения и не обновляется. Вот код для рисования квадро т.д.,:

отмечают, что ROI_WIDTH и ROI_HEIGHT глобальные переменные, которые обновляют успешно каждый раз, когда новое изображение загружается, однако это не отражается на выходе:

void orthogonalStart (void) { 
    glMatrixMode(GL_PROJECTION); 
    glPushMatrix(); 
    glLoadIdentity(); 
    gluOrtho2D(0, ROI_WIDTH, 0, ROI_HEIGHT); 
    glScalef(1, -1, 1); 
    glTranslatef(0, -ROI_HEIGHT, 0); 
    glMatrixMode(GL_MODELVIEW); 
} 

void orthogonalEnd (void) { 
    glMatrixMode(GL_PROJECTION); 
    glPopMatrix(); 
    glMatrixMode(GL_MODELVIEW); 
} 


void display (void) { 
    glClearColor (1.0,1.0,1.0,0.0); 
    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glLoadIdentity(); 

    orthogonalStart(); 

    glEnable(GL_TEXTURE_2D); 
    glEnable(GL_DEPTH_TEST); 
    glDepthFunc(GL_LESS); 

    glBindTexture(GL_TEXTURE_2D, texture); 
    glRotatef(180.0, 250.0f, 250.0f, 0.0f); 

    glBegin(GL_QUADS); 
    glTexCoord2i(0,0); glVertex2f(0, 0); 
    glTexCoord2i(1,0); glVertex2f(0, ROI_WIDTH); 
    glTexCoord2i(1,1); glVertex2f(ROI_HEIGHT, ROI_WIDTH); 
    glTexCoord2i(0,1); glVertex2f(ROI_HEIGHT, 0); 
    glEnd(); 


    orthogonalEnd(); 
    zoomFac(); 
    glViewport (xView, yView, (GLsizei)(winx*zoomFactor), (GLsizei)(winy*zoomFactor)); 
    glutSwapBuffers(); 
} 

ответ

1

Ваш вызов gluOrtho2D() сообщает OpenGL, что ширина и высота вашего вывода всегда равны ROI_WIDTH единицами ROI_HEIGHT. Таким образом, ваш квад всегда будет охватывать всю область вывода. Вероятно, вы должны установить ширину и высоту в размере gluOrtho2D() на ширину и высоту пикселя области вывода (ваше окно или вид или экран, в зависимости от того, как вы это настроили).

Смежные вопросы