私はOpenGLを使って自分のシェーダを書いています。なぜこのシェーダがコンパイルされないのか分かりません。他の誰かがそれを見てもらえますか?GLSL Vertex Shaderはなぜコンパイルされませんか?
私は何を頂点として渡していることは、この形式の2台のフロート(バイトとして分離)である:
Float 1:
Byte 1: Position X
Byte 2: Position Y
Byte 3: Position Z
Byte 4: Texture Coordinate X
Float 2:
Byte 1: Color R
Byte 2: Color G
Byte 3: Color B
Byte 4: Texture Coordinate Y
そして、これが私のシェーダです:
in vec2 Data;
varying vec3 Color;
varying vec2 TextureCoords;
uniform mat4 projection_mat;
uniform mat4 view_mat;
uniform mat4 world_mat;
void main()
{
vec4 dataPosition = UnpackValues(Data.x);
vec4 dataColor = UnpackValues(Data.y);
vec4 position = dataPosition * vec4(1.0, 1.0, 1.0, 0.0);
Color = dataColor.xyz;
TextureCoords = vec2(dataPosition.w, dataColor.w)
gl_Position = projection_mat * view_mat * world_mat * position;
}
vec4 UnpackValues(float value)
{
return vec4(value % 255, (value >> 8) % 255, (value >> 16) % 255, value >> 24);
}
あなたがこれ以上必要な場合情報、私は喜んで遵守するだろう。
エラーメッセージを貼り付けてコピーしてください。 – tibur
エラーメッセージはどのように表示されますか?私はglGetProgramInfoLogを呼び出すときに1つを取得しますが、それはちょうどglLinkProgram()が呼び出される前に「頂点シェーダが正常にコンパイルされませんでした。 – Azzi777
@ Azzi777:glCompileShaderが失敗したときに動作するglGetShaderInfoLogがあります。 _常にシェーダオブジェクトとプログラムオブジェクトのコンパイルステータスをチェックする必要があります。 –