我如何能够使用GLU_RGBA或其他GLU_参数?

时间:2011-03-25 18:19:02

标签: c++ opengl glut mingw32

嘿,我还有一个问题。涉及的信息不多,但我注意到即使我链接了libglu32.a,并且包含了glu.h,我仍然不能使用GLU_参数

我想知道事情并非如此。谁会有任何想法?

如果需要任何代码,请发表评论,我会尽快回复。

另外,我的IDE是CodeBlocks,MinGW作为windows 32位的编译器。

3 个答案:

答案 0 :(得分:1)

glu不是OpenGL的一部分。它是OpenGL的辅助库,但如果传递给纯OpenGL函数,GLU的标记就毫无意义。或者以外行的术语:如果您想使用以GLU_...开头的代码,则必须将其传递给前缀为glu...的函数。

答案 1 :(得分:1)

看来你的GLU与GLUT混淆了。 没有 GLU_RGBA,但 是创建显示窗口时传递的GLUT_RGBA。

答案 2 :(得分:0)

这不是一个答案,而是对您的代码的评论。我明白了,你正在使用SFML作为框架。 SFML内部使用OpenGL,sf::Image由OpenGL纹理支持。换句话说:不需要自己创建sf::Image的OpenGL纹理。实际上,SFML注意一切都正确设置为使用图像作为OpenGL纹理。

在你的代码中你有这个:

GLuint LoadTexture(sf::Image image)
{
    GLuint Texture;
    glGenTextures(1, &Texture);
    glBindTexture(GL_TEXTURE_2D, Texture);
    gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA,image.GetWidth(),image.GetHeight(), GL_RGBA,GL_UNSIGNED_BYTE,image.GetPixelsPtr());
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    return Texture;
}

根本不需要此功能。您要做的只是image->Bind()而不是LoadTexture(image),因为已经存在纹理。只需查看sf::Image http://www.sfml-dev.org/documentation/1.6/Image_8cpp-source.htm

的代码即可