OpenGL Cg几何着色器

用户名

尝试使用OpenGL初始化几何着色器时出现编译器错误。我正在使用VS2013。
这是我在OpenGL上初始化的方式

myCgContext = cgCreateContext();
cgGLSetDebugMode(CG_FALSE);

cgSetParameterSettingMode(myCgContext, CG_DEFERRED_PARAMETER_SETTING);

CGprofile gpProfile = cgGLGetLatestProfile(CG_GL_GEOMETRY);


if (gpProfile == CG_PROFILE_UNKNOWN) {
    if (cgGLIsProfileSupported(CG_PROFILE_GLSLG))
        gpProfile = CG_PROFILE_GLSLG;
    else {
        fprintf(stderr, "%s: geometry profile is not available.\n", gpProfile);
        exit(0);
    }
}


cgGLSetOptimalOptions(gpProfile);
OpenGLRenderer::checkForCgError("selecting geometry profile");

CGprogram prog = cgCreateProgram(myCgContext, 
                                    CG_SOURCE, 
                                    "geometry_particles.cg",
                                    gpProfile, 
                                    "geometry_passthru",
                                    NULL);
OpenGLRenderer::checkForCgError("Geometry program");

当我调用函数checkForCgError时,编译器将引发以下错误消息:编译器返回了错误。(1):错误C0000:语法错误,意外的'。',在标记'。'处预期为“ ::”。

我的几何着色器位于文件“ geometry_particles.cg”中,代码​​为

// Geometry pass-through program for colored triangles
void geometry_passthru(AttribArray<float4> position : POSITION, 
                    AttribArray<float4> color   : COLOR)
{
    for (int i = 0; i < 3; i++) 
    {
        emitVertex(position[i] :POSITION, color[i] : COLOR);
    }
}

关于为什么编译器会抛出该错误的任何想法。设置着色器时我会丢失标志吗?

海藻油

好吧,如果不仔细查看源代码,还没有看到这一点。您使用时cgCreateProgram使用的是程序,而不是文件名。编译器尝试将给定的字符串解析为cg源代码,但不是-并报告了错误。

您要使用的是cgCreatePgrogramFromFile,或手动加载文件内容。例如

CGprogram program = cgCreateProgramFromFile(myCgContext,
                                        CG_SOURCE,
                                        "geometry_particles.cg",
                                        gpProfile,
                                        "geometry_passthru",
                                        NULL);

关于您的cgc空输出-我从没在Windows上使用过,所以不能这么说。也许将选项设置为输出到文件(-o out_file)会有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章