1

次のコードを使用して生の画像ファイルを表示していますが、何も表示されません。

GLuint texture;
GLuint LoadTexture( const char * filename, int width, int height);
void FreeTexture(GLuint texture);

void display()
{
    glClear (GL_COLOR_BUFFER_BIT);
    glBindTexture( GL_TEXTURE_2D, texture ); 
    glBegin (GL_QUADS); //begin drawing our quads
    glTexCoord2d(0.0, 0.0);
    glVertex3f(0.0, 0.0, 0.0); //with our vertices we have to assign a texcoord

    glTexCoord2d(1.0, 0.0);
    glVertex3f(1.0, 0.0, 0.0); //so that our texture has some points to draw to

    glTexCoord2d(1.0, 1.0);
    glVertex3f(1.0, 1.0, 0.0);

    glTexCoord2d(0.0, 1.0);
    glVertex3f(0.0, 1.0, 0.0);
    glEnd();
    glPopMatrix();
    glFlush();
}

void init()
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, 640, 0, 480);
    glEnable( GL_TEXTURE_2D );
}

int main(int argc, char **argv)
{
    glutInit (&argc, argv);
    glutInitDisplayMode (GLUT_SINGLE);
    glutInitWindowSize (640, 480);
    glutInitWindowPosition (100, 100);
    glutCreateWindow ("A basic OpenGL Window");
    glutDisplayFunc (display);
    init();
    texture = LoadTexture("texture.raw", 256, 256);
    glutMainLoop ();
    FreeTexture(texture);

    return 0;
}

出力として取得するのは空の画面だけです。何が間違っている可能性がありますか?

4

1 に答える 1

2

gluOrtho2dを呼び出した後、ビューは0,0から640,480にマップされます。0,0から1,1までの値でクワッドを描画しています。これは、左下の画面上の1ピクセルのサイズになります。

フルスクリーン(glVertex(640,480);)を使用するか、gluOrtho2dを使用して1x1ビューポートを指定します(gluOrtho2d(0,1,0,1);

于 2012-05-20T07:04:58.287 に答える