나는 과거에 컴파일했지만 현재는 같은 컴퓨터에있을 수없는 특정 OpenGL 응용 프로그램을 가지고 있습니다. 문제는 조각 쉐이더가 올바르게 컴파일되지 않는 것 같습니다.오류 GLSL 부정확 버전 450
내가 사용 :
- Glew 2.1.0
- Glfw 3.2.1
또한 필요한 모든 문맥이 프로그램의 시작 부분에 생성되고있다. 내 메인
std::string vSource, fSource;
try
{
vSource = getSource(vertexShader, "vert");
fSource = getSource(fragmentShader, "frag");
}
catch (std::runtime_error& e)
{
std::cout << e.what() << std::endl;
}
GLuint vsID, fsID;
try
{
vsID = compileShader(vSource.c_str(), GL_VERTEX_SHADER); //Source char* was checked and looking good
fsID = compileShader(fSource.c_str(), GL_FRAGMENT_SHADER);
}
catch (std::runtime_error& e)
{
std::cout << e.what() << std::endl; //incorrect glsl version 450 thrown here
}
GLuint programID;
try
{
programID = createProgram(vsID, fsID); //Debugging fails here
}
catch (std::runtime_error& e)
{
std::cout << e.what() << std::endl;
}
glDeleteShader(vsID);
glDeleteShader(fsID);
return programID;
:
여기/* ---------------------------- */
/* OPENGL CONTEXT SET WITH GLEW */
/* ---------------------------- */
static bool contextFlag = initializer::createContext(vmath::uvec2(1280, 720), "mWs", window);
std::thread* checkerThread = new std::thread(initializer::checkContext, contextFlag);
/* --------------------------------- */
/* STATIC STATE SINGLETON DEFINITION */
/* --------------------------------- */
Playing Playing::playingState; //Failing comes from here which tries to create a program
/* ---- */
/* MAIN */
/* ---- */
int main(int argc, char** argv)
{
checkerThread->join();
delete checkerThread;
Application* app = new Application();
...
return 0;
}
이 (가) fragmentShader 파일의 예제의 찾고 :처럼 여기 내 프로그램 작성 기능이 보이는 방법
#version 450 core
out vec4 fColor;
void main()
{
fColor = vec4(0.5, 0.4, 0.8, 1.0);
}
그리고 이것이 내가 오류로 포착 :
- 인텔 HD 4000
- 엔비디아 지포스 840M
내가 전에이 같은 기계에 쉐이더를 컴파일 할 것을 주장한다 414,내 사양은 다음과 같습니다. 나는 디스크 포맷 후에 더 이상 그것을 할 수 없다. 그러나 모든 드라이버가 업데이트됩니다.
그래픽 드라이버가 최신 버전입니까? 둘 다 GLSL 버전 450을 지원합니다. – Asesh
Intel 카드에 대한 정보를 찾을 수 없었지만, Nvidia는 GLSL 450을 확실히 지원해야합니다. Nvidia 카드로 프로그램을 실행 해 보셨습니까? (보통 Windows는 기본적으로 Intel을 기본으로합니다.) – Banex
@Asesh 어제이 문제가 저를 괴롭히기 시작했을 때 나는 모든 드라이버를 확인했습니다. 나는 심지어 그들을 뒤로 굴려서 최신 것들을 설치하기 위해 nvidia의 패널을 사용했다. – Primemaster