这是我的包含和导致我痛苦的代码:
#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();也没有定义)
谢谢