2017-03-04 54 views
-1

我编码一个3D OpenGL的测试应用程序,我有一个功能设置是这样的:标识符“”是不确定的

Shader::Shader(const std::string& fileName) 
{ 
    program = glCreateProgram(); 
    shaders[0] = CreateShader(LoadShader(fileName + ".vs"), GL_VERTEX_SHADER); 
    shaders[1] = CreateShader(LoadShader(fileName + ".fs"), GL_FRAGMENT_SHADER); 

    for (unsigned int i=0; i < NUM_SHADERS; i++) 
     glAttachShader(program, shaders[1]); 

    glBindAttribLocation(program, 0, "position"); 

    glLinkProgram(program); 
} 

然而,当我试图声明shaders[0] = CreateShader(LoadShader(fileName + ".vs"), GL_VERTEX SHADER);我得到的错误:标识符“着色”未定义,我该如何解决这个问题?

+0

问问自己:如何定义shaders,然后告诉我们它是如何声明的。 –

+0

你还没有声明一个着色器数组。 –

+0

*但是当我尝试声明* - 该行不声明任何东西。该行代码将'CreateShader'的返回值赋予我们(和编译器)一无所知的东西,即'shaders [0]'和'shaders [1]'。 – PaulMcKenzie

回答

0

您忘记了#include "shader.h"。这将解决您的问题。

我想你正在研究类似于https://github.com/BennyQBD/ModernOpenGLTutorial的东西。以下是m_shadershttps://github.com/BennyQBD/ModernOpenGLTutorial/blob/master/shader.h#L29的声明。您正在使用shaders

+0

是的,就是这样;) - 我会尽快接受答案 –

+0

@JakeWickham因此唯一能够回答你的问题的方法是随机猜测?你应该在原始问题中提供你正在使用的细节。 – PaulMcKenzie

+0

我的回答不是随机猜测。我已编辑了答案以获取更多详细信息。但是我同意@PaulMcKenzie你应该在问题中包含背景细节。 –