Qt とシェーダーで OpenGL を使い始めています (OpenGL の経験はありますが、シェーダーはまだ使用していません)。
私はこのチュートリアルに従っています: http://releases.qt-project.org/learning/developerguides/qtopengltutorial/OpenGLTutorial.pdf (公式の Qt5 OpenGL チュートリアル)。
問題は、プログラムを実行しようとすると、黒い画面と次のエラー メッセージが表示されることです。
QGLShader::compile(Vertex): ERROR: 0:1: '' : version '130' is not supported
QGLShader::compile(Fragment): ERROR: 0:1: '' : version '130' is not supported
私のプログラムは QGLWidget に基づいています
インターウェブをブラウジングすると、OpenGL 3.2 コンテキストを使用する必要があることがわかりましたが、Qt は OpenGL 2.x を使用するのが好きです。
私のコンピューター:
- MacBook Pro Retina '15、2012 年後半
- インテル HD 4000
- NVIDIA GeForce 650M
では、どうすればこれを機能させることができますか?
編集:
私のバージョンは 3.2 (QGLFormat で設定) で、フォーマットが指定されていない場合は 2.0 を使用します
fragmentShader.frag:
#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):
QGLShaderProgram: shader programs are not supported
QGLShaderProgram::uniformLocation( mvpMatrix ): shader program is not linked
The program has unexpectedly finished.
エラー (フォーマットなし、OpenGL 2.0):
QGLShader::compile(Vertex): ERROR: 0:1: '' : version '130' is not supported
QGLShader::compile(Fragment): ERROR: 0:1: '' : version '130' is not supported