2012-03-16 7 views
0

jpegのパン/ズームビューアを実装しています。私はテクスチャにマッピングされた一度に1つのイメージを表示し、次にキープレスでイメージ間を入れ替えます。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()へのあなたの呼び出しは、出力の幅と高さが常にROI_WIDTHでROI_HEIGHT単位であることをOpenGLに伝えています。だからあなたのクワッドは、常に出力エリア全体をカバーするつもりです。幅と高さは、出力領域のピクセルの幅と高さ(ウィンドウやビュー、または画面の設定方法によって異なります)に設定してください(gluOrtho2D())。

関連する問題