そのため、シェーダーに色を付けてレンダリングすることはできません。属性 Color を使用して色を設定しないと、シェーダが機能します。頂点の私のコードは次のとおりです。
typedef struct
{
GLKVector3 Position; //Position
GLKVector4 Color; //32 Bit color
GLKVector3 Normal; //For Lighting
GLKVector2 TexCoord; //For Texturing
} Vertex;
すべての頂点の色を [1,0,0,1] として指定しました。私の頂点シェーダーは次のとおりです。
attribute vec3 Position;
attribute vec4 Color;
attribute vec3 Normal;
attribute vec2 TexCoord;
uniform mat4 ModelViewMatrix;
uniform mat4 ProjectionMatrix;
varying vec4 DestinationColor;
void main(void)
{
gl_Position = ProjectionMatrix*ModelViewMatrix*vec4(Position,1);
DestinationColor = Color;
}
そして、私のフラグメントシェーダーはこれです:
precision mediump float;
varying lowp vec4 DestinationColor;
void main (void)
{
gl_FragColor =DestinationColor;
}
そして、それは何も表示しません。
gl_FragColor = vec4(1,0,0,1); と言うようにフラグメントシェーダーを変更しても機能しません。DestinationColor を設定する頂点シェーダーの行のコメントを外さない限り。
しばらくこれに座っているのを助けてください