2017-03-04 62 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你應該在問題中包含背景細節。 –