可能是一个非常简单的问题,但它让我难过。
我有一个基于SDL / OpenGL / GLEW的静态库,可以在Windows上编译(gcc / g ++)和链接。在OS X上,相同的代码库无法编译声称它无法找到GL_NUM_EXTENSIONS和:: glGetStringi()的声明 - 这是因为我已经在混合中抛出GLEW(只有SDL和OpenGL,它构建得很好) OS X也是)。
// globals.h
#include <glew.h>
#include <SDL/SDL.h>
// graphics.h
#include "globals.h"
bool HasGLExtension(const char* pName);
// graphics.cpp
#include <string>
#include "graphics.cpp"
bool HasGLExtension(const char* pName)
{
GLint numExtensions;
::glGetIntegerv(GL_NUM_EXTENSIONS, &numExtensions); // error
for (int i = 0; i < numExtensions; ++i)
{
if (strcmp(pName, (char*)::glGetStringi(GL_EXTENSIONS, i)) == 0) // error
{
return true;
}
}
return false;
}
我失踪的显而易见的是什么?
不要这样做。对于1,易于设置的东西,2,开箱即用和3,在许可证中几乎没有任何障碍,使用glLoadGen。