グラフィック カードに関する情報:
GL_RENDERER: Intel(R) G41 Express Chipset
OpenGL_VERSION: 2.1.0 - Build 8.15.10.1986
GLSL_VERSION: 1.20 - Intel Build 8.15.10.1986
頂点シェーダー 1:
#version 110
attribute vec3 vertexPosition_modelspace;
varying vec3 normal;
varying vec3 vertex;
void light(inout vec3 ver, out vec3 nor);
void main()
{
gl_Position = vec4(vertexPosition_modelspace, 1.0);
light(vertex, normal);
}
頂点シェーダー 2:
#version 110
void light(inout vec3 ver, out vec3 nor)
{
ver = vec3(0.0,1.0,0.0);
//vec3 v = -ver; // wrong line
nor = vec3(0.0,0.0,1.0);
//float f = dot(ver, nor); // wrong line
}
フラグメント シェーダー:
#version 110
varying vec3 normal;
varying vec3 vertex;
void main()
{
gl_FragColor = vec4(vertex, 1.0);
}
2 番目の頂点シェーダーで 2 行がコメント化されている場合、これらのシェーダーは適切に機能します。ただし、そのうちの 1 つを有効にすると、エラーが発生します。エラーは、opengl 関数glDrawArraysで発生します。
out/inoutの変数が正しい値として使えないようです。OpenGL のバージョンが3.1で GLSL のバージョンが1.4であるIntel HD Graphics 3000
で
同じプログラムを実行しましたが、プログラムは正常に動作します。これは Intel のドライバーのバグですか、それとも私の使い方が間違っているのでしょうか?