0

今天我想尝试一个名为oglplus的 opengl 包装器。我可以使用该库,但我的 IDE 向我抛出大量错误消息。我用 QtCreator 和 EclipseCDT 进行了尝试。

基本上没有IDE能够看到各种类的成员/方法。所以我做了一些挖掘。例如,该类FragmentShader至少有两个方法,称为 Source 和 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测试过。

4

1 回答 1

4

原因可能是 ifdef 守卫:#if OGLPLUS_DOCUMENTATION_ONLY

如果您没有正确定义预处理器,IDE 将不会显示相关的类/方法

于 2013-04-14T18:08:13.730 回答