嘿,我还有一个问题。涉及的信息不多,但我注意到即使我链接了 libglu32.a,并且包括了 glu.h,我仍然不能使用GLU_
参数
我想知道怎么不是这样。有人有什么想法吗?
如果需要任何代码,请发表评论,我会迅速回复。
另外,我的 IDE 是在 Windows 32 位上使用 MinGW 作为编译器的 CodeBlocks。
glu 不是 OpenGL 的一部分。它是 OpenGL 的一个辅助库,但如果将 GLU 中的标记传递给纯 OpenGL 函数,则毫无意义。或者用外行的话来说:如果你想使用一个以你开头的标记,GLU_...
你必须将它传递给函数 prefixed glu...
。
您似乎将 GLU 与 GLUT 混淆了。没有GLU_RGBA,但有一个GLUT_RGBA 在创建显示窗口时传递。
这不是一个答案,而是对您的代码的评论。我明白了,您正在使用 SFML 作为框架。SFML 在内部使用 OpenGL,sf::Image
并由 OpenGL 纹理支持。或者换句话说:不需要自己创建 OpenGL 纹理sf::Image
。实际上,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的代码