今天我想尝试一个名为oglplus的opengl包装器。我可以使用该库,但我的IDE向我扔了大量的错误消息。我用QtCreator和EclipseCDT试了一下。
基本上没有IDE能够看到各种类的成员/方法。所以我做了一些挖掘。例如,类FragmentShader
至少有两个名为Source and Compile的方法。
Eclipse和QtCreator向我展示了以下源代码。
#if OGLPLUS_DOCUMENTATION_ONLY
/// Fragment shader wrapper
/**
* @see Shader
* @see Program
* @ingroup objects
*/
class FragmentShader
: public Shader
{ };
#elif GL_FRAGMENT_SHADER
typedef Specialized<
Shader,
OGLPLUS_CONST_ENUM_VALUE(ShaderType::Fragment),
SpecializedShaderInitializer
> FragmentShader;
#endif
好吧,可能每个着色器完全相同,只是命名不同。
class Shader
: public ShaderOps
{
public:
Shader(ShaderType type);
Shader(ShaderType type, String description);
};
似乎ShaderOps是重要的一类。
我还在ShaderOps中找到了'Source'方法(它在公共区块中)
const ShaderOps& Source(
const GLchar** srcs,
const GLint* lens,
int count
) const
{
assert(_name != 0);
OGLPLUS_GLFUNC(ShaderSource)(_name, count, srcs, lens);
return *this;
}
您是否知道为什么没有 IDE能够看到这些方法?源代码中有什么奇怪的东西吗?
甚至可以编写与IDE无法解析的代码差异很大的代码吗?
Ps:我只用eclipse cdt和Qtcreator测试过它。
答案 0 :(得分:4)
原因可能是ifdef guards:#if OGLPLUS_DOCUMENTATION_ONLY
如果未正确定义预处理器,IDE将不会显示相关的类/方法