Ed Angelによる「インタラクティブコンピュータグラフィックス」、具体的にはキューブをテクスチャで回転するコードに従っています。以下のように(本のように)、このための頂点シェーダは、次のとおりです。バージョン440のコアでキューブをテクスチャで描画するための頂点シェーダとフラグメントシェーダは何ですか?
#version 150
in vec4 vPosition;
in vec4 vColor;
in vec2 vTexCoord;
out vec4 color;
out vec2 texCoord;
uniform vec3 theta;
void main()
{
........
........
// code for rotation
........
color = vColor;
texCoord = vTexCoord;
gl_Position = rz * ry * rx * vPosition;
}
とフラグメントシェーダコードは次のとおりです。
#version 150
in vec4 color;
in vec2 texCoord;
out vec4 fColor;
uniform sampler2D texture;
void main()
{
fColor = color * texture2D(texture, texCoord);
}
[完全なコードへのリンクはhereです。 example 8
のコードを見てください。
#version 440 core
を使用して実装しようとしています。私がこれを実行するとき、私は黒いキューブだけを取得します。テクスチャは表示されません。
テクスチャを正しく表示するには、上記のコードにどのような変更を加える必要がありますか?
テクスチャ2Dをテクスチャに変更します(ただしそれは小さな問題です)。実際に、シェーダがバージョンと互換性がない場合は、コンパイラエラーが発生します。 – BDL
@BDL私もそれを試しました。しかし結果は同じです。 – Majis
「fColor = vec4(1.0);」を試してください。この方法で白いキューブを取得した場合、おそらくテクスチャの作成/アップロード/バインドの方法に問題があります。 – bernie