0

そのため、シェーダーに色を付けてレンダリングすることはできません。属性 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 を設定する頂点シェーダーの行のコメントを外さない限り。

しばらくこれに座っているのを助けてください

4

1 に答える 1