나는이 자습서 다음있어Qt5의 OpenGL GLSL 버전 오류
: http://releases.qt-project.org/learning/developerguides/qtopengltutorial/OpenGLTutorial.pdf (공식 Qt5를 OpenGL 튜토리얼).
문제는 내가 내 프로그램을 실행하려고 할 때, 나는 검은 화면이 다음과 같은 오류 메시지를 얻을입니다 :
내 프로그램은 일부 검색에와 QGLWidget을 기반으로
QGLShader::compile(Vertex): ERROR: 0:1: '' : version '130' is not supported
QGLShader::compile(Fragment): ERROR: 0:1: '' : version '130' is not supported
인터 웹은 내가는 OpenGL 3.2 컨텍스트를 사용할 필요가 있음을 발견하지만, Qt는 OpenGL을 2.X를 사용하여 좋아하는
내 컴퓨터 :
-
후반
- 맥북 프로 망막 '15 2012
- 인텔 HD 4000
- 엔비디아 지포스 그래서 650M
, 어떻게이 일을 할 수 있습니까?
EDIT :
내 버전 3.2 지정된 형식없이 2.0
fragmentShader.frag 사용 (QGLFormat 통해 설정)된다
#version 130
uniform vec4 color;
out vec4 fragColor;
void main(void)
{
fragColor = color;
}
vertexShader.vert :
#version 130
uniform mat4 mvpMatrix;
in vec4 vertex;
void main(void)
{
gl_Position = mvpMatrix * vertex;
}
을
오류 (형식 : OpenGL 3.2) :
(형식없이, OpenGL을 2.0) 617,451,515,QGLShaderProgram: shader programs are not supported
QGLShaderProgram::uniformLocation(mvpMatrix): shader program is not linked
The program has unexpectedly finished.
오류 :
QGLShader::compile(Vertex): ERROR: 0:1: '' : version '130' is not supported
QGLShader::compile(Fragment): ERROR: 0:1: '' : version '130' is not supported
메시지에 이러한 오류를 발생시키는 셰이더를 추가 할 수 있습니까?(물론, 셰이더의 소스에서 '#version 130'을 그냥 놓아도 작동하지 않는다고 가정하면) – peppe
셰이더에는 이미 '#version 130'이 포함되어있어 작동하지 않는 이유입니다. – Dirk
여전히 좋겠습니까? 사용중인 셰이더 소스를 게시물에 추가 하시겠습니까? 또한, 사용중인 Qt 버전을 명시하고, OpenGL 컨텍스트의 정확한 버전을 덤프 할 수 있습니까? ('glwidget-> context() -> format(). majorVersion()'과'minorVersion'을 통해). – peppe