Xcode GL_GEOMETRY_SHADER身份不明?

时间:2014-08-18 22:25:32

标签: c++ xcode opengl osx-mountain-lion

这是我的包含和导致我痛苦的代码:

#include <iostream>
#include <vector>
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>

using namespace std;

GLuint CreateShader(GLenum eShaderType, const std::string &strShaderFile)
{
    GLuint shader = glCreateShader(eShaderType);
    const char *strFileData = strShaderFile.c_str();
    glShaderSource(shader, 1, &strFileData, NULL);

    glCompileShader(shader);

    GLint status;
    glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
    if (status == GL_FALSE)
    {
        GLint infoLogLength;
        glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLength);

        GLchar *strInfoLog = new GLchar[infoLogLength + 1];
        glGetShaderInfoLog(shader, infoLogLength, NULL, strInfoLog);

        const char *strShaderType = NULL;
        switch(eShaderType)
        {
            case GL_VERTEX_SHADER: strShaderType = "vertex"; break;
            case GL_GEOMETRY_SHADER: strShaderType = "geometry"; break;
            case GL_FRAGMENT_SHADER: strShaderType = "fragment"; break;
        }

        fprintf(stderr, "Compile failure in %s shader:\n%s\n", strShaderType, strInfoLog);
        delete[] strInfoLog;
    }

    return shader;
}

这是我能想到指出关键代码的唯一方法。 (我是SO的新手)

我正在从一个教程中学习,所以除了改变的包含和命名空间之外,这不是我的代码。

无论如何,我正在使用Xcode来学习在C ++中使用OpenGL,它告诉我我正在使用未声明的标识符GL_GEOMETRY_SHADER ...我之前在java中使用OpenGL进行编码对我来说这看起来很奇怪,因为GL_GEOMETRY_SHADER应该被识别以及它的顶点和片段对应物,这不会引起任何问题。任何帮助将不胜感激。

(顺便说一下,由于我只是选择不使用函数,因此我不会认为它有自己的整个问题,所以glutExitMainLoop();也没有定义)

谢谢

0 个答案:

没有答案