1

現在、画像を読み込む必要のあるプロジェクトに取り組んでいます。SOILライブラリを使用してJPEG画像をロードしています。投影領域でボールを動かさなければなりません。ボールの動きは、画像が読み込まれていなくても正常に機能しますが、画像が読み込まれると離散的に遅くなります。画像を読み込んだままグラフィックをスムーズに更新するにはどうすればよいですか。

GLuint tex_2d = SOIL_load_OGL_texture
(
    "<image_path>ImageName.jpg",
    SOIL_LOAD_AUTO,
    SOIL_CREATE_NEW_ID,
    SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
);

glBindTexture(GL_TEXTURE_2D, tex_2d);
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
    glTexCoord3f(0.0f,0.0f,0.0f);        glVertex3f(factor*BOARD_BREADTH/2,-factor*BOARD_LENGTH/2,0);
    glTexCoord3f(0.0f,1.0f,0.0f);        glVertex3f(factor*BOARD_BREADTH/2,factor*BOARD_LENGTH/2,0);
    glTexCoord3f(1.0f,1.0f,0.0f);        glVertex3f(-factor*BOARD_BREADTH/2,factor*BOARD_LENGTH/2,0);
    glTexCoord3f(1.0f,0.0f,0.0f);        glVertex3f(-factor*BOARD_BREADTH/2,-factor*BOARD_LENGTH/2,0);
glEnd();
4

2 に答える 2

1

画像がまだロードされている状態でグラフィックスをスムーズに更新するにはどうすればよいですか?

再描画のたびに画像を再読み込みしません。また、現在行っていることを行うと、各フレームで作成したテクスチャを削除しない可能性が高いため、大量のメモリ リークが発生します。全体tex_2d = SOIL_load_OGL_textureを 1 回限りの初期化コードに移動します。

于 2013-03-01T08:28:05.267 に答える
0

シンプルな手続き型スタイル:

init() {
    // load texture here
    // load shaders and other resources
}

render() {
    // use resources here to draw something       
}

メインコード:

main() {
    init();
    while(still_running())
    {
        // update all
        render();
    }
    // clean up here
}

initは 1 回だけ呼び出さrenderれますが、1 秒間に 60 回呼び出されることに注意してください。あなたのコードでは、毎秒 60 のテクスチャを作成します! (ただし、ピクセルは同じです!)

于 2013-03-01T12:15:06.980 に答える