【问题标题】:OpenGL,SOIL library and a textured rectangularOpenGL、SOIL 库和带纹理的矩形
【发布时间】:2010-10-18 15:23:42
【问题描述】:

我正在尝试使用 SOIL 和 GLUT 在 OpenGL 中制作一个简单的纹理矩形。

这是我的显示函数(由 glutDisplayFunc(Display) 在 main 中执行):

void Display ()
{
    GLuint tex_2d;

    glMatrixMode (GL_MODELVIEW);
    glLoadIdentity ();
    glClear (GL_COLOR_BUFFER_BIT);
    glClearColor (1.0,1.0,1.0,1.0);
    gluLookAt (eyex,eyey,eyez,centerx,centery,centerz,0,1,0);

    glEnable(GL_TEXTURE_2D);
     tex_2d = SOIL_load_OGL_texture
    (
        "img.png",
        SOIL_LOAD_AUTO,
        SOIL_CREATE_NEW_ID,
        SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
    );
     if( 0 == tex_2d )
    {
        printf( "SOIL loading error: '%s'\n", SOIL_last_result() );
        exit(1);
    }

   glBindTexture(GL_TEXTURE_2D, tex_2d);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); 

    glColor3f (0.0,0.0,0.0);
    glBegin(GL_POLYGON);

                       glTexCoord2f(0.0f, 0.0f); glVertex2f(0.0f, 0.0f);
                       glTexCoord2f(1.0f, 0.0f); glVertex2f(1.0f, 0.0f);
                       glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f, 1.0f);
                       glTexCoord2f(0.0f, 1.0f); glVertex2f(0.0f, 1.0f);

     glEnd();   
    glDisable(GL_TEXTURE_2D);
    glFlush ();
    glutSwapBuffers();
}

这样只能看到一个没有任何纹理的黑色矩形。我试图用这个做几个小时。请帮忙,提前谢谢。

【问题讨论】:

  • 你每帧都加载纹理?
  • 我知道我不应该这样做,但即使我在其他地方加载纹理,它仍然无法正常工作。

标签: c opengl glut soil


【解决方案1】:

可能是您在绘制矩形之前将颜色设置为黑色吗?线

glColor3f (0.0,0.0,0.0);

试试白色吧……

glColor3f (1.0,1.0,1.0);

【讨论】:

  • 大声笑...我没想到黑色会覆盖纹理而白色不会...非常感谢!
猜你喜欢
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2020-04-12
相关资源
最近更新 更多